[{"data":1,"prerenderedAt":2568},["ShallowReactive",2],{"blog-post:en:\u002Fen\u002Fblog\u002Fmarkdown-lists-bullets-numbering-nesting-checkboxes":3},{"id":4,"title":5,"author":6,"body":7,"category":2542,"date":2543,"description":2544,"extension":2545,"image":2546,"imageAlt":2547,"meta":2548,"navigation":2549,"path":2550,"seo":2551,"stem":2552,"tags":2553,"translationKey":2554,"updatedAt":2543,"__hash__":2555,"html":2556,"bodyMarkdown":2557,"translations":2558,"previous":2564,"next":2553},"blog\u002Fen\u002Fblog\u002F10.markdown-lists-bullets-numbering-nesting-checkboxes.md","Markdown Lists: Bullets, Numbering, Nesting, and Checkboxes","Antoine Frankart",{"type":8,"value":9,"toc":2499},"minimark",[10,14,17,77,80,93,98,101,163,166,245,248,254,267,272,284,289,314,317,321,324,344,346,357,360,375,382,387,390,410,412,423,434,437,466,469,473,476,514,517,521,524,544,546,557,564,567,582,589,593,607,627,646,649,660,666,678,682,689,709,712,715,734,747,751,754,763,766,775,778,782,785,819,821,845,848,851,880,890,894,897,937,939,966,969,972,976,979,1028,1030,1062,1065,1100,1102,1126,1129,1133,1141,1161,1163,1184,1191,1211,1214,1223,1226,1246,1249,1252,1272,1274,1293,1296,1300,1303,1333,1335,1371,1382,1386,1389,1392,1401,1405,1411,1436,1439,1471,1481,1489,1493,1496,1521,1523,1551,1558,1562,1565,1602,1604,1619,1622,1626,1633,1661,1663,1677,1681,1684,1722,1724,1749,1752,1756,1759,1796,1803,1807,1810,1830,1855,1858,1869,1872,1880,1883,1886,1889,1893,1896,1900,1903,1922,1932,1940,1944,1947,1955,1959,1962,1971,1979,1987,1991,1995,1998,2013,2016,2020,2023,2038,2041,2045,2048,2051,2060,2064,2067,2076,2082,2085,2089,2098,2102,2105,2114,2117,2137,2145,2149,2152,2155,2159,2453,2456,2464,2467,2483,2488,2495],[11,12,13],"p",{},"A Markdown list often begins with a simple hyphen. Then you add a subitem, a checkbox, a second paragraph, or a code block, and what seemed obvious suddenly depends on a few invisible spaces.",[11,15,16],{},"The basic syntax for writing lists and checkboxes in Markdown is simple:",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-markdown shiki shiki-themes github-light github-dark","- A bulleted item\n- Another item\n\n1. First step\n2. Second step\n\n- [ ] Task to do\n- [x] Completed task\n","markdown","",[25,26,27,35,41,48,54,60,65,71],"code",{"__ignoreMap":23},[28,29,32],"span",{"class":30,"line":31},"line",1,[28,33,34],{},"- A bulleted item\n",[28,36,38],{"class":30,"line":37},2,[28,39,40],{},"- Another item\n",[28,42,44],{"class":30,"line":43},3,[28,45,47],{"emptyLinePlaceholder":46},true,"\n",[28,49,51],{"class":30,"line":50},4,[28,52,53],{},"1. First step\n",[28,55,57],{"class":30,"line":56},5,[28,58,59],{},"2. Second step\n",[28,61,63],{"class":30,"line":62},6,[28,64,47],{"emptyLinePlaceholder":46},[28,66,68],{"class":30,"line":67},7,[28,69,70],{},"- [ ] Task to do\n",[28,72,74],{"class":30,"line":73},8,[28,75,76],{},"- [x] Completed task\n",[11,78,79],{},"In this guide, I will start with these three forms, then explain automatic numbering, nested lists, content that spans multiple lines, checkboxes, and the differences between GitHub, Obsidian, and Fude.",[11,81,82,83,86,87,92],{},"If ",[25,84,85],{},".md"," files are still new to you, start with my guide ",[88,89,91],"a",{"href":90},"\u002Fen\u002Fblog\u002Fwhat-is-markdown-file-how-to-open\u002F","What Is a Markdown File (.md) and How Do You Open It?",".",[94,95,97],"h2",{"id":96},"_1-choose-the-right-type-of-markdown-list","1. Choose the right type of Markdown list",[11,99,100],{},"Markdown offers three families of lists:",[102,103,104,120],"table",{},[105,106,107],"thead",{},[108,109,110,114,117],"tr",{},[111,112,113],"th",{},"Goal",[111,115,116],{},"Syntax",[111,118,119],{},"Use it when",[121,122,123,137,150],"tbody",{},[108,124,125,129,134],{},[126,127,128],"td",{},"Bulleted list",[126,130,131],{},[25,132,133],{},"- Item",[126,135,136],{},"The order does not matter",[108,138,139,142,147],{},[126,140,141],{},"Numbered list",[126,143,144],{},[25,145,146],{},"1. Step",[126,148,149],{},"The order or progression matters",[108,151,152,155,160],{},[126,153,154],{},"Task list",[126,156,157],{},[25,158,159],{},"- [ ] Task",[126,161,162],{},"Each item has an open or completed state",[11,164,165],{},"Here is the same content expressed in three different ways:",[18,167,169],{"className":20,"code":168,"language":22,"meta":23,"style":23},"# Information with no particular order\n- Documentation\n- Tests\n- Release\n\n# Steps to follow in order\n1. Write the documentation\n2. Run the tests\n3. Publish the release\n\n# Work to track\n- [x] Write the documentation\n- [ ] Run the tests\n- [ ] Publish the release\n",[25,170,171,176,181,186,191,195,200,205,210,216,221,227,233,239],{"__ignoreMap":23},[28,172,173],{"class":30,"line":31},[28,174,175],{},"# Information with no particular order\n",[28,177,178],{"class":30,"line":37},[28,179,180],{},"- Documentation\n",[28,182,183],{"class":30,"line":43},[28,184,185],{},"- Tests\n",[28,187,188],{"class":30,"line":50},[28,189,190],{},"- Release\n",[28,192,193],{"class":30,"line":56},[28,194,47],{"emptyLinePlaceholder":46},[28,196,197],{"class":30,"line":62},[28,198,199],{},"# Steps to follow in order\n",[28,201,202],{"class":30,"line":67},[28,203,204],{},"1. Write the documentation\n",[28,206,207],{"class":30,"line":73},[28,208,209],{},"2. Run the tests\n",[28,211,213],{"class":30,"line":212},9,[28,214,215],{},"3. Publish the release\n",[28,217,219],{"class":30,"line":218},10,[28,220,47],{"emptyLinePlaceholder":46},[28,222,224],{"class":30,"line":223},11,[28,225,226],{},"# Work to track\n",[28,228,230],{"class":30,"line":229},12,[28,231,232],{},"- [x] Write the documentation\n",[28,234,236],{"class":30,"line":235},13,[28,237,238],{},"- [ ] Run the tests\n",[28,240,242],{"class":30,"line":241},14,[28,243,244],{},"- [ ] Publish the release\n",[11,246,247],{},"Rendered:",[11,249,250],{},[251,252,253],"strong",{},"Information with no particular order",[255,256,257,261,264],"ul",{},[258,259,260],"li",{},"Documentation",[258,262,263],{},"Tests",[258,265,266],{},"Release",[11,268,269],{},[251,270,271],{},"Steps to follow in order",[273,274,275,278,281],"ol",{},[258,276,277],{},"Write the documentation",[258,279,280],{},"Run the tests",[258,282,283],{},"Publish the release",[11,285,286],{},[251,287,288],{},"Work to track",[255,290,293,302,308],{"className":291},[292],"contains-task-list",[258,294,297,301],{"className":295},[296],"task-list-item",[298,299],"input",{"checked":46,"disabled":46,"type":300},"checkbox"," Write the documentation",[258,303,305,307],{"className":304},[296],[298,306],{"disabled":46,"type":300}," Run the tests",[258,309,311,313],{"className":310},[296],[298,312],{"disabled":46,"type":300}," Publish the release",[11,315,316],{},"The choice should not be purely visual. A numbered list tells the reader that a sequence exists. A checkbox turns a descriptive item into a task. If neither piece of information is useful, a bulleted list remains the simplest option.",[94,318,320],{"id":319},"_2-create-a-bulleted-list","2. Create a bulleted list",[11,322,323],{},"To create an unordered list, place a hyphen followed by a space in front of each item:",[18,325,327],{"className":20,"code":326,"language":22,"meta":23,"style":23},"- Apples\n- Pears\n- Apricots\n",[25,328,329,334,339],{"__ignoreMap":23},[28,330,331],{"class":30,"line":31},[28,332,333],{},"- Apples\n",[28,335,336],{"class":30,"line":37},[28,337,338],{},"- Pears\n",[28,340,341],{"class":30,"line":43},[28,342,343],{},"- Apricots\n",[11,345,247],{},[255,347,348,351,354],{},[258,349,350],{},"Apples",[258,352,353],{},"Pears",[258,355,356],{},"Apricots",[11,358,359],{},"The space after the hyphen is required:",[18,361,363],{"className":20,"code":362,"language":22,"meta":23,"style":23},"- Valid item\n-Invalid item\n",[25,364,365,370],{"__ignoreMap":23},[28,366,367],{"class":30,"line":31},[28,368,369],{},"- Valid item\n",[28,371,372],{"class":30,"line":37},[28,373,374],{},"-Invalid item\n",[11,376,377,378,381],{},"The second line usually remains plain text because ",[25,379,380],{},"-Invalid item"," has no space between the marker and the content.",[383,384,386],"h3",{"id":385},"hyphen-asterisk-or-plus-sign","Hyphen, asterisk, or plus sign?",[11,388,389],{},"Markdown syntax accepts three markers for bulleted lists:",[18,391,393],{"className":20,"code":392,"language":22,"meta":23,"style":23},"- With a hyphen\n* With an asterisk\n+ With a plus sign\n",[25,394,395,400,405],{"__ignoreMap":23},[28,396,397],{"class":30,"line":31},[28,398,399],{},"- With a hyphen\n",[28,401,402],{"class":30,"line":37},[28,403,404],{},"* With an asterisk\n",[28,406,407],{"class":30,"line":43},[28,408,409],{},"+ With a plus sign\n",[11,411,247],{},[255,413,414,417,420],{},[258,415,416],{},"With a hyphen",[258,418,419],{},"With an asterisk",[258,421,422],{},"With a plus sign",[11,424,425,426,429,430,92],{},"All three produce a bullet. I still recommend the hyphen ",[25,427,428],{},"-",": it is easy to read in the source and avoids confusion with the asterisk used for ",[88,431,433],{"href":432},"\u002Fen\u002Fblog\u002Fbold-italic-strikethrough-underline-markdown\u002F","bold and italic text",[11,435,436],{},"Keep the same marker throughout a list as well. Changing the character can create two separate lists depending on the renderer:",[18,438,440],{"className":20,"code":439,"language":22,"meta":23,"style":23},"- First group\n- Same group\n\n* Potential new group\n* Same new group\n",[25,441,442,447,452,456,461],{"__ignoreMap":23},[28,443,444],{"class":30,"line":31},[28,445,446],{},"- First group\n",[28,448,449],{"class":30,"line":37},[28,450,451],{},"- Same group\n",[28,453,454],{"class":30,"line":43},[28,455,47],{"emptyLinePlaceholder":46},[28,457,458],{"class":30,"line":50},[28,459,460],{},"* Potential new group\n",[28,462,463],{"class":30,"line":56},[28,464,465],{},"* Same new group\n",[11,467,468],{},"The blank line makes the separation intentional here. Without it, the result may look identical on screen even though the HTML structure contains several lists.",[383,470,472],{"id":471},"add-a-sentence-before-the-list","Add a sentence before the list",[11,474,475],{},"I leave a blank line before and after a list:",[18,477,479],{"className":20,"code":478,"language":22,"meta":23,"style":23},"The document contains three sections:\n\n- introduction\n- analysis\n- conclusion\n\nThe next section explains the analysis in detail.\n",[25,480,481,486,490,495,500,505,509],{"__ignoreMap":23},[28,482,483],{"class":30,"line":31},[28,484,485],{},"The document contains three sections:\n",[28,487,488],{"class":30,"line":37},[28,489,47],{"emptyLinePlaceholder":46},[28,491,492],{"class":30,"line":43},[28,493,494],{},"- introduction\n",[28,496,497],{"class":30,"line":50},[28,498,499],{},"- analysis\n",[28,501,502],{"class":30,"line":56},[28,503,504],{},"- conclusion\n",[28,506,507],{"class":30,"line":62},[28,508,47],{"emptyLinePlaceholder":46},[28,510,511],{"class":30,"line":67},[28,512,513],{},"The next section explains the analysis in detail.\n",[11,515,516],{},"Markdown readers can often recognize a list without that blank line. Adding it still makes the source clearer and avoids differences with older or stricter renderers.",[94,518,520],{"id":519},"_3-create-a-numbered-list","3. Create a numbered list",[11,522,523],{},"An ordered list uses a number, a period, and a space:",[18,525,527],{"className":20,"code":526,"language":22,"meta":23,"style":23},"1. Install the app\n2. Add a project\n3. Open a Markdown file\n",[25,528,529,534,539],{"__ignoreMap":23},[28,530,531],{"class":30,"line":31},[28,532,533],{},"1. Install the app\n",[28,535,536],{"class":30,"line":37},[28,537,538],{},"2. Add a project\n",[28,540,541],{"class":30,"line":43},[28,542,543],{},"3. Open a Markdown file\n",[11,545,247],{},[273,547,548,551,554],{},[258,549,550],{},"Install the app",[258,552,553],{},"Add a project",[258,555,556],{},"Open a Markdown file",[11,558,559,560,563],{},"The number is part of the marker. ",[25,561,562],{},"1.Installation"," does not work correctly because the space after the period is missing.",[11,565,566],{},"Some Markdown readers also accept a closing parenthesis:",[18,568,570],{"className":20,"code":569,"language":22,"meta":23,"style":23},"1) First step\n2) Second step\n",[25,571,572,577],{"__ignoreMap":23},[28,573,574],{"class":30,"line":31},[28,575,576],{},"1) First step\n",[28,578,579],{"class":30,"line":37},[28,580,581],{},"2) Second step\n",[11,583,584,585,588],{},"This form is valid in compatible renderers, but ",[25,586,587],{},"1."," remains the most familiar and portable syntax. It is the one I use throughout the blog guides.",[383,590,592],{"id":591},"do-you-need-to-write-the-actual-numbers","Do you need to write the actual numbers?",[11,594,595,596,599,600,599,603,606],{},"The Markdown renderer determines the starting number from the first item, then calculates the rest. These two sources can therefore both produce ",[25,597,598],{},"1",", ",[25,601,602],{},"2",[25,604,605],{},"3"," in the rendered output:",[18,608,610],{"className":20,"code":609,"language":22,"meta":23,"style":23},"1. Prepare\n2. Check\n3. Publish\n",[25,611,612,617,622],{"__ignoreMap":23},[28,613,614],{"class":30,"line":31},[28,615,616],{},"1. Prepare\n",[28,618,619],{"class":30,"line":37},[28,620,621],{},"2. Check\n",[28,623,624],{"class":30,"line":43},[28,625,626],{},"3. Publish\n",[18,628,630],{"className":20,"code":629,"language":22,"meta":23,"style":23},"1. Prepare\n1. Check\n1. Publish\n",[25,631,632,636,641],{"__ignoreMap":23},[28,633,634],{"class":30,"line":31},[28,635,616],{},[28,637,638],{"class":30,"line":37},[28,639,640],{},"1. Check\n",[28,642,643],{"class":30,"line":43},[28,644,645],{},"1. Publish\n",[11,647,648],{},"Rendered in both cases:",[273,650,651,654,657],{},[258,652,653],{},"Prepare",[258,655,656],{},"Check",[258,658,659],{},"Publish",[11,661,662,663,665],{},"Repeating ",[25,664,587],{}," has one advantage: you can move or insert a step without renumbering every line that follows.",[11,667,668,669,599,671,599,674,677],{},"I still prefer to write the actual numbers in a document that may also be read as plain text. The rendered result is correct either way, but ",[25,670,587],{},[25,672,673],{},"2.",[25,675,676],{},"3."," is easier to understand when the file appears in a terminal, a Git diff, or an editor without a preview.",[383,679,681],{"id":680},"start-at-a-different-number","Start at a different number",[11,683,684,685,688],{},"To resume a procedure at step 4, start the new list with ",[25,686,687],{},"4.",":",[18,690,692],{"className":20,"code":691,"language":22,"meta":23,"style":23},"4. Restart the app\n5. Check the result\n6. Archive the log\n",[25,693,694,699,704],{"__ignoreMap":23},[28,695,696],{"class":30,"line":31},[28,697,698],{},"4. Restart the app\n",[28,700,701],{"class":30,"line":37},[28,702,703],{},"5. Check the result\n",[28,705,706],{"class":30,"line":43},[28,707,708],{},"6. Archive the log\n",[11,710,711],{},"In most Markdown readers, the first marker sets the starting number. The numbers that follow do not necessarily control every number displayed: the reader usually continues the sequence itself.",[11,713,714],{},"This detail explains a sometimes surprising result:",[18,716,718],{"className":20,"code":717,"language":22,"meta":23,"style":23},"4. Restart the app\n9. Check the result\n2. Archive the log\n",[25,719,720,724,729],{"__ignoreMap":23},[28,721,722],{"class":30,"line":31},[28,723,698],{},[28,725,726],{"class":30,"line":37},[28,727,728],{},"9. Check the result\n",[28,730,731],{"class":30,"line":43},[28,732,733],{},"2. Archive the log\n",[11,735,736,737,599,740,599,743,746],{},"The rendered output may display ",[25,738,739],{},"4",[25,741,742],{},"5",[25,744,745],{},"6",". To avoid misleading anyone who reads the source, keep the numbering consistent even when the parser can correct it.",[383,748,750],{"id":749},"avoid-creating-a-numbered-list-by-accident","Avoid creating a numbered list by accident",[11,752,753],{},"A sentence that begins with a year followed by a period can be interpreted as a list:",[18,755,757],{"className":20,"code":756,"language":22,"meta":23,"style":23},"1986. An important year for the project.\n",[25,758,759],{"__ignoreMap":23},[28,760,761],{"class":30,"line":31},[28,762,756],{},[11,764,765],{},"Escape the period with a backslash if you want to keep it as a regular sentence:",[18,767,769],{"className":20,"code":768,"language":22,"meta":23,"style":23},"1986\\. An important year for the project.\n",[25,770,771],{"__ignoreMap":23},[28,772,773],{"class":30,"line":31},[28,774,768],{},[11,776,777],{},"Rendered: 1986. An important year for the project.",[94,779,781],{"id":780},"_4-create-a-nested-list","4. Create a nested list",[11,783,784],{},"A nested list places one list inside a parent item. Indent the subitems with four spaces:",[18,786,788],{"className":20,"code":787,"language":22,"meta":23,"style":23},"- Documentation\n    - Installation guide\n    - Contribution guide\n- Application\n    - Reader\n    - Project library\n",[25,789,790,794,799,804,809,814],{"__ignoreMap":23},[28,791,792],{"class":30,"line":31},[28,793,180],{},[28,795,796],{"class":30,"line":37},[28,797,798],{},"    - Installation guide\n",[28,800,801],{"class":30,"line":43},[28,802,803],{},"    - Contribution guide\n",[28,805,806],{"class":30,"line":50},[28,807,808],{},"- Application\n",[28,810,811],{"class":30,"line":56},[28,812,813],{},"    - Reader\n",[28,815,816],{"class":30,"line":62},[28,817,818],{},"    - Project library\n",[11,820,247],{},[255,822,823,834],{},[258,824,825,826],{},"Documentation\n",[255,827,828,831],{},[258,829,830],{},"Installation guide",[258,832,833],{},"Contribution guide",[258,835,836,837],{},"Application\n",[255,838,839,842],{},[258,840,841],{},"Reader",[258,843,844],{},"Project library",[11,846,847],{},"Four spaces provide a simple and portable rule. Some renderers accept two or three spaces in simple cases, but the result becomes more fragile when markers are longer or an item contains several blocks.",[11,849,850],{},"The precise rule is to align the nested content with the beginning of the parent item's text. Compare these two items:",[18,852,854],{"className":20,"code":853,"language":22,"meta":23,"style":23},"1. First item\n   - Subitem\n\n100. One-hundredth item\n     - Subitem\n",[25,855,856,861,866,870,875],{"__ignoreMap":23},[28,857,858],{"class":30,"line":31},[28,859,860],{},"1. First item\n",[28,862,863],{"class":30,"line":37},[28,864,865],{},"   - Subitem\n",[28,867,868],{"class":30,"line":43},[28,869,47],{"emptyLinePlaceholder":46},[28,871,872],{"class":30,"line":50},[28,873,874],{},"100. One-hundredth item\n",[28,876,877],{"class":30,"line":56},[28,878,879],{},"     - Subitem\n",[11,881,882,883,886,887,889],{},"The ",[25,884,885],{},"100."," marker takes up more space than ",[25,888,587],{},". Its subitem therefore needs additional indentation to remain attached to the correct parent.",[383,891,893],{"id":892},"add-several-levels","Add several levels",[11,895,896],{},"You can repeat the indentation:",[18,898,900],{"className":20,"code":899,"language":22,"meta":23,"style":23},"- Project\n    - Application\n        - Interface\n        - Storage\n    - Website\n        - Blog\n        - Documentation\n",[25,901,902,907,912,917,922,927,932],{"__ignoreMap":23},[28,903,904],{"class":30,"line":31},[28,905,906],{},"- Project\n",[28,908,909],{"class":30,"line":37},[28,910,911],{},"    - Application\n",[28,913,914],{"class":30,"line":43},[28,915,916],{},"        - Interface\n",[28,918,919],{"class":30,"line":50},[28,920,921],{},"        - Storage\n",[28,923,924],{"class":30,"line":56},[28,925,926],{},"    - Website\n",[28,928,929],{"class":30,"line":62},[28,930,931],{},"        - Blog\n",[28,933,934],{"class":30,"line":67},[28,935,936],{},"        - Documentation\n",[11,938,247],{},[255,940,941],{},[258,942,943,944],{},"Project\n",[255,945,946,956],{},[258,947,836,948],{},[255,949,950,953],{},[258,951,952],{},"Interface",[258,954,955],{},"Storage",[258,957,958,959],{},"Website\n",[255,960,961,964],{},[258,962,963],{},"Blog",[258,965,260],{},[11,967,968],{},"Technically, lists can contain many levels. In practice, three levels are almost always enough. Beyond that, the structure becomes difficult to scan on a small screen and tedious to maintain in the source.",[11,970,971],{},"If you need five or six levels, headings and subheadings probably describe the hierarchy more clearly.",[94,973,975],{"id":974},"_5-mix-bullets-and-numbers","5. Mix bullets and numbers",[11,977,978],{},"A numbered list can contain bullets:",[18,980,982],{"className":20,"code":981,"language":22,"meta":23,"style":23},"1. Prepare the document\n    - check the title\n    - add a description\n    - review the links\n2. Check the rendered output\n    - open the file\n    - check the images\n    - test the examples\n3. Publish\n",[25,983,984,989,994,999,1004,1009,1014,1019,1024],{"__ignoreMap":23},[28,985,986],{"class":30,"line":31},[28,987,988],{},"1. Prepare the document\n",[28,990,991],{"class":30,"line":37},[28,992,993],{},"    - check the title\n",[28,995,996],{"class":30,"line":43},[28,997,998],{},"    - add a description\n",[28,1000,1001],{"class":30,"line":50},[28,1002,1003],{},"    - review the links\n",[28,1005,1006],{"class":30,"line":56},[28,1007,1008],{},"2. Check the rendered output\n",[28,1010,1011],{"class":30,"line":62},[28,1012,1013],{},"    - open the file\n",[28,1015,1016],{"class":30,"line":67},[28,1017,1018],{},"    - check the images\n",[28,1020,1021],{"class":30,"line":73},[28,1022,1023],{},"    - test the examples\n",[28,1025,1026],{"class":30,"line":212},[28,1027,626],{},[11,1029,247],{},[273,1031,1032,1046,1060],{},[258,1033,1034,1035],{},"Prepare the document\n",[255,1036,1037,1040,1043],{},[258,1038,1039],{},"check the title",[258,1041,1042],{},"add a description",[258,1044,1045],{},"review the links",[258,1047,1048,1049],{},"Check the rendered output\n",[255,1050,1051,1054,1057],{},[258,1052,1053],{},"open the file",[258,1055,1056],{},"check the images",[258,1058,1059],{},"test the examples",[258,1061,659],{},[11,1063,1064],{},"The reverse works as well:",[18,1066,1068],{"className":20,"code":1067,"language":22,"meta":23,"style":23},"- Mac version\n    1. Download the app\n    2. Move Fude to Applications\n- Windows version\n    1. Download the installer\n    2. Follow the displayed steps\n",[25,1069,1070,1075,1080,1085,1090,1095],{"__ignoreMap":23},[28,1071,1072],{"class":30,"line":31},[28,1073,1074],{},"- Mac version\n",[28,1076,1077],{"class":30,"line":37},[28,1078,1079],{},"    1. Download the app\n",[28,1081,1082],{"class":30,"line":43},[28,1083,1084],{},"    2. Move Fude to Applications\n",[28,1086,1087],{"class":30,"line":50},[28,1088,1089],{},"- Windows version\n",[28,1091,1092],{"class":30,"line":56},[28,1093,1094],{},"    1. Download the installer\n",[28,1096,1097],{"class":30,"line":62},[28,1098,1099],{},"    2. Follow the displayed steps\n",[11,1101,247],{},[255,1103,1104,1115],{},[258,1105,1106,1107],{},"Mac version\n",[273,1108,1109,1112],{},[258,1110,1111],{},"Download the app",[258,1113,1114],{},"Move Fude to Applications",[258,1116,1117,1118],{},"Windows version\n",[273,1119,1120,1123],{},[258,1121,1122],{},"Download the installer",[258,1124,1125],{},"Follow the displayed steps",[11,1127,1128],{},"The type used at each level should express its role. Bullets group options or details, while numbers describe a sequence to follow.",[94,1130,1132],{"id":1131},"_6-add-checkboxes-in-markdown","6. Add checkboxes in Markdown",[11,1134,1135,1136,1140],{},"A task list, often called a ",[1137,1138,1139],"em",{},"Markdown checklist",", is a list where each item begins with a pair of brackets. The hyphen remains the most common marker:",[18,1142,1144],{"className":20,"code":1143,"language":22,"meta":23,"style":23},"- [ ] Prepare the draft\n- [x] Check the examples\n- [ ] Publish the article\n",[25,1145,1146,1151,1156],{"__ignoreMap":23},[28,1147,1148],{"class":30,"line":31},[28,1149,1150],{},"- [ ] Prepare the draft\n",[28,1152,1153],{"class":30,"line":37},[28,1154,1155],{},"- [x] Check the examples\n",[28,1157,1158],{"class":30,"line":43},[28,1159,1160],{},"- [ ] Publish the article\n",[11,1162,247],{},[255,1164,1166,1172,1178],{"className":1165},[292],[258,1167,1169,1171],{"className":1168},[296],[298,1170],{"disabled":46,"type":300}," Prepare the draft",[258,1173,1175,1177],{"className":1174},[296],[298,1176],{"checked":46,"disabled":46,"type":300}," Check the examples",[258,1179,1181,1183],{"className":1180},[296],[298,1182],{"disabled":46,"type":300}," Publish the article",[11,1185,1186,1187,1190],{},"A space between the brackets represents an open task. A lowercase or uppercase ",[25,1188,1189],{},"x"," represents a completed task:",[18,1192,1194],{"className":20,"code":1193,"language":22,"meta":23,"style":23},"- [ ] To do\n- [x] Completed\n- [X] Also completed\n",[25,1195,1196,1201,1206],{"__ignoreMap":23},[28,1197,1198],{"class":30,"line":31},[28,1199,1200],{},"- [ ] To do\n",[28,1202,1203],{"class":30,"line":37},[28,1204,1205],{},"- [x] Completed\n",[28,1207,1208],{"class":30,"line":43},[28,1209,1210],{},"- [X] Also completed\n",[11,1212,1213],{},"Spaces matter. This form is correct:",[18,1215,1217],{"className":20,"code":1216,"language":22,"meta":23,"style":23},"- [ ] Open task\n",[25,1218,1219],{"__ignoreMap":23},[28,1220,1221],{"class":30,"line":31},[28,1222,1216],{},[11,1224,1225],{},"These forms are not:",[18,1227,1229],{"className":20,"code":1228,"language":22,"meta":23,"style":23},"- [] Brackets with no space inside\n- [ ]Task with no space after the brackets\n[ ] Item with no list marker\n",[25,1230,1231,1236,1241],{"__ignoreMap":23},[28,1232,1233],{"class":30,"line":31},[28,1234,1235],{},"- [] Brackets with no space inside\n",[28,1237,1238],{"class":30,"line":37},[28,1239,1240],{},"- [ ]Task with no space after the brackets\n",[28,1242,1243],{"class":30,"line":43},[28,1244,1245],{},"[ ] Item with no list marker\n",[11,1247,1248],{},"Checkboxes were not part of Markdown's original syntax. GitHub popularized them, and they are now understood by GitHub, Obsidian, Fude, and many modern tools.",[11,1250,1251],{},"This extension also allows checkboxes inside a numbered list:",[18,1253,1255],{"className":20,"code":1254,"language":22,"meta":23,"style":23},"1. [x] Prepare the draft\n2. [ ] Review the examples\n3. [ ] Publish the article\n",[25,1256,1257,1262,1267],{"__ignoreMap":23},[28,1258,1259],{"class":30,"line":31},[28,1260,1261],{},"1. [x] Prepare the draft\n",[28,1263,1264],{"class":30,"line":37},[28,1265,1266],{},"2. [ ] Review the examples\n",[28,1268,1269],{"class":30,"line":43},[28,1270,1271],{},"3. [ ] Publish the article\n",[11,1273,247],{},[273,1275,1277,1282,1288],{"className":1276},[292],[258,1278,1280,1171],{"className":1279},[296],[298,1281],{"checked":46,"disabled":46,"type":300},[258,1283,1285,1287],{"className":1284},[296],[298,1286],{"disabled":46,"type":300}," Review the examples",[258,1289,1291,1183],{"className":1290},[296],[298,1292],{"disabled":46,"type":300},[11,1294,1295],{},"This form is valid, but it combines two pieces of information: the order of the steps and their state. Use it for a procedure that must be completed in order. For a simple to-do list, hyphens are more natural.",[383,1297,1299],{"id":1298},"nest-tasks","Nest tasks",[11,1301,1302],{},"Task lists follow the same indentation rules as other lists:",[18,1304,1306],{"className":20,"code":1305,"language":22,"meta":23,"style":23},"- [ ] Publish the new release\n    - [x] Write the release notes\n    - [ ] Generate the installation files\n    - [ ] Send the announcement\n- [ ] Prepare the next release\n",[25,1307,1308,1313,1318,1323,1328],{"__ignoreMap":23},[28,1309,1310],{"class":30,"line":31},[28,1311,1312],{},"- [ ] Publish the new release\n",[28,1314,1315],{"class":30,"line":37},[28,1316,1317],{},"    - [x] Write the release notes\n",[28,1319,1320],{"class":30,"line":43},[28,1321,1322],{},"    - [ ] Generate the installation files\n",[28,1324,1325],{"class":30,"line":50},[28,1326,1327],{},"    - [ ] Send the announcement\n",[28,1329,1330],{"class":30,"line":56},[28,1331,1332],{},"- [ ] Prepare the next release\n",[11,1334,247],{},[255,1336,1338,1365],{"className":1337},[292],[258,1339,1341,1343,1344],{"className":1340},[296],[298,1342],{"disabled":46,"type":300}," Publish the new release\n",[255,1345,1347,1353,1359],{"className":1346},[292],[258,1348,1350,1352],{"className":1349},[296],[298,1351],{"checked":46,"disabled":46,"type":300}," Write the release notes",[258,1354,1356,1358],{"className":1355},[296],[298,1357],{"disabled":46,"type":300}," Generate the installation files",[258,1360,1362,1364],{"className":1361},[296],[298,1363],{"disabled":46,"type":300}," Send the announcement",[258,1366,1368,1370],{"className":1367},[296],[298,1369],{"disabled":46,"type":300}," Prepare the next release",[11,1372,1373,1374,1377,1378,1381],{},"Checking every subitem does not automatically check the parent in Markdown itself. An app may add that behavior, but the file only contains the ",[25,1375,1376],{},"[ ]"," and ",[25,1379,1380],{},"[x]"," states that you wrote.",[383,1383,1385],{"id":1384},"a-displayed-checkbox-is-not-always-interactive","A displayed checkbox is not always interactive",[11,1387,1388],{},"Rendering a checkbox and changing it are two different things.",[11,1390,1391],{},"A static reader can display an empty or checked box without letting you click it. An editor can update the source directly when you click. On GitHub, the behavior also depends on the context: task lists in issues and pull requests include tracking features that a simple file displayed elsewhere does not have.",[11,1393,1394,1395,1397,1398,1400],{},"To keep the document portable, always treat the text as the source of truth: replace ",[25,1396,1376],{}," with ",[25,1399,1380],{}," to complete a task, and do the reverse to reopen it.",[383,1402,1404],{"id":1403},"can-you-put-a-checkbox-inside-a-markdown-table","Can you put a checkbox inside a Markdown table?",[11,1406,1407,1408,1410],{},"A Markdown checkbox must belong to a list item. When placed by itself inside a table cell, the ",[25,1409,1376],{}," sequence therefore does not usually become a task:",[18,1412,1414],{"className":20,"code":1413,"language":22,"meta":23,"style":23},"| Task | Status |\n| --- | --- |\n| Review the article | [ ] |\n| Check the links | [x] |\n",[25,1415,1416,1421,1426,1431],{"__ignoreMap":23},[28,1417,1418],{"class":30,"line":31},[28,1419,1420],{},"| Task | Status |\n",[28,1422,1423],{"class":30,"line":37},[28,1424,1425],{},"| --- | --- |\n",[28,1427,1428],{"class":30,"line":43},[28,1429,1430],{},"| Review the article | [ ] |\n",[28,1432,1433],{"class":30,"line":50},[28,1434,1435],{},"| Check the links | [x] |\n",[11,1437,1438],{},"Rendered in most Markdown readers:",[102,1440,1441,1451],{},[105,1442,1443],{},[108,1444,1445,1448],{},[111,1446,1447],{},"Task",[111,1449,1450],{},"Status",[121,1452,1453,1462],{},[108,1454,1455,1458],{},[126,1456,1457],{},"Review the article",[126,1459,1460],{},[28,1461],{},[108,1463,1464,1467],{},[126,1465,1466],{},"Check the links",[126,1468,1469],{},[28,1470,1189],{},[11,1472,1473,1474,1377,1477,1480],{},"Some tools add their own interpretation, but the result is not portable. For a purely visual indication, you can use the ",[25,1475,1476],{},"☐",[25,1478,1479],{},"☑"," characters. They remain text, are not interactive, and do not represent a Markdown task state.",[11,1482,1483,1484,1488],{},"If you need actual tasks, keep a checklist. If you need to compare several properties on each row, use a table and choose a label such as “To do” or “Completed.” The ",[88,1485,1487],{"href":1486},"\u002Fen\u002Fblog\u002Fmarkdown-table-complete-guide-with-examples\u002F","complete guide to Markdown tables"," explains their syntax and limitations.",[94,1490,1492],{"id":1491},"_7-format-the-content-of-a-list","7. Format the content of a list",[11,1494,1495],{},"A list item can contain most inline Markdown syntax:",[18,1497,1499],{"className":20,"code":1498,"language":22,"meta":23,"style":23},"- **Important**: back up the file\n- *Optional*: change the theme\n- ~~Abandoned~~: export to XML\n- Read the [guide to links](\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F)\n",[25,1500,1501,1506,1511,1516],{"__ignoreMap":23},[28,1502,1503],{"class":30,"line":31},[28,1504,1505],{},"- **Important**: back up the file\n",[28,1507,1508],{"class":30,"line":37},[28,1509,1510],{},"- *Optional*: change the theme\n",[28,1512,1513],{"class":30,"line":43},[28,1514,1515],{},"- ~~Abandoned~~: export to XML\n",[28,1517,1518],{"class":30,"line":50},[28,1519,1520],{},"- Read the [guide to links](\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F)\n",[11,1522,247],{},[255,1524,1525,1531,1537,1544],{},[258,1526,1527,1530],{},[251,1528,1529],{},"Important",": back up the file",[258,1532,1533,1536],{},[1137,1534,1535],{},"Optional",": change the theme",[258,1538,1539,1543],{},[1540,1541,1542],"del",{},"Abandoned",": export to XML",[258,1545,1546,1547],{},"Read the ",[88,1548,1550],{"href":1549},"\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F","guide to links",[11,1552,1553,1554,1557],{},"The guide to ",[88,1555,1556],{"href":432},"bold, italic, strikethrough, and underline in Markdown"," explains the compatibility differences between these styles.",[383,1559,1561],{"id":1560},"add-several-paragraphs-to-one-item","Add several paragraphs to one item",[11,1563,1564],{},"Leave a blank line, then indent the following paragraph to keep it inside the same item:",[18,1566,1568],{"className":20,"code":1567,"language":22,"meta":23,"style":23},"1. Back up the database.\n\n    This copy lets you roll back if the migration fails.\n\n2. Run the migration.\n\n    Keep the log until validation is complete.\n",[25,1569,1570,1575,1579,1584,1588,1593,1597],{"__ignoreMap":23},[28,1571,1572],{"class":30,"line":31},[28,1573,1574],{},"1. Back up the database.\n",[28,1576,1577],{"class":30,"line":37},[28,1578,47],{"emptyLinePlaceholder":46},[28,1580,1581],{"class":30,"line":43},[28,1582,1583],{},"    This copy lets you roll back if the migration fails.\n",[28,1585,1586],{"class":30,"line":50},[28,1587,47],{"emptyLinePlaceholder":46},[28,1589,1590],{"class":30,"line":56},[28,1591,1592],{},"2. Run the migration.\n",[28,1594,1595],{"class":30,"line":62},[28,1596,47],{"emptyLinePlaceholder":46},[28,1598,1599],{"class":30,"line":67},[28,1600,1601],{},"    Keep the log until validation is complete.\n",[11,1603,247],{},[273,1605,1606,1613],{},[258,1607,1608,1609,1612],{},"Back up the database.",[1610,1611],"br",{},"This copy lets you roll back if the migration fails.",[258,1614,1615,1616,1618],{},"Run the migration.",[1610,1617],{},"Keep the log until validation is complete.",[11,1620,1621],{},"Without indentation, the second paragraph may leave the list and interrupt the numbering.",[383,1623,1625],{"id":1624},"add-a-blockquote","Add a blockquote",[11,1627,1628,1629,1632],{},"Indent the ",[25,1630,1631],{},">"," marker as well:",[18,1634,1636],{"className":20,"code":1635,"language":22,"meta":23,"style":23},"- Review the rule before continuing.\n\n    > An untested backup is not yet a reliable backup.\n\n- Check the copy.\n",[25,1637,1638,1643,1647,1652,1656],{"__ignoreMap":23},[28,1639,1640],{"class":30,"line":31},[28,1641,1642],{},"- Review the rule before continuing.\n",[28,1644,1645],{"class":30,"line":37},[28,1646,47],{"emptyLinePlaceholder":46},[28,1648,1649],{"class":30,"line":43},[28,1650,1651],{},"    > An untested backup is not yet a reliable backup.\n",[28,1653,1654],{"class":30,"line":50},[28,1655,47],{"emptyLinePlaceholder":46},[28,1657,1658],{"class":30,"line":56},[28,1659,1660],{},"- Check the copy.\n",[11,1662,247],{},[255,1664,1665,1674],{},[258,1666,1667,1668],{},"Review the rule before continuing.",[1669,1670,1671],"blockquote",{},[11,1672,1673],{},"An untested backup is not yet a reliable backup.",[258,1675,1676],{},"Check the copy.",[383,1678,1680],{"id":1679},"add-a-code-block","Add a code block",[11,1682,1683],{},"The block fenced by three backticks must remain attached to the item:",[18,1685,1687],{"className":20,"code":1686,"language":22,"meta":23,"style":23},"1. Run the command:\n\n    ```bash\n    pnpm test\n    ```\n\n2. Fix any errors.\n",[25,1688,1689,1694,1698,1703,1708,1713,1717],{"__ignoreMap":23},[28,1690,1691],{"class":30,"line":31},[28,1692,1693],{},"1. Run the command:\n",[28,1695,1696],{"class":30,"line":37},[28,1697,47],{"emptyLinePlaceholder":46},[28,1699,1700],{"class":30,"line":43},[28,1701,1702],{},"    ```bash\n",[28,1704,1705],{"class":30,"line":50},[28,1706,1707],{},"    pnpm test\n",[28,1709,1710],{"class":30,"line":56},[28,1711,1712],{},"    ```\n",[28,1714,1715],{"class":30,"line":62},[28,1716,47],{"emptyLinePlaceholder":46},[28,1718,1719],{"class":30,"line":67},[28,1720,1721],{},"2. Fix any errors.\n",[11,1723,247],{},[273,1725,1726,1746],{},[258,1727,1728,1729],{},"Run the command:",[18,1730,1734],{"className":1731,"code":1732,"language":1733,"meta":23,"style":23},"language-bash shiki shiki-themes github-light github-dark","pnpm test\n","bash",[25,1735,1736],{"__ignoreMap":23},[28,1737,1738,1742],{"class":30,"line":31},[28,1739,1741],{"class":1740},"sScJk","pnpm",[28,1743,1745],{"class":1744},"sZZnC"," test\n",[258,1747,1748],{},"Fix any errors.",[11,1750,1751],{},"Fenced blocks are generally easier to read than blocks created using only spaces, especially inside an already nested list.",[383,1753,1755],{"id":1754},"add-an-image","Add an image",[11,1757,1758],{},"An image can become part of a list item:",[18,1760,1762],{"className":20,"code":1761,"language":22,"meta":23,"style":23},"- Light theme preview\n\n    ![Interface in the light theme](.\u002Fimages\u002Flight-theme.png)\n\n- Dark theme preview\n\n    ![Interface in the dark theme](.\u002Fimages\u002Fdark-theme.png)\n",[25,1763,1764,1769,1773,1778,1782,1787,1791],{"__ignoreMap":23},[28,1765,1766],{"class":30,"line":31},[28,1767,1768],{},"- Light theme preview\n",[28,1770,1771],{"class":30,"line":37},[28,1772,47],{"emptyLinePlaceholder":46},[28,1774,1775],{"class":30,"line":43},[28,1776,1777],{},"    ![Interface in the light theme](.\u002Fimages\u002Flight-theme.png)\n",[28,1779,1780],{"class":30,"line":50},[28,1781,47],{"emptyLinePlaceholder":46},[28,1783,1784],{"class":30,"line":56},[28,1785,1786],{},"- Dark theme preview\n",[28,1788,1789],{"class":30,"line":62},[28,1790,47],{"emptyLinePlaceholder":46},[28,1792,1793],{"class":30,"line":67},[28,1794,1795],{},"    ![Interface in the dark theme](.\u002Fimages\u002Fdark-theme.png)\n",[11,1797,1798,1799,92],{},"Paths, alternative text, and the differences between local files and web images are explained in the guide ",[88,1800,1802],{"href":1801},"\u002Fen\u002Fblog\u002Fhow-to-add-images-in-markdown\u002F","How to Add Images in Markdown",[94,1804,1806],{"id":1805},"_8-understand-tight-and-loose-lists","8. Understand tight and loose lists",[11,1808,1809],{},"These two lists do not have exactly the same structure:",[18,1811,1813],{"className":20,"code":1812,"language":22,"meta":23,"style":23},"- First item\n- Second item\n- Third item\n",[25,1814,1815,1820,1825],{"__ignoreMap":23},[28,1816,1817],{"class":30,"line":31},[28,1818,1819],{},"- First item\n",[28,1821,1822],{"class":30,"line":37},[28,1823,1824],{},"- Second item\n",[28,1826,1827],{"class":30,"line":43},[28,1828,1829],{},"- Third item\n",[18,1831,1833],{"className":20,"code":1832,"language":22,"meta":23,"style":23},"- First item\n\n- Second item\n\n- Third item\n",[25,1834,1835,1839,1843,1847,1851],{"__ignoreMap":23},[28,1836,1837],{"class":30,"line":31},[28,1838,1819],{},[28,1840,1841],{"class":30,"line":37},[28,1842,47],{"emptyLinePlaceholder":46},[28,1844,1845],{"class":30,"line":43},[28,1846,1824],{},[28,1848,1849],{"class":30,"line":50},[28,1850,47],{"emptyLinePlaceholder":46},[28,1852,1853],{"class":30,"line":56},[28,1854,1829],{},[11,1856,1857],{},"Tight rendering:",[255,1859,1860,1863,1866],{},[258,1861,1862],{},"First item",[258,1864,1865],{},"Second item",[258,1867,1868],{},"Third item",[11,1870,1871],{},"Loose rendering:",[255,1873,1874,1876,1878],{},[258,1875,1862],{},[258,1877,1865],{},[258,1879,1868],{},[11,1881,1882],{},"The first is a tight list. The second is a loose list. In a loose list, each item usually contains an actual paragraph, which adds vertical spacing depending on the reader's stylesheet.",[11,1884,1885],{},"I use tight lists for short items. I reserve loose lists for items made up of several sentences or several blocks.",[11,1887,1888],{},"Adding blank lines at random to “fix” the output often has the opposite effect. Decide whether the list should be tight or loose, then apply the same structure to every item.",[94,1890,1892],{"id":1891},"_9-compare-github-obsidian-and-fude","9. Compare GitHub, Obsidian, and Fude",[11,1894,1895],{},"Bulleted lists, numbered lists, and nesting are part of the foundation supported by all three tools. The main differences concern editing and checkboxes.",[383,1897,1899],{"id":1898},"on-github","On GitHub",[11,1901,1902],{},"GitHub uses its own variant of Markdown. It supports:",[255,1904,1905,1908,1911,1919],{},[258,1906,1907],{},"bulleted and numbered lists;",[258,1909,1910],{},"nested lists with several levels;",[258,1912,1913,1914,1377,1916,1918],{},"task lists using ",[25,1915,1376],{},[25,1917,1380],{},";",[258,1920,1921],{},"formatting, links, and issue references inside items.",[11,1923,1924,1925,1377,1928,1931],{},"In GitHub editing areas, ",[25,1926,1927],{},"Tab",[25,1929,1930],{},"Shift + Tab"," indent or outdent the selected lines. Task lists placed in issues and pull requests can also participate in tracking work.",[11,1933,1934,1935,1937,1938,92],{},"GitHub recommends visually aligning a nested list marker with the beginning of the parent item's text. This method becomes particularly useful when the ordered list begins with ",[25,1936,885],{}," instead of ",[25,1939,587],{},[383,1941,1943],{"id":1942},"in-obsidian","In Obsidian",[11,1945,1946],{},"Obsidian displays lists and lets you check tasks from its editing modes. Clicking the box then updates the local Markdown file by replacing its state.",[11,1948,1949,1950,1377,1952,1954],{},"Themes and plugins can add other task symbols or states. Those conventions remain specific to the Obsidian environment. If the file needs to be read elsewhere, keep ",[25,1951,1376],{},[25,1953,1380],{}," for essential states.",[383,1956,1958],{"id":1957},"in-fude","In Fude",[11,1960,1961],{},"Fude supports the Markdown variant used by GitHub, including its task lists. Bullets, numbers, nesting, bold text, links, and checkboxes are therefore displayed in the reader.",[11,1963,1964,1965,1967,1968,1970],{},"Fude remains a reader: you cannot check a box in the rendered view of your file. The visible state comes from ",[25,1966,1376],{}," or ",[25,1969,1380],{}," in the source, which you can change with your editor or an AI agent.",[11,1972,1973,1974,1978],{},"When a task list becomes too long to scan vertically, Fude can also turn a dedicated block into a Kanban board. The guide ",[88,1975,1977],{"href":1976},"\u002Fen\u002Fblog\u002Fcreate-kanban-board-markdown-fude-ai-agents\u002F","Create a Kanban Board in Markdown with Fude and AI Agents"," explains this reader-specific syntax.",[11,1980,1981,1982,1986],{},"You can paste every example from this article into the ",[88,1983,1985],{"href":1984},"\u002Fen\u002Fmarkdown-viewer\u002F","free Markdown reader on Fude.md"," to check its rendered output immediately.",[94,1988,1990],{"id":1989},"_10-troubleshoot-common-problems","10. Troubleshoot common problems",[383,1992,1994],{"id":1993},"my-hyphens-remain-visible-as-text","“My hyphens remain visible as text”",[11,1996,1997],{},"Check the space after the marker:",[18,1999,2001],{"className":20,"code":2000,"language":22,"meta":23,"style":23},"- correct\n-incorrect\n",[25,2002,2003,2008],{"__ignoreMap":23},[28,2004,2005],{"class":30,"line":31},[28,2006,2007],{},"- correct\n",[28,2009,2010],{"class":30,"line":37},[28,2011,2012],{},"-incorrect\n",[11,2014,2015],{},"Also make sure you are looking at the rendered document. An editor in source mode naturally displays the hyphens. A reader turns them into bullets.",[383,2017,2019],{"id":2018},"my-nested-list-stays-at-the-same-level","“My nested list stays at the same level”",[11,2021,2022],{},"The indentation is insufficient or inconsistent. Use four spaces and avoid mixing tabs and spaces:",[18,2024,2026],{"className":20,"code":2025,"language":22,"meta":23,"style":23},"- Parent\n    - Child\n",[25,2027,2028,2033],{"__ignoreMap":23},[28,2029,2030],{"class":30,"line":31},[28,2031,2032],{},"- Parent\n",[28,2034,2035],{"class":30,"line":37},[28,2036,2037],{},"    - Child\n",[11,2039,2040],{},"Enable the display of invisible characters in your editor if two lines that look aligned do not behave the same way.",[383,2042,2044],{"id":2043},"my-numbering-restarts-at-1","“My numbering restarts at 1”",[11,2046,2047],{},"A paragraph, code block, or incorrectly indented line has probably split the list in two. Check that the intermediate content still belongs to the previous item and is indented.",[11,2049,2050],{},"An intentional break can start at a different number:",[18,2052,2054],{"className":20,"code":2053,"language":22,"meta":23,"style":23},"4. Resume at the fourth step\n",[25,2055,2056],{"__ignoreMap":23},[28,2057,2058],{"class":30,"line":31},[28,2059,2053],{},[383,2061,2063],{"id":2062},"my-checkboxes-do-not-appear","“My checkboxes do not appear”",[11,2065,2066],{},"Check the three places where a space is required:",[18,2068,2070],{"className":20,"code":2069,"language":22,"meta":23,"style":23},"- [ ] Task\n",[25,2071,2072],{"__ignoreMap":23},[28,2073,2074],{"class":30,"line":31},[28,2075,2069],{},[11,2077,2078,2079,92],{},"You need one space after the hyphen, one inside the brackets for an open task, and one after ",[25,2080,2081],{},"]",[11,2083,2084],{},"If the syntax is correct but the brackets remain visible, the reader probably does not support task lists.",[383,2086,2088],{"id":2087},"i-can-see-the-checkbox-but-i-cannot-click-it","“I can see the checkbox, but I cannot click it”",[11,2090,2091,2092,2094,2095,2097],{},"The reader displays the state without providing editing controls. Change ",[25,2093,1376],{}," to ",[25,2096,1380],{}," in the source, or open the file in an editor that can reflect a click back into the Markdown.",[383,2099,2101],{"id":2100},"three-asterisks-create-a-horizontal-rule","“Three asterisks create a horizontal rule”",[11,2103,2104],{},"Three separated asterisks can be interpreted as a horizontal rule:",[18,2106,2108],{"className":20,"code":2107,"language":22,"meta":23,"style":23},"* * *\n",[25,2109,2110],{"__ignoreMap":23},[28,2111,2112],{"class":30,"line":31},[28,2113,2107],{},[11,2115,2116],{},"To create three items, place each marker on its own line with its content:",[18,2118,2120],{"className":20,"code":2119,"language":22,"meta":23,"style":23},"* First item\n* Second item\n* Third item\n",[25,2121,2122,2127,2132],{"__ignoreMap":23},[28,2123,2124],{"class":30,"line":31},[28,2125,2126],{},"* First item\n",[28,2128,2129],{"class":30,"line":37},[28,2130,2131],{},"* Second item\n",[28,2133,2134],{"class":30,"line":43},[28,2135,2136],{},"* Third item\n",[11,2138,2139,2140,2144],{},"The guide ",[88,2141,2143],{"href":2142},"\u002Fen\u002Fblog\u002Fhow-to-add-horizontal-line-markdown\u002F","How to Add a Horizontal Line in Markdown"," explains this ambiguity and the other available syntax.",[383,2146,2148],{"id":2147},"my-content-leaves-the-list","“My content leaves the list”",[11,2150,2151],{},"Paragraphs, blockquotes, images, and code blocks that belong to an item must remain indented. A blank line alone is not enough to express that relationship.",[11,2153,2154],{},"When in doubt, simplify the item temporarily: keep only its first line, check the rendered output, then reintroduce each block one at a time with the same indentation.",[94,2156,2158],{"id":2157},"_11-copy-this-cheat-sheet","11. Copy this cheat sheet",[18,2160,2162],{"className":20,"code":2161,"language":22,"meta":23,"style":23},"# Bulleted list\n- First item\n- Second item\n- Third item\n\n# Numbered list\n1. First step\n2. Second step\n3. Third step\n\n# Automatic numbering\n1. First step\n1. Second step\n1. Third step\n\n# Nested list\n- Parent\n    - Child\n        - Grandchild\n\n# Bullets inside a procedure\n1. Prepare\n    - back up the data\n    - close the app\n2. Run\n3. Check\n\n# Checkboxes — supported by GitHub and many readers\n- [ ] Open task\n- [x] Completed task\n\n# Nested tasks\n- [ ] Publish\n    - [x] Write\n    - [ ] Review\n    - [ ] Go live\n\n# Several paragraphs inside one item\n1. First step.\n\n    Explanation that remains attached to the first step.\n\n2. Second step.\n\n# Code block inside an item\n1. Run the tests:\n\n    ```bash\n    pnpm test\n    ```\n\n2. Check the result.\n\n# Escape a false list number\n1986\\. A year, not a step.\n",[25,2163,2164,2169,2173,2177,2181,2185,2190,2194,2198,2203,2207,2212,2216,2221,2226,2231,2237,2242,2247,2253,2258,2264,2269,2275,2281,2287,2293,2298,2304,2309,2314,2319,2325,2331,2337,2343,2349,2354,2360,2366,2371,2377,2382,2388,2393,2399,2405,2410,2415,2420,2425,2430,2436,2441,2447],{"__ignoreMap":23},[28,2165,2166],{"class":30,"line":31},[28,2167,2168],{},"# Bulleted list\n",[28,2170,2171],{"class":30,"line":37},[28,2172,1819],{},[28,2174,2175],{"class":30,"line":43},[28,2176,1824],{},[28,2178,2179],{"class":30,"line":50},[28,2180,1829],{},[28,2182,2183],{"class":30,"line":56},[28,2184,47],{"emptyLinePlaceholder":46},[28,2186,2187],{"class":30,"line":62},[28,2188,2189],{},"# Numbered list\n",[28,2191,2192],{"class":30,"line":67},[28,2193,53],{},[28,2195,2196],{"class":30,"line":73},[28,2197,59],{},[28,2199,2200],{"class":30,"line":212},[28,2201,2202],{},"3. Third step\n",[28,2204,2205],{"class":30,"line":218},[28,2206,47],{"emptyLinePlaceholder":46},[28,2208,2209],{"class":30,"line":223},[28,2210,2211],{},"# Automatic numbering\n",[28,2213,2214],{"class":30,"line":229},[28,2215,53],{},[28,2217,2218],{"class":30,"line":235},[28,2219,2220],{},"1. Second step\n",[28,2222,2223],{"class":30,"line":241},[28,2224,2225],{},"1. Third step\n",[28,2227,2229],{"class":30,"line":2228},15,[28,2230,47],{"emptyLinePlaceholder":46},[28,2232,2234],{"class":30,"line":2233},16,[28,2235,2236],{},"# Nested list\n",[28,2238,2240],{"class":30,"line":2239},17,[28,2241,2032],{},[28,2243,2245],{"class":30,"line":2244},18,[28,2246,2037],{},[28,2248,2250],{"class":30,"line":2249},19,[28,2251,2252],{},"        - Grandchild\n",[28,2254,2256],{"class":30,"line":2255},20,[28,2257,47],{"emptyLinePlaceholder":46},[28,2259,2261],{"class":30,"line":2260},21,[28,2262,2263],{},"# Bullets inside a procedure\n",[28,2265,2267],{"class":30,"line":2266},22,[28,2268,616],{},[28,2270,2272],{"class":30,"line":2271},23,[28,2273,2274],{},"    - back up the data\n",[28,2276,2278],{"class":30,"line":2277},24,[28,2279,2280],{},"    - close the app\n",[28,2282,2284],{"class":30,"line":2283},25,[28,2285,2286],{},"2. Run\n",[28,2288,2290],{"class":30,"line":2289},26,[28,2291,2292],{},"3. Check\n",[28,2294,2296],{"class":30,"line":2295},27,[28,2297,47],{"emptyLinePlaceholder":46},[28,2299,2301],{"class":30,"line":2300},28,[28,2302,2303],{},"# Checkboxes — supported by GitHub and many readers\n",[28,2305,2307],{"class":30,"line":2306},29,[28,2308,1216],{},[28,2310,2312],{"class":30,"line":2311},30,[28,2313,76],{},[28,2315,2317],{"class":30,"line":2316},31,[28,2318,47],{"emptyLinePlaceholder":46},[28,2320,2322],{"class":30,"line":2321},32,[28,2323,2324],{},"# Nested tasks\n",[28,2326,2328],{"class":30,"line":2327},33,[28,2329,2330],{},"- [ ] Publish\n",[28,2332,2334],{"class":30,"line":2333},34,[28,2335,2336],{},"    - [x] Write\n",[28,2338,2340],{"class":30,"line":2339},35,[28,2341,2342],{},"    - [ ] Review\n",[28,2344,2346],{"class":30,"line":2345},36,[28,2347,2348],{},"    - [ ] Go live\n",[28,2350,2352],{"class":30,"line":2351},37,[28,2353,47],{"emptyLinePlaceholder":46},[28,2355,2357],{"class":30,"line":2356},38,[28,2358,2359],{},"# Several paragraphs inside one item\n",[28,2361,2363],{"class":30,"line":2362},39,[28,2364,2365],{},"1. First step.\n",[28,2367,2369],{"class":30,"line":2368},40,[28,2370,47],{"emptyLinePlaceholder":46},[28,2372,2374],{"class":30,"line":2373},41,[28,2375,2376],{},"    Explanation that remains attached to the first step.\n",[28,2378,2380],{"class":30,"line":2379},42,[28,2381,47],{"emptyLinePlaceholder":46},[28,2383,2385],{"class":30,"line":2384},43,[28,2386,2387],{},"2. Second step.\n",[28,2389,2391],{"class":30,"line":2390},44,[28,2392,47],{"emptyLinePlaceholder":46},[28,2394,2396],{"class":30,"line":2395},45,[28,2397,2398],{},"# Code block inside an item\n",[28,2400,2402],{"class":30,"line":2401},46,[28,2403,2404],{},"1. Run the tests:\n",[28,2406,2408],{"class":30,"line":2407},47,[28,2409,47],{"emptyLinePlaceholder":46},[28,2411,2413],{"class":30,"line":2412},48,[28,2414,1702],{},[28,2416,2418],{"class":30,"line":2417},49,[28,2419,1707],{},[28,2421,2423],{"class":30,"line":2422},50,[28,2424,1712],{},[28,2426,2428],{"class":30,"line":2427},51,[28,2429,47],{"emptyLinePlaceholder":46},[28,2431,2433],{"class":30,"line":2432},52,[28,2434,2435],{},"2. Check the result.\n",[28,2437,2439],{"class":30,"line":2438},53,[28,2440,47],{"emptyLinePlaceholder":46},[28,2442,2444],{"class":30,"line":2443},54,[28,2445,2446],{},"# Escape a false list number\n",[28,2448,2450],{"class":30,"line":2449},55,[28,2451,2452],{},"1986\\. A year, not a step.\n",[2454,2455],"hr",{},[11,2457,2458,2459,1377,2461,2463],{},"Markdown lists remain simple as long as their structure is visible in the source. A hyphen and a space create a bullet. A number followed by a period creates a step. Four spaces attach a subitem to its parent. Finally, ",[25,2460,1376],{},[25,2462,1380],{}," add a task state in readers that support task lists.",[11,2465,2466],{},"The most useful rule is not a character: choose the structure that actually expresses your intention. Use bullets to group, numbers to guide, and checkboxes to track. When the hierarchy becomes too deep, return to headings. When the number of tasks becomes too large, switch to a Kanban view.",[11,2468,2469,2470,599,2473,599,2476,2479,2480,92],{},"To continue learning, read the guides to ",[88,2471,2472],{"href":1549},"Markdown links",[88,2474,2475],{"href":1801},"images",[88,2477,2478],{"href":1486},"tables",", and ",[88,2481,2482],{"href":432},"text formatting",[11,2484,2485,2486,92],{},"To test a list without creating a file, paste its source into the ",[88,2487,1985],{"href":1984},[11,2489,2490,2491],{},"📌 ",[88,2492,2494],{"href":2493},"\u002Fen\u002F#download","Download Fude",[2496,2497,2498],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":23,"searchDepth":37,"depth":37,"links":2500},[2501,2502,2506,2511,2514,2515,2520,2526,2527,2532,2541],{"id":96,"depth":37,"text":97},{"id":319,"depth":37,"text":320,"children":2503},[2504,2505],{"id":385,"depth":43,"text":386},{"id":471,"depth":43,"text":472},{"id":519,"depth":37,"text":520,"children":2507},[2508,2509,2510],{"id":591,"depth":43,"text":592},{"id":680,"depth":43,"text":681},{"id":749,"depth":43,"text":750},{"id":780,"depth":37,"text":781,"children":2512},[2513],{"id":892,"depth":43,"text":893},{"id":974,"depth":37,"text":975},{"id":1131,"depth":37,"text":1132,"children":2516},[2517,2518,2519],{"id":1298,"depth":43,"text":1299},{"id":1384,"depth":43,"text":1385},{"id":1403,"depth":43,"text":1404},{"id":1491,"depth":37,"text":1492,"children":2521},[2522,2523,2524,2525],{"id":1560,"depth":43,"text":1561},{"id":1624,"depth":43,"text":1625},{"id":1679,"depth":43,"text":1680},{"id":1754,"depth":43,"text":1755},{"id":1805,"depth":37,"text":1806},{"id":1891,"depth":37,"text":1892,"children":2528},[2529,2530,2531],{"id":1898,"depth":43,"text":1899},{"id":1942,"depth":43,"text":1943},{"id":1957,"depth":43,"text":1958},{"id":1989,"depth":37,"text":1990,"children":2533},[2534,2535,2536,2537,2538,2539,2540],{"id":1993,"depth":43,"text":1994},{"id":2018,"depth":43,"text":2019},{"id":2043,"depth":43,"text":2044},{"id":2062,"depth":43,"text":2063},{"id":2087,"depth":43,"text":2088},{"id":2100,"depth":43,"text":2101},{"id":2147,"depth":43,"text":2148},{"id":2157,"depth":37,"text":2158},"markdown-guides","2026-08-06","Learn how to create bulleted, numbered, nested, and task lists in Markdown, then avoid common indentation and rendering issues.","md","\u002Fimages\u002Fblog\u002Fblog10","A Markdown list with bullets, numbers, and checkboxes",{},false,"\u002Fen\u002Fblog\u002Fmarkdown-lists-bullets-numbering-nesting-checkboxes",{"title":5,"description":2544},"en\u002Fblog\u002F10.markdown-lists-bullets-numbering-nesting-checkboxes",null,"markdown-lists-bullets-numbering-nesting-checkboxes","bblyiTl3fv4KJGTenrs9v8DcIScfLsFQotha_bqAf3E","\u003Cp data-fude-source-line=\"2\">\u003Cspan data-fude-source-start=\"1\" data-fude-source-end=\"192\">A Markdown list often begins with a simple hyphen. Then you add a subitem, a checkbox, a second paragraph, or a code block, and what seemed obvious suddenly depends on a few invisible spaces.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"4\">\u003Cspan data-fude-source-start=\"194\" data-fude-source-end=\"266\">The basic syntax for writing lists and checkboxes in Markdown is simple:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"280\" data-fude-code-block-end=\"381\" data-fude-source-line=\"6\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"280\" data-fude-code-block-end=\"381\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- A bulleted item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Another item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. First step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Second step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Task to do\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Completed task\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"17\">\u003Cspan data-fude-source-start=\"387\" data-fude-source-end=\"589\">In this guide, I will start with these three forms, then explain automatic numbering, nested lists, content that spans multiple lines, checkboxes, and the differences between GitHub, Obsidian, and Fude.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"19\">\u003Cspan data-fude-source-start=\"591\" data-fude-source-end=\"594\">If \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"594\" data-fude-source-end=\"599\">.md\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"599\" data-fude-source-end=\"648\"> files are still new to you, start with my guide \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fwhat-is-markdown-file-how-to-open\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"649\" data-fude-source-end=\"702\">What Is a Markdown File (.md) and How Do You Open It?\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"748\" data-fude-source-end=\"749\">.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-1-choose-the-right-type-of-markdown-list\" data-fude-source-line=\"21\">\u003Cspan data-fude-source-start=\"754\" data-fude-source-end=\"795\">1. Choose the right type of Markdown list\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"23\">\u003Cspan data-fude-source-start=\"797\" data-fude-source-end=\"837\">Markdown offers three families of lists:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ctable data-fude-source-line=\"25\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003Cspan data-fude-source-start=\"841\" data-fude-source-end=\"845\">Goal\u003C\u002Fspan>\u003C\u002Fth>\n\u003Cth>\u003Cspan data-fude-source-start=\"848\" data-fude-source-end=\"854\">Syntax\u003C\u002Fspan>\u003C\u002Fth>\n\u003Cth>\u003Cspan data-fude-source-start=\"857\" data-fude-source-end=\"868\">Use it when\u003C\u002Fspan>\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cspan data-fude-source-start=\"893\" data-fude-source-end=\"906\">Bulleted list\u003C\u002Fspan>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>\u003Cspan data-fude-source-start=\"909\" data-fude-source-end=\"917\">- Item\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Cspan data-fude-source-start=\"920\" data-fude-source-end=\"945\">The order does not matter\u003C\u002Fspan>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cspan data-fude-source-start=\"950\" data-fude-source-end=\"963\">Numbered list\u003C\u002Fspan>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>\u003Cspan data-fude-source-start=\"966\" data-fude-source-end=\"975\">1. Step\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Cspan data-fude-source-start=\"978\" data-fude-source-end=\"1010\">The order or progression matters\u003C\u002Fspan>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cspan data-fude-source-start=\"1015\" data-fude-source-end=\"1024\">Task list\u003C\u002Fspan>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>\u003Cspan data-fude-source-start=\"1027\" data-fude-source-end=\"1039\">- [ ] Task\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Cspan data-fude-source-start=\"1042\" data-fude-source-end=\"1082\">Each item has an open or completed state\u003C\u002Fspan>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp data-fude-source-line=\"31\">\u003Cspan data-fude-source-start=\"1086\" data-fude-source-end=\"1145\">Here is the same content expressed in three different ways:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"1159\" data-fude-code-block-end=\"1419\" data-fude-source-line=\"33\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"1159\" data-fude-code-block-end=\"1419\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Information with no particular order\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Documentation\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Tests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Release\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Steps to follow in order\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Write the documentation\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Run the tests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">3. Publish the release\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Work to track\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Write the documentation\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Run the tests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Publish the release\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"50\">\u003Cspan data-fude-source-start=\"1425\" data-fude-source-end=\"1434\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"52\">\u003Cstrong>\u003Cspan data-fude-source-start=\"1438\" data-fude-source-end=\"1474\">Information with no particular order\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"54\">\n\u003Cli>\u003Cspan data-fude-source-start=\"1480\" data-fude-source-end=\"1493\">Documentation\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"1496\" data-fude-source-end=\"1501\">Tests\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"1504\" data-fude-source-end=\"1511\">Release\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"58\">\u003Cstrong>\u003Cspan data-fude-source-start=\"1515\" data-fude-source-end=\"1539\">Steps to follow in order\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col data-fude-source-line=\"60\">\n\u003Cli>\u003Cspan data-fude-source-start=\"1546\" data-fude-source-end=\"1569\">Write the documentation\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"1573\" data-fude-source-end=\"1586\">Run the tests\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"1590\" data-fude-source-end=\"1609\">Publish the release\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-fude-source-line=\"64\">\u003Cstrong>\u003Cspan data-fude-source-start=\"1613\" data-fude-source-end=\"1626\">Work to track\u003C\u002Fspan>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul class=\"contains-task-list\" data-fude-source-line=\"66\">\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" checked disabled> \u003Cspan data-fude-source-start=\"1636\" data-fude-source-end=\"1659\">Write the documentation\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"1666\" data-fude-source-end=\"1679\">Run the tests\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"1686\" data-fude-source-end=\"1705\">Publish the release\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"70\">\u003Cspan data-fude-source-start=\"1707\" data-fude-source-end=\"1940\">The choice should not be purely visual. A numbered list tells the reader that a sequence exists. A checkbox turns a descriptive item into a task. If neither piece of information is useful, a bulleted list remains the simplest option.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-2-create-a-bulleted-list\" data-fude-source-line=\"72\">\u003Cspan data-fude-source-start=\"1945\" data-fude-source-end=\"1970\">2. Create a bulleted list\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"74\">\u003Cspan data-fude-source-start=\"1972\" data-fude-source-end=\"2058\">To create an unordered list, place a hyphen followed by a space in front of each item:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"2072\" data-fude-code-block-end=\"2099\" data-fude-source-line=\"76\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"2072\" data-fude-code-block-end=\"2099\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Apples\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Pears\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Apricots\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"82\">\u003Cspan data-fude-source-start=\"2105\" data-fude-source-end=\"2114\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"84\">\n\u003Cli>\u003Cspan data-fude-source-start=\"2118\" data-fude-source-end=\"2124\">Apples\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"2127\" data-fude-source-end=\"2132\">Pears\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"2135\" data-fude-source-end=\"2143\">Apricots\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"88\">\u003Cspan data-fude-source-start=\"2145\" data-fude-source-end=\"2184\">The space after the hyphen is required:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"2198\" data-fude-code-block-end=\"2224\" data-fude-source-line=\"90\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"2198\" data-fude-code-block-end=\"2224\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Valid item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">-Invalid item\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"95\">\u003Cspan data-fude-source-start=\"2230\" data-fude-source-end=\"2281\">The second line usually remains plain text because \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"2281\" data-fude-source-end=\"2296\">-Invalid item\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"2296\" data-fude-source-end=\"2345\"> has no space between the marker and the content.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-hyphen-asterisk-or-plus-sign\" data-fude-source-line=\"97\">\u003Cspan data-fude-source-start=\"2351\" data-fude-source-end=\"2382\">Hyphen, asterisk, or plus sign?\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"99\">\u003Cspan data-fude-source-start=\"2384\" data-fude-source-end=\"2441\">Markdown syntax accepts three markers for bulleted lists:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"2455\" data-fude-code-block-end=\"2508\" data-fude-source-line=\"101\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"2455\" data-fude-code-block-end=\"2508\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- With a hyphen\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">* With an asterisk\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">+ With a plus sign\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"107\">\u003Cspan data-fude-source-start=\"2514\" data-fude-source-end=\"2523\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"109\">\n\u003Cli>\u003Cspan data-fude-source-start=\"2527\" data-fude-source-end=\"2540\">With a hyphen\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"2543\" data-fude-source-end=\"2559\">With an asterisk\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"2562\" data-fude-source-end=\"2578\">With a plus sign\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"113\">\u003Cspan data-fude-source-start=\"2580\" data-fude-source-end=\"2637\">All three produce a bullet. I still recommend the hyphen \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"2637\" data-fude-source-end=\"2640\">-\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"2640\" data-fude-source-end=\"2723\">: it is easy to read in the source and avoids confusion with the asterisk used for \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fbold-italic-strikethrough-underline-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"2724\" data-fude-source-end=\"2744\">bold and italic text\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"2801\" data-fude-source-end=\"2802\">.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"115\">\u003Cspan data-fude-source-start=\"2804\" data-fude-source-end=\"2931\">Keep the same marker throughout a list as well. Changing the character can create two separate lists depending on the renderer:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"2945\" data-fude-code-block-end=\"3011\" data-fude-source-line=\"117\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"2945\" data-fude-code-block-end=\"3011\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- First group\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Same group\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">* Potential new group\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">* Same new group\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"125\">\u003Cspan data-fude-source-start=\"3017\" data-fude-source-end=\"3177\">The blank line makes the separation intentional here. Without it, the result may look identical on screen even though the HTML structure contains several lists.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-add-a-sentence-before-the-list\" data-fude-source-line=\"127\">\u003Cspan data-fude-source-start=\"3183\" data-fude-source-end=\"3213\">Add a sentence before the list\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"129\">\u003Cspan data-fude-source-start=\"3215\" data-fude-source-end=\"3260\">I leave a blank line before and after a list:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"3274\" data-fude-code-block-end=\"3402\" data-fude-source-line=\"131\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"3274\" data-fude-code-block-end=\"3402\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">The document contains three sections:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- introduction\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- analysis\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- conclusion\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">The next section explains the analysis in detail.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"141\">\u003Cspan data-fude-source-start=\"3408\" data-fude-source-end=\"3574\">Markdown readers can often recognize a list without that blank line. Adding it still makes the source clearer and avoids differences with older or stricter renderers.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-3-create-a-numbered-list\" data-fude-source-line=\"143\">\u003Cspan data-fude-source-start=\"3579\" data-fude-source-end=\"3604\">3. Create a numbered list\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"145\">\u003Cspan data-fude-source-start=\"3606\" data-fude-source-end=\"3659\">An ordered list uses a number, a period, and a space:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"3673\" data-fude-code-block-end=\"3732\" data-fude-source-line=\"147\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"3673\" data-fude-code-block-end=\"3732\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Install the app\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Add a project\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">3. Open a Markdown file\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"153\">\u003Cspan data-fude-source-start=\"3738\" data-fude-source-end=\"3747\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Col data-fude-source-line=\"155\">\n\u003Cli>\u003Cspan data-fude-source-start=\"3752\" data-fude-source-end=\"3767\">Install the app\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"3771\" data-fude-source-end=\"3784\">Add a project\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"3788\" data-fude-source-end=\"3808\">Open a Markdown file\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-fude-source-line=\"159\">\u003Cspan data-fude-source-start=\"3810\" data-fude-source-end=\"3844\">The number is part of the marker. \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"3844\" data-fude-source-end=\"3860\">1.Installation\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"3860\" data-fude-source-end=\"3931\"> does not work correctly because the space after the period is missing.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"161\">\u003Cspan data-fude-source-start=\"3933\" data-fude-source-end=\"3989\">Some Markdown readers also accept a closing parenthesis:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"4003\" data-fude-code-block-end=\"4031\" data-fude-source-line=\"163\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"4003\" data-fude-code-block-end=\"4031\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1) First step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2) Second step\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"168\">\u003Cspan data-fude-source-start=\"4037\" data-fude-source-end=\"4085\">This form is valid in compatible renderers, but \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4085\" data-fude-source-end=\"4089\">1.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4089\" data-fude-source-end=\"4184\"> remains the most familiar and portable syntax. It is the one I use throughout the blog guides.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-do-you-need-to-write-the-actual-numbers\" data-fude-source-line=\"170\">\u003Cspan data-fude-source-start=\"4190\" data-fude-source-end=\"4230\">Do you need to write the actual numbers?\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"172\">\u003Cspan data-fude-source-start=\"4232\" data-fude-source-end=\"4377\">The Markdown renderer determines the starting number from the first item, then calculates the rest. These two sources can therefore both produce \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4377\" data-fude-source-end=\"4380\">1\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4380\" data-fude-source-end=\"4382\">, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4382\" data-fude-source-end=\"4385\">2\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4385\" data-fude-source-end=\"4387\">, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4387\" data-fude-source-end=\"4390\">3\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4390\" data-fude-source-end=\"4414\"> in the rendered output:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"4428\" data-fude-code-block-end=\"4458\" data-fude-source-line=\"174\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"4428\" data-fude-code-block-end=\"4458\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Prepare\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Check\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">3. Publish\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"4476\" data-fude-code-block-end=\"4506\" data-fude-source-line=\"180\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"4476\" data-fude-code-block-end=\"4506\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Prepare\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Check\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Publish\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"186\">\u003Cspan data-fude-source-start=\"4512\" data-fude-source-end=\"4535\">Rendered in both cases:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Col data-fude-source-line=\"188\">\n\u003Cli>\u003Cspan data-fude-source-start=\"4540\" data-fude-source-end=\"4547\">Prepare\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"4551\" data-fude-source-end=\"4556\">Check\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"4560\" data-fude-source-end=\"4567\">Publish\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-fude-source-line=\"192\">\u003Cspan data-fude-source-start=\"4569\" data-fude-source-end=\"4579\">Repeating \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4579\" data-fude-source-end=\"4583\">1.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4583\" data-fude-source-end=\"4677\"> has one advantage: you can move or insert a step without renumbering every line that follows.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"194\">\u003Cspan data-fude-source-start=\"4679\" data-fude-source-end=\"4820\">I still prefer to write the actual numbers in a document that may also be read as plain text. The rendered result is correct either way, but \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4820\" data-fude-source-end=\"4824\">1.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4824\" data-fude-source-end=\"4826\">, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4826\" data-fude-source-end=\"4830\">2.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4830\" data-fude-source-end=\"4832\">, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"4832\" data-fude-source-end=\"4836\">3.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"4836\" data-fude-source-end=\"4941\"> is easier to understand when the file appears in a terminal, a Git diff, or an editor without a preview.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-start-at-a-different-number\" data-fude-source-line=\"196\">\u003Cspan data-fude-source-start=\"4947\" data-fude-source-end=\"4974\">Start at a different number\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"198\">\u003Cspan data-fude-source-start=\"4976\" data-fude-source-end=\"5033\">To resume a procedure at step 4, start the new list with \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"5033\" data-fude-source-end=\"5037\">4.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"5037\" data-fude-source-end=\"5038\">:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"5052\" data-fude-code-block-end=\"5109\" data-fude-source-line=\"200\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"5052\" data-fude-code-block-end=\"5109\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">4. Restart the app\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">5. Check the result\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">6. Archive the log\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"206\">\u003Cspan data-fude-source-start=\"5115\" data-fude-source-end=\"5308\">In most Markdown readers, the first marker sets the starting number. The numbers that follow do not necessarily control every number displayed: the reader usually continues the sequence itself.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"208\">\u003Cspan data-fude-source-start=\"5310\" data-fude-source-end=\"5361\">This detail explains a sometimes surprising result:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"5375\" data-fude-code-block-end=\"5432\" data-fude-source-line=\"210\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"5375\" data-fude-code-block-end=\"5432\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">4. Restart the app\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">9. Check the result\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Archive the log\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"216\">\u003Cspan data-fude-source-start=\"5438\" data-fude-source-end=\"5470\">The rendered output may display \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"5470\" data-fude-source-end=\"5473\">4\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"5473\" data-fude-source-end=\"5475\">, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"5475\" data-fude-source-end=\"5478\">5\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"5478\" data-fude-source-end=\"5480\">, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"5480\" data-fude-source-end=\"5483\">6\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"5483\" data-fude-source-end=\"5600\">. To avoid misleading anyone who reads the source, keep the numbering consistent even when the parser can correct it.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-avoid-creating-a-numbered-list-by-accident\" data-fude-source-line=\"218\">\u003Cspan data-fude-source-start=\"5606\" data-fude-source-end=\"5648\">Avoid creating a numbered list by accident\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"220\">\u003Cspan data-fude-source-start=\"5650\" data-fude-source-end=\"5735\">A sentence that begins with a year followed by a period can be interpreted as a list:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"5749\" data-fude-code-block-end=\"5789\" data-fude-source-line=\"222\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"5749\" data-fude-code-block-end=\"5789\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1986. An important year for the project.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"226\">\u003Cspan data-fude-source-start=\"5795\" data-fude-source-end=\"5875\">Escape the period with a backslash if you want to keep it as a regular sentence:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"5889\" data-fude-code-block-end=\"5930\" data-fude-source-line=\"228\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"5889\" data-fude-code-block-end=\"5930\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1986\\. An important year for the project.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"232\">\u003Cspan data-fude-source-start=\"5936\" data-fude-source-end=\"5987\">Rendered: 1986. An important year for the project.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-4-create-a-nested-list\" data-fude-source-line=\"234\">\u003Cspan data-fude-source-start=\"5992\" data-fude-source-end=\"6015\">4. Create a nested list\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"236\">\u003Cspan data-fude-source-start=\"6017\" data-fude-source-end=\"6106\">A nested list places one list inside a parent item. Indent the subitems with four spaces:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"6120\" data-fude-code-block-end=\"6234\" data-fude-source-line=\"238\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"6120\" data-fude-code-block-end=\"6234\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Documentation\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Installation guide\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Contribution guide\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Application\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Reader\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Project library\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"247\">\u003Cspan data-fude-source-start=\"6240\" data-fude-source-end=\"6249\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"249\">\n\u003Cli>\u003Cspan data-fude-source-start=\"6253\" data-fude-source-end=\"6266\">Documentation\u003C\u002Fspan>\n\u003Cul>\n\u003Cli>\u003Cspan data-fude-source-start=\"6273\" data-fude-source-end=\"6291\">Installation guide\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"6298\" data-fude-source-end=\"6316\">Contribution guide\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"6319\" data-fude-source-end=\"6330\">Application\u003C\u002Fspan>\n\u003Cul>\n\u003Cli>\u003Cspan data-fude-source-start=\"6337\" data-fude-source-end=\"6343\">Reader\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"6350\" data-fude-source-end=\"6365\">Project library\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"256\">\u003Cspan data-fude-source-start=\"6367\" data-fude-source-end=\"6569\">Four spaces provide a simple and portable rule. Some renderers accept two or three spaces in simple cases, but the result becomes more fragile when markers are longer or an item contains several blocks.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"258\">\u003Cspan data-fude-source-start=\"6571\" data-fude-source-end=\"6689\">The precise rule is to align the nested content with the beginning of the parent item's text. Compare these two items:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"6703\" data-fude-code-block-end=\"6769\" data-fude-source-line=\"260\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"6703\" data-fude-code-block-end=\"6769\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. First item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">   - Subitem\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">100. One-hundredth item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">     - Subitem\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"268\">\u003Cspan data-fude-source-start=\"6775\" data-fude-source-end=\"6779\">The \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"6779\" data-fude-source-end=\"6785\">100.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"6785\" data-fude-source-end=\"6818\"> marker takes up more space than \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"6818\" data-fude-source-end=\"6822\">1.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"6822\" data-fude-source-end=\"6916\">. Its subitem therefore needs additional indentation to remain attached to the correct parent.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-add-several-levels\" data-fude-source-line=\"270\">\u003Cspan data-fude-source-start=\"6922\" data-fude-source-end=\"6940\">Add several levels\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"272\">\u003Cspan data-fude-source-start=\"6942\" data-fude-source-end=\"6973\">You can repeat the indentation:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"6987\" data-fude-code-block-end=\"7105\" data-fude-source-line=\"274\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"6987\" data-fude-code-block-end=\"7105\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Project\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Application\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">        - Interface\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">        - Storage\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Website\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">        - Blog\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">        - Documentation\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"284\">\u003Cspan data-fude-source-start=\"7111\" data-fude-source-end=\"7120\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"286\">\n\u003Cli>\u003Cspan data-fude-source-start=\"7124\" data-fude-source-end=\"7131\">Project\u003C\u002Fspan>\n\u003Cul>\n\u003Cli>\u003Cspan data-fude-source-start=\"7138\" data-fude-source-end=\"7149\">Application\u003C\u002Fspan>\n\u003Cul>\n\u003Cli>\u003Cspan data-fude-source-start=\"7160\" data-fude-source-end=\"7169\">Interface\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"7180\" data-fude-source-end=\"7187\">Storage\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"7194\" data-fude-source-end=\"7201\">Website\u003C\u002Fspan>\n\u003Cul>\n\u003Cli>\u003Cspan data-fude-source-start=\"7212\" data-fude-source-end=\"7216\">Blog\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"7227\" data-fude-source-end=\"7240\">Documentation\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"294\">\u003Cspan data-fude-source-start=\"7242\" data-fude-source-end=\"7447\">Technically, lists can contain many levels. In practice, three levels are almost always enough. Beyond that, the structure becomes difficult to scan on a small screen and tedious to maintain in the source.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"296\">\u003Cspan data-fude-source-start=\"7449\" data-fude-source-end=\"7551\">If you need five or six levels, headings and subheadings probably describe the hierarchy more clearly.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-5-mix-bullets-and-numbers\" data-fude-source-line=\"298\">\u003Cspan data-fude-source-start=\"7556\" data-fude-source-end=\"7582\">5. Mix bullets and numbers\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"300\">\u003Cspan data-fude-source-start=\"7584\" data-fude-source-end=\"7620\">A numbered list can contain bullets:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"7634\" data-fude-code-block-end=\"7833\" data-fude-source-line=\"302\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"7634\" data-fude-code-block-end=\"7833\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Prepare the document\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - check the title\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - add a description\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - review the links\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Check the rendered output\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - open the file\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - check the images\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - test the examples\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">3. Publish\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"314\">\u003Cspan data-fude-source-start=\"7839\" data-fude-source-end=\"7848\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Col data-fude-source-line=\"316\">\n\u003Cli>\u003Cspan data-fude-source-start=\"7853\" data-fude-source-end=\"7873\">Prepare the document\u003C\u002Fspan>\n\u003Cul>\n\u003Cli>\u003Cspan data-fude-source-start=\"7880\" data-fude-source-end=\"7895\">check the title\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"7902\" data-fude-source-end=\"7919\">add a description\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"7926\" data-fude-source-end=\"7942\">review the links\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"7946\" data-fude-source-end=\"7971\">Check the rendered output\u003C\u002Fspan>\n\u003Cul>\n\u003Cli>\u003Cspan data-fude-source-start=\"7978\" data-fude-source-end=\"7991\">open the file\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"7998\" data-fude-source-end=\"8014\">check the images\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"8021\" data-fude-source-end=\"8038\">test the examples\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"8042\" data-fude-source-end=\"8049\">Publish\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-fude-source-line=\"326\">\u003Cspan data-fude-source-start=\"8051\" data-fude-source-end=\"8077\">The reverse works as well:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"8091\" data-fude-code-block-end=\"8243\" data-fude-source-line=\"328\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"8091\" data-fude-code-block-end=\"8243\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Mac version\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    1. Download the app\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    2. Move Fude to Applications\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Windows version\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    1. Download the installer\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    2. Follow the displayed steps\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"337\">\u003Cspan data-fude-source-start=\"8249\" data-fude-source-end=\"8258\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"339\">\n\u003Cli>\u003Cspan data-fude-source-start=\"8262\" data-fude-source-end=\"8273\">Mac version\u003C\u002Fspan>\n\u003Col>\n\u003Cli>\u003Cspan data-fude-source-start=\"8281\" data-fude-source-end=\"8297\">Download the app\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"8305\" data-fude-source-end=\"8330\">Move Fude to Applications\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"8333\" data-fude-source-end=\"8348\">Windows version\u003C\u002Fspan>\n\u003Col>\n\u003Cli>\u003Cspan data-fude-source-start=\"8356\" data-fude-source-end=\"8378\">Download the installer\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"8386\" data-fude-source-end=\"8412\">Follow the displayed steps\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"346\">\u003Cspan data-fude-source-start=\"8414\" data-fude-source-end=\"8545\">The type used at each level should express its role. Bullets group options or details, while numbers describe a sequence to follow.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-6-add-checkboxes-in-markdown\" data-fude-source-line=\"348\">\u003Cspan data-fude-source-start=\"8550\" data-fude-source-end=\"8579\">6. Add checkboxes in Markdown\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"350\">\u003Cspan data-fude-source-start=\"8581\" data-fude-source-end=\"8609\">A task list, often called a \u003C\u002Fspan>\u003Cem>\u003Cspan data-fude-source-start=\"8610\" data-fude-source-end=\"8628\">Markdown checklist\u003C\u002Fspan>\u003C\u002Fem>\u003Cspan data-fude-source-start=\"8629\" data-fude-source-end=\"8731\">, is a list where each item begins with a pair of brackets. The hyphen remains the most common marker:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"8745\" data-fude-code-block-end=\"8819\" data-fude-source-line=\"352\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"8745\" data-fude-code-block-end=\"8819\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Prepare the draft\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Check the examples\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Publish the article\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"358\">\u003Cspan data-fude-source-start=\"8825\" data-fude-source-end=\"8834\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul class=\"contains-task-list\" data-fude-source-line=\"360\">\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"8842\" data-fude-source-end=\"8859\">Prepare the draft\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" checked disabled> \u003Cspan data-fude-source-start=\"8866\" data-fude-source-end=\"8884\">Check the examples\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"8891\" data-fude-source-end=\"8910\">Publish the article\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"364\">\u003Cspan data-fude-source-start=\"8912\" data-fude-source-end=\"8991\">A space between the brackets represents an open task. A lowercase or uppercase \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"8991\" data-fude-source-end=\"8994\">x\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"8994\" data-fude-source-end=\"9023\"> represents a completed task:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"9037\" data-fude-code-block-end=\"9085\" data-fude-source-line=\"366\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"9037\" data-fude-code-block-end=\"9085\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] To do\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Completed\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">X\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Also completed\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"372\">\u003Cspan data-fude-source-start=\"9091\" data-fude-source-end=\"9127\">Spaces matter. This form is correct:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"9141\" data-fude-code-block-end=\"9156\" data-fude-source-line=\"374\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"9141\" data-fude-code-block-end=\"9156\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Open task\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"378\">\u003Cspan data-fude-source-start=\"9162\" data-fude-source-end=\"9182\">These forms are not:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"9196\" data-fude-code-block-end=\"9302\" data-fude-source-line=\"380\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"9196\" data-fude-code-block-end=\"9302\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [] Brackets with no space inside\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ]Task with no space after the brackets\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">[ ] Item with no list marker\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"386\">\u003Cspan data-fude-source-start=\"9308\" data-fude-source-end=\"9466\">Checkboxes were not part of Markdown's original syntax. GitHub popularized them, and they are now understood by GitHub, Obsidian, Fude, and many modern tools.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"388\">\u003Cspan data-fude-source-start=\"9468\" data-fude-source-end=\"9529\">This extension also allows checkboxes inside a numbered list:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"9543\" data-fude-code-block-end=\"9621\" data-fude-source-line=\"390\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"9543\" data-fude-code-block-end=\"9621\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Prepare the draft\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. [ ] Review the examples\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">3. [ ] Publish the article\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"396\">\u003Cspan data-fude-source-start=\"9627\" data-fude-source-end=\"9636\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Col class=\"contains-task-list\" data-fude-source-line=\"398\">\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" checked disabled> \u003Cspan data-fude-source-start=\"9645\" data-fude-source-end=\"9662\">Prepare the draft\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"9670\" data-fude-source-end=\"9689\">Review the examples\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"9697\" data-fude-source-end=\"9716\">Publish the article\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-fude-source-line=\"402\">\u003Cspan data-fude-source-start=\"9718\" data-fude-source-end=\"9927\">This form is valid, but it combines two pieces of information: the order of the steps and their state. Use it for a procedure that must be completed in order. For a simple to-do list, hyphens are more natural.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-nest-tasks\" data-fude-source-line=\"404\">\u003Cspan data-fude-source-start=\"9933\" data-fude-source-end=\"9943\">Nest tasks\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"406\">\u003Cspan data-fude-source-start=\"9945\" data-fude-source-end=\"10005\">Task lists follow the same indentation rules as other lists:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"10019\" data-fude-code-block-end=\"10187\" data-fude-source-line=\"408\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"10019\" data-fude-code-block-end=\"10187\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Publish the new release\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Write the release notes\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - [ ] Generate the installation files\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - [ ] Send the announcement\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Prepare the next release\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"416\">\u003Cspan data-fude-source-start=\"10193\" data-fude-source-end=\"10202\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul class=\"contains-task-list\" data-fude-source-line=\"418\">\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"10210\" data-fude-source-end=\"10233\">Publish the new release\u003C\u002Fspan>\n\u003Cul class=\"contains-task-list\">\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" checked disabled> \u003Cspan data-fude-source-start=\"10244\" data-fude-source-end=\"10267\">Write the release notes\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"10278\" data-fude-source-end=\"10309\">Generate the installation files\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"10320\" data-fude-source-end=\"10341\">Send the announcement\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli class=\"task-list-item\">\u003Cinput type=\"checkbox\" disabled> \u003Cspan data-fude-source-start=\"10348\" data-fude-source-end=\"10372\">Prepare the next release\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"424\">\u003Cspan data-fude-source-start=\"10374\" data-fude-source-end=\"10518\">Checking every subitem does not automatically check the parent in Markdown itself. An app may add that behavior, but the file only contains the \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"10518\" data-fude-source-end=\"10523\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"10523\" data-fude-source-end=\"10528\"> and \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"10528\" data-fude-source-end=\"10533\">[x]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"10533\" data-fude-source-end=\"10556\"> states that you wrote.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-a-displayed-checkbox-is-not-always-interactive\" data-fude-source-line=\"426\">\u003Cspan data-fude-source-start=\"10562\" data-fude-source-end=\"10608\">A displayed checkbox is not always interactive\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"428\">\u003Cspan data-fude-source-start=\"10610\" data-fude-source-end=\"10672\">Rendering a checkbox and changing it are two different things.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"430\">\u003Cspan data-fude-source-start=\"10674\" data-fude-source-end=\"10984\">A static reader can display an empty or checked box without letting you click it. An editor can update the source directly when you click. On GitHub, the behavior also depends on the context: task lists in issues and pull requests include tracking features that a simple file displayed elsewhere does not have.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"432\">\u003Cspan data-fude-source-start=\"10986\" data-fude-source-end=\"11071\">To keep the document portable, always treat the text as the source of truth: replace \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"11071\" data-fude-source-end=\"11076\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"11076\" data-fude-source-end=\"11082\"> with \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"11082\" data-fude-source-end=\"11087\">[x]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"11087\" data-fude-source-end=\"11140\"> to complete a task, and do the reverse to reopen it.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-can-you-put-a-checkbox-inside-a-markdown-table\" data-fude-source-line=\"434\">\u003Cspan data-fude-source-start=\"11146\" data-fude-source-end=\"11193\">Can you put a checkbox inside a Markdown table?\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"436\">\u003Cspan data-fude-source-start=\"11195\" data-fude-source-end=\"11290\">A Markdown checkbox must belong to a list item. When placed by itself inside a table cell, the \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"11290\" data-fude-source-end=\"11295\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"11295\" data-fude-source-end=\"11346\"> sequence therefore does not usually become a task:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"11360\" data-fude-code-block-end=\"11446\" data-fude-source-line=\"438\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"11360\" data-fude-code-block-end=\"11446\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">| Task | Status |\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">| \u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-punctuation, color-mix(in srgb, var(--color-code-text) 78%, var(--color-code-bg) 22%))\">---\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"> | \u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-punctuation, color-mix(in srgb, var(--color-code-text) 78%, var(--color-code-bg) 22%))\">---\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"> |\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">| Review the article | [ ] |\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">| Check the links | [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] |\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"445\">\u003Cspan data-fude-source-start=\"11452\" data-fude-source-end=\"11486\">Rendered in most Markdown readers:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ctable data-fude-source-line=\"447\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003Cspan data-fude-source-start=\"11490\" data-fude-source-end=\"11494\">Task\u003C\u002Fspan>\u003C\u002Fth>\n\u003Cth>\u003Cspan data-fude-source-start=\"11497\" data-fude-source-end=\"11503\">Status\u003C\u002Fspan>\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Cspan data-fude-source-start=\"11522\" data-fude-source-end=\"11540\">Review the article\u003C\u002Fspan>\u003C\u002Ftd>\n\u003Ctd>\u003Cspan data-fude-source-start=\"11543\" data-fude-source-end=\"11546\">[ ]\u003C\u002Fspan>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cspan data-fude-source-start=\"11551\" data-fude-source-end=\"11566\">Check the links\u003C\u002Fspan>\u003C\u002Ftd>\n\u003Ctd>\u003Cspan data-fude-source-start=\"11569\" data-fude-source-end=\"11572\">[x]\u003C\u002Fspan>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp data-fude-source-line=\"452\">\u003Cspan data-fude-source-start=\"11576\" data-fude-source-end=\"11697\">Some tools add their own interpretation, but the result is not portable. For a purely visual indication, you can use the \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"11697\" data-fude-source-end=\"11700\">☐\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"11700\" data-fude-source-end=\"11705\"> and \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"11705\" data-fude-source-end=\"11708\">☑\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"11708\" data-fude-source-end=\"11803\"> characters. They remain text, are not interactive, and do not represent a Markdown task state.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"454\">\u003Cspan data-fude-source-start=\"11805\" data-fude-source-end=\"11971\">If you need actual tasks, keep a checklist. If you need to compare several properties on each row, use a table and choose a label such as “To do” or “Completed.” The \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fmarkdown-table-complete-guide-with-examples\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"11972\" data-fude-source-end=\"12005\">complete guide to Markdown tables\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"12061\" data-fude-source-end=\"12100\"> explains their syntax and limitations.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-7-format-the-content-of-a-list\" data-fude-source-line=\"456\">\u003Cspan data-fude-source-start=\"12105\" data-fude-source-end=\"12136\">7. Format the content of a list\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"458\">\u003Cspan data-fude-source-start=\"12138\" data-fude-source-end=\"12190\">A list item can contain most inline Markdown syntax:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"12204\" data-fude-code-block-end=\"12370\" data-fude-source-line=\"460\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"12204\" data-fude-code-block-end=\"12370\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- **Important**: back up the file\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- *Optional*: change the theme\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- ~~Abandoned~~: export to XML\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Read the \u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-link)\">[\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">guide to links\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-link)\">](\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"467\">\u003Cspan data-fude-source-start=\"12376\" data-fude-source-end=\"12385\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"469\">\n\u003Cli>\u003Cstrong>\u003Cspan data-fude-source-start=\"12391\" data-fude-source-end=\"12400\">Important\u003C\u002Fspan>\u003C\u002Fstrong>\u003Cspan data-fude-source-start=\"12402\" data-fude-source-end=\"12420\">: back up the file\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cem>\u003Cspan data-fude-source-start=\"12424\" data-fude-source-end=\"12432\">Optional\u003C\u002Fspan>\u003C\u002Fem>\u003Cspan data-fude-source-start=\"12433\" data-fude-source-end=\"12451\">: change the theme\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cdel>\u003Cspan data-fude-source-start=\"12456\" data-fude-source-end=\"12465\">Abandoned\u003C\u002Fspan>\u003C\u002Fdel>\u003Cspan data-fude-source-start=\"12467\" data-fude-source-end=\"12482\">: export to XML\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"12485\" data-fude-source-end=\"12494\">Read the \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"12495\" data-fude-source-end=\"12509\">guide to links\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"474\">\u003Cspan data-fude-source-start=\"12555\" data-fude-source-end=\"12568\">The guide to \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fbold-italic-strikethrough-underline-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"12569\" data-fude-source-end=\"12623\">bold, italic, strikethrough, and underline in Markdown\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"12680\" data-fude-source-end=\"12741\"> explains the compatibility differences between these styles.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-add-several-paragraphs-to-one-item\" data-fude-source-line=\"476\">\u003Cspan data-fude-source-start=\"12747\" data-fude-source-end=\"12781\">Add several paragraphs to one item\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"478\">\u003Cspan data-fude-source-start=\"12783\" data-fude-source-end=\"12871\">Leave a blank line, then indent the following paragraph to keep it inside the same item:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"12885\" data-fude-code-block-end=\"13038\" data-fude-source-line=\"480\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"12885\" data-fude-code-block-end=\"13038\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Back up the database.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    This copy lets you roll back if the migration fails.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Run the migration.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    Keep the log until validation is complete.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"490\">\u003Cspan data-fude-source-start=\"13044\" data-fude-source-end=\"13053\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Col data-fude-source-line=\"492\">\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"13058\" data-fude-source-end=\"13079\">Back up the database.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>\u003Cspan data-fude-source-start=\"13085\" data-fude-source-end=\"13137\">This copy lets you roll back if the migration fails.\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"13142\" data-fude-source-end=\"13160\">Run the migration.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>\u003Cspan data-fude-source-start=\"13166\" data-fude-source-end=\"13208\">Keep the log until validation is complete.\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-fude-source-line=\"500\">\u003Cspan data-fude-source-start=\"13210\" data-fude-source-end=\"13299\">Without indentation, the second paragraph may leave the list and interrupt the numbering.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-add-a-blockquote\" data-fude-source-line=\"502\">\u003Cspan data-fude-source-start=\"13305\" data-fude-source-end=\"13321\">Add a blockquote\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"504\">\u003Cspan data-fude-source-start=\"13323\" data-fude-source-end=\"13334\">Indent the \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"13334\" data-fude-source-end=\"13337\">>\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"13337\" data-fude-source-end=\"13353\"> marker as well:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"13367\" data-fude-code-block-end=\"13478\" data-fude-source-line=\"506\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"13367\" data-fude-code-block-end=\"13478\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Review the rule before continuing.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    > An untested backup is not yet a reliable backup.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Check the copy.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"514\">\u003Cspan data-fude-source-start=\"13484\" data-fude-source-end=\"13493\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"516\">\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"13497\" data-fude-source-end=\"13531\">Review the rule before continuing.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cspan data-fude-source-start=\"13539\" data-fude-source-end=\"13587\">An untested backup is not yet a reliable backup.\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"13591\" data-fude-source-end=\"13606\">Check the copy.\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"user-content-add-a-code-block\" data-fude-source-line=\"522\">\u003Cspan data-fude-source-start=\"13612\" data-fude-source-end=\"13628\">Add a code block\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"524\">\u003Cspan data-fude-source-start=\"13630\" data-fude-source-end=\"13699\">The block fenced by three backticks must remain attached to the item:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"13714\" data-fude-code-block-end=\"13788\" data-fude-source-line=\"526\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"13714\" data-fude-code-block-end=\"13788\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Run the command:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-token-string, color-mix(in srgb, var(--color-accent-primary) 78%, var(--color-code-text) 22%))\">    ```bash\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    pnpm test\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-token-string, color-mix(in srgb, var(--color-accent-primary) 78%, var(--color-code-text) 22%))\">    ```\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Fix any errors.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"536\">\u003Cspan data-fude-source-start=\"13795\" data-fude-source-end=\"13804\">Rendered:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Col data-fude-source-line=\"538\">\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"13809\" data-fude-source-end=\"13825\">Run the command:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"bash\" data-fude-code-block-start=\"13843\" data-fude-code-block-end=\"13852\">\u003Ccode class=\"language-bash\" data-language=\"bash\" data-fude-code-block-start=\"13843\" data-fude-code-block-end=\"13852\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-token-function, color-mix(in srgb, var(--color-accent-secondary) 62%, var(--color-code-text) 38%))\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-string, color-mix(in srgb, var(--color-accent-primary) 78%, var(--color-code-text) 22%))\"> test\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"13865\" data-fude-source-end=\"13880\">Fix any errors.\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-fude-source-line=\"546\">\u003Cspan data-fude-source-start=\"13882\" data-fude-source-end=\"14005\">Fenced blocks are generally easier to read than blocks created using only spaces, especially inside an already nested list.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-add-an-image\" data-fude-source-line=\"548\">\u003Cspan data-fude-source-start=\"14011\" data-fude-source-end=\"14023\">Add an image\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"550\">\u003Cspan data-fude-source-start=\"14025\" data-fude-source-end=\"14065\">An image can become part of a list item:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"14079\" data-fude-code-block-end=\"14246\" data-fude-source-line=\"552\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"14079\" data-fude-code-block-end=\"14246\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Light theme preview\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    ![\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">Interface in the light theme\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">]\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-link)\">(.\u002Fimages\u002Flight-theme.png)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Dark theme preview\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    ![\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">Interface in the dark theme\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">]\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-link)\">(.\u002Fimages\u002Fdark-theme.png)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"562\">\u003Cspan data-fude-source-start=\"14252\" data-fude-source-end=\"14359\">Paths, alternative text, and the differences between local files and web images are explained in the guide \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fhow-to-add-images-in-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"14360\" data-fude-source-end=\"14389\">How to Add Images in Markdown\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"14431\" data-fude-source-end=\"14432\">.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-8-understand-tight-and-loose-lists\" data-fude-source-line=\"564\">\u003Cspan data-fude-source-start=\"14437\" data-fude-source-end=\"14472\">8. Understand tight and loose lists\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"566\">\u003Cspan data-fude-source-start=\"14474\" data-fude-source-end=\"14529\">These two lists do not have exactly the same structure:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"14543\" data-fude-code-block-end=\"14582\" data-fude-source-line=\"568\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"14543\" data-fude-code-block-end=\"14582\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- First item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Second item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Third item\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"14600\" data-fude-code-block-end=\"14641\" data-fude-source-line=\"574\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"14600\" data-fude-code-block-end=\"14641\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- First item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Second item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Third item\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"582\">\u003Cspan data-fude-source-start=\"14647\" data-fude-source-end=\"14663\">Tight rendering:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"584\">\n\u003Cli>\u003Cspan data-fude-source-start=\"14667\" data-fude-source-end=\"14677\">First item\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"14680\" data-fude-source-end=\"14691\">Second item\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"14694\" data-fude-source-end=\"14704\">Third item\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"588\">\u003Cspan data-fude-source-start=\"14706\" data-fude-source-end=\"14722\">Loose rendering:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"590\">\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"14726\" data-fude-source-end=\"14736\">First item\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"14740\" data-fude-source-end=\"14751\">Second item\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cspan data-fude-source-start=\"14755\" data-fude-source-end=\"14765\">Third item\u003C\u002Fspan>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"596\">\u003Cspan data-fude-source-start=\"14767\" data-fude-source-end=\"14952\">The first is a tight list. The second is a loose list. In a loose list, each item usually contains an actual paragraph, which adds vertical spacing depending on the reader's stylesheet.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"598\">\u003Cspan data-fude-source-start=\"14954\" data-fude-source-end=\"15068\">I use tight lists for short items. I reserve loose lists for items made up of several sentences or several blocks.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"600\">\u003Cspan data-fude-source-start=\"15070\" data-fude-source-end=\"15244\">Adding blank lines at random to “fix” the output often has the opposite effect. Decide whether the list should be tight or loose, then apply the same structure to every item.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-9-compare-github-obsidian-and-fude\" data-fude-source-line=\"602\">\u003Cspan data-fude-source-start=\"15249\" data-fude-source-end=\"15286\">9. Compare GitHub, Obsidian, and Fude\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cp data-fude-source-line=\"604\">\u003Cspan data-fude-source-start=\"15288\" data-fude-source-end=\"15441\">Bulleted lists, numbered lists, and nesting are part of the foundation supported by all three tools. The main differences concern editing and checkboxes.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-on-github\" data-fude-source-line=\"606\">\u003Cspan data-fude-source-start=\"15447\" data-fude-source-end=\"15456\">On GitHub\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"608\">\u003Cspan data-fude-source-start=\"15458\" data-fude-source-end=\"15511\">GitHub uses its own variant of Markdown. It supports:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cul data-fude-source-line=\"610\">\n\u003Cli>\u003Cspan data-fude-source-start=\"15515\" data-fude-source-end=\"15543\">bulleted and numbered lists;\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"15546\" data-fude-source-end=\"15579\">nested lists with several levels;\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"15582\" data-fude-source-end=\"15599\">task lists using \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"15599\" data-fude-source-end=\"15604\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"15604\" data-fude-source-end=\"15609\"> and \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"15609\" data-fude-source-end=\"15614\">[x]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"15614\" data-fude-source-end=\"15615\">;\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Cspan data-fude-source-start=\"15618\" data-fude-source-end=\"15671\">formatting, links, and issue references inside items.\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-fude-source-line=\"615\">\u003Cspan data-fude-source-start=\"15673\" data-fude-source-end=\"15698\">In GitHub editing areas, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"15698\" data-fude-source-end=\"15703\">Tab\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"15703\" data-fude-source-end=\"15708\"> and \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"15708\" data-fude-source-end=\"15721\">Shift + Tab\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"15721\" data-fude-source-end=\"15844\"> indent or outdent the selected lines. Task lists placed in issues and pull requests can also participate in tracking work.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"617\">\u003Cspan data-fude-source-start=\"15846\" data-fude-source-end=\"16023\">GitHub recommends visually aligning a nested list marker with the beginning of the parent item's text. This method becomes particularly useful when the ordered list begins with \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"16023\" data-fude-source-end=\"16029\">100.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"16029\" data-fude-source-end=\"16041\"> instead of \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"16041\" data-fude-source-end=\"16045\">1.\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"16045\" data-fude-source-end=\"16046\">.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-in-obsidian\" data-fude-source-line=\"619\">\u003Cspan data-fude-source-start=\"16052\" data-fude-source-end=\"16063\">In Obsidian\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"621\">\u003Cspan data-fude-source-start=\"16065\" data-fude-source-end=\"16215\">Obsidian displays lists and lets you check tasks from its editing modes. Clicking the box then updates the local Markdown file by replacing its state.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"623\">\u003Cspan data-fude-source-start=\"16217\" data-fude-source-end=\"16382\">Themes and plugins can add other task symbols or states. Those conventions remain specific to the Obsidian environment. If the file needs to be read elsewhere, keep \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"16382\" data-fude-source-end=\"16387\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"16387\" data-fude-source-end=\"16392\"> and \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"16392\" data-fude-source-end=\"16397\">[x]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"16397\" data-fude-source-end=\"16419\"> for essential states.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-in-fude\" data-fude-source-line=\"625\">\u003Cspan data-fude-source-start=\"16425\" data-fude-source-end=\"16432\">In Fude\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"627\">\u003Cspan data-fude-source-start=\"16434\" data-fude-source-end=\"16609\">Fude supports the Markdown variant used by GitHub, including its task lists. Bullets, numbers, nesting, bold text, links, and checkboxes are therefore displayed in the reader.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"629\">\u003Cspan data-fude-source-start=\"16611\" data-fude-source-end=\"16721\">Fude remains a reader: you cannot check a box in the rendered view of your file. The visible state comes from \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"16721\" data-fude-source-end=\"16726\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"16726\" data-fude-source-end=\"16730\"> or \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"16730\" data-fude-source-end=\"16735\">[x]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"16735\" data-fude-source-end=\"16804\"> in the source, which you can change with your editor or an AI agent.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"631\">\u003Cspan data-fude-source-start=\"16806\" data-fude-source-end=\"16928\">When a task list becomes too long to scan vertically, Fude can also turn a dedicated block into a Kanban board. The guide \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fcreate-kanban-board-markdown-fude-ai-agents\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"16929\" data-fude-source-end=\"16986\">Create a Kanban Board in Markdown with Fude and AI Agents\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"17042\" data-fude-source-end=\"17080\"> explains this reader-specific syntax.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"633\">\u003Cspan data-fude-source-start=\"17082\" data-fude-source-end=\"17137\">You can paste every example from this article into the \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fmarkdown-viewer\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"17138\" data-fude-source-end=\"17169\">free Markdown reader on Fude.md\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"17192\" data-fude-source-end=\"17234\"> to check its rendered output immediately.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-10-troubleshoot-common-problems\" data-fude-source-line=\"635\">\u003Cspan data-fude-source-start=\"17239\" data-fude-source-end=\"17271\">10. Troubleshoot common problems\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Ch3 id=\"user-content-my-hyphens-remain-visible-as-text\" data-fude-source-line=\"637\">\u003Cspan data-fude-source-start=\"17277\" data-fude-source-end=\"17312\">“My hyphens remain visible as text”\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"639\">\u003Cspan data-fude-source-start=\"17314\" data-fude-source-end=\"17347\">Check the space after the marker:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"17361\" data-fude-code-block-end=\"17381\" data-fude-source-line=\"641\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"17361\" data-fude-code-block-end=\"17381\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- correct\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">-incorrect\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"646\">\u003Cspan data-fude-source-start=\"17387\" data-fude-source-end=\"17534\">Also make sure you are looking at the rendered document. An editor in source mode naturally displays the hyphens. A reader turns them into bullets.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-my-nested-list-stays-at-the-same-level\" data-fude-source-line=\"648\">\u003Cspan data-fude-source-start=\"17540\" data-fude-source-end=\"17580\">“My nested list stays at the same level”\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"650\">\u003Cspan data-fude-source-start=\"17582\" data-fude-source-end=\"17680\">The indentation is insufficient or inconsistent. Use four spaces and avoid mixing tabs and spaces:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"17694\" data-fude-code-block-end=\"17714\" data-fude-source-line=\"652\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"17694\" data-fude-code-block-end=\"17714\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Parent\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Child\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"657\">\u003Cspan data-fude-source-start=\"17720\" data-fude-source-end=\"17836\">Enable the display of invisible characters in your editor if two lines that look aligned do not behave the same way.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-my-numbering-restarts-at-1\" data-fude-source-line=\"659\">\u003Cspan data-fude-source-start=\"17842\" data-fude-source-end=\"17870\">“My numbering restarts at 1”\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"661\">\u003Cspan data-fude-source-start=\"17872\" data-fude-source-end=\"18049\">A paragraph, code block, or incorrectly indented line has probably split the list in two. Check that the intermediate content still belongs to the previous item and is indented.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"663\">\u003Cspan data-fude-source-start=\"18051\" data-fude-source-end=\"18104\">An intentional break can start at a different number:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"18118\" data-fude-code-block-end=\"18146\" data-fude-source-line=\"665\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"18118\" data-fude-code-block-end=\"18146\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">4. Resume at the fourth step\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"user-content-my-checkboxes-do-not-appear\" data-fude-source-line=\"669\">\u003Cspan data-fude-source-start=\"18156\" data-fude-source-end=\"18185\">“My checkboxes do not appear”\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"671\">\u003Cspan data-fude-source-start=\"18187\" data-fude-source-end=\"18236\">Check the three places where a space is required:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"18250\" data-fude-code-block-end=\"18260\" data-fude-source-line=\"673\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"18250\" data-fude-code-block-end=\"18260\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Task\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"677\">\u003Cspan data-fude-source-start=\"18266\" data-fude-source-end=\"18359\">You need one space after the hyphen, one inside the brackets for an open task, and one after \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"18359\" data-fude-source-end=\"18362\">]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"18362\" data-fude-source-end=\"18363\">.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"679\">\u003Cspan data-fude-source-start=\"18365\" data-fude-source-end=\"18471\">If the syntax is correct but the brackets remain visible, the reader probably does not support task lists.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-i-can-see-the-checkbox-but-i-cannot-click-it\" data-fude-source-line=\"681\">\u003Cspan data-fude-source-start=\"18477\" data-fude-source-end=\"18524\">“I can see the checkbox, but I cannot click it”\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"683\">\u003Cspan data-fude-source-start=\"18526\" data-fude-source-end=\"18599\">The reader displays the state without providing editing controls. Change \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"18599\" data-fude-source-end=\"18604\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"18604\" data-fude-source-end=\"18608\"> to \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"18608\" data-fude-source-end=\"18613\">[x]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"18613\" data-fude-source-end=\"18707\"> in the source, or open the file in an editor that can reflect a click back into the Markdown.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-three-asterisks-create-a-horizontal-rule\" data-fude-source-line=\"685\">\u003Cspan data-fude-source-start=\"18713\" data-fude-source-end=\"18755\">“Three asterisks create a horizontal rule”\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"687\">\u003Cspan data-fude-source-start=\"18757\" data-fude-source-end=\"18823\">Three separated asterisks can be interpreted as a horizontal rule:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"18837\" data-fude-code-block-end=\"18842\" data-fude-source-line=\"689\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"18837\" data-fude-code-block-end=\"18842\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">* * *\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"693\">\u003Cspan data-fude-source-start=\"18848\" data-fude-source-end=\"18922\">To create three items, place each marker on its own line with its content:\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"18936\" data-fude-code-block-end=\"18975\" data-fude-source-line=\"695\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"18936\" data-fude-code-block-end=\"18975\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">* First item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">* Second item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">* Third item\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp data-fude-source-line=\"701\">\u003Cspan data-fude-source-start=\"18981\" data-fude-source-end=\"18991\">The guide \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fhow-to-add-horizontal-line-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"18992\" data-fude-source-end=\"19032\">How to Add a Horizontal Line in Markdown\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"19080\" data-fude-source-end=\"19136\"> explains this ambiguity and the other available syntax.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch3 id=\"user-content-my-content-leaves-the-list\" data-fude-source-line=\"703\">\u003Cspan data-fude-source-start=\"19142\" data-fude-source-end=\"19170\">“My content leaves the list”\u003C\u002Fspan>\u003C\u002Fh3>\n\u003Cp data-fude-source-line=\"705\">\u003Cspan data-fude-source-start=\"19172\" data-fude-source-end=\"19328\">Paragraphs, blockquotes, images, and code blocks that belong to an item must remain indented. A blank line alone is not enough to express that relationship.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"707\">\u003Cspan data-fude-source-start=\"19330\" data-fude-source-end=\"19497\">When in doubt, simplify the item temporarily: keep only its first line, check the rendered output, then reintroduce each block one at a time with the same indentation.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch2 id=\"user-content-11-copy-this-cheat-sheet\" data-fude-source-line=\"709\">\u003Cspan data-fude-source-start=\"19502\" data-fude-source-end=\"19527\">11. Copy this cheat sheet\u003C\u002Fspan>\u003C\u002Fh2>\n\u003Cpre style=\"background-color:var(--fude-code-background, var(--color-code-bg));color:var(--fude-code-foreground, var(--color-code-text))\" tabindex=\"0\" class=\"shiki fude-code-theme fude-code-block\" data-language=\"markdown\" data-fude-code-block-start=\"19542\" data-fude-code-block-end=\"20340\" data-fude-source-line=\"711\">\u003Ccode class=\"language-markdown\" data-language=\"markdown\" data-fude-code-block-start=\"19542\" data-fude-code-block-end=\"20340\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Bulleted list\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- First item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Second item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Third item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Numbered list\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. First step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Second step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">3. Third step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Automatic numbering\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. First step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Second step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Third step\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Nested list\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- Parent\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - Child\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">        - Grandchild\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Bullets inside a procedure\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Prepare\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - back up the data\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - close the app\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Run\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">3. Check\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Checkboxes — supported by GitHub and many readers\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Open task\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Completed task\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Nested tasks\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">- [ ] Publish\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - [\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-token-keyword, color-mix(in srgb, var(--color-accent-primary) 68%, var(--color-code-text) 32%))\">x\u003C\u002Fspan>\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">] Write\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - [ ] Review\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    - [ ] Go live\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Several paragraphs inside one item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. First step.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    Explanation that remains attached to the first step.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Second step.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Code block inside an item\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1. Run the tests:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-token-string, color-mix(in srgb, var(--color-accent-primary) 78%, var(--color-code-text) 22%))\">    ```bash\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">    pnpm test\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-token-string, color-mix(in srgb, var(--color-accent-primary) 78%, var(--color-code-text) 22%))\">    ```\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">2. Check the result.\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\"># Escape a false list number\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--fude-code-foreground, var(--color-code-text))\">1986\\. A year, not a step.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Chr data-fude-source-line=\"769\">\n\u003Cp data-fude-source-line=\"771\">\u003Cspan data-fude-source-start=\"20352\" data-fude-source-end=\"20571\">Markdown lists remain simple as long as their structure is visible in the source. A hyphen and a space create a bullet. A number followed by a period creates a step. Four spaces attach a subitem to its parent. Finally, \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"20571\" data-fude-source-end=\"20576\">[ ]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"20576\" data-fude-source-end=\"20581\"> and \u003C\u002Fspan>\u003Ccode>\u003Cspan data-fude-source-start=\"20581\" data-fude-source-end=\"20586\">[x]\u003C\u002Fspan>\u003C\u002Fcode>\u003Cspan data-fude-source-start=\"20586\" data-fude-source-end=\"20639\"> add a task state in readers that support task lists.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"773\">\u003Cspan data-fude-source-start=\"20641\" data-fude-source-end=\"20933\">The most useful rule is not a character: choose the structure that actually expresses your intention. Use bullets to group, numbers to guide, and checkboxes to track. When the hierarchy becomes too deep, return to headings. When the number of tasks becomes too large, switch to a Kanban view.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"775\">\u003Cspan data-fude-source-start=\"20935\" data-fude-source-end=\"20976\">To continue learning, read the guides to \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"20977\" data-fude-source-end=\"20991\">Markdown links\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"21035\" data-fude-source-end=\"21037\">, \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fhow-to-add-images-in-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"21038\" data-fude-source-end=\"21044\">images\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"21086\" data-fude-source-end=\"21088\">, \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fmarkdown-table-complete-guide-with-examples\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"21089\" data-fude-source-end=\"21095\">tables\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"21151\" data-fude-source-end=\"21157\">, and \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fblog\u002Fbold-italic-strikethrough-underline-markdown\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"21158\" data-fude-source-end=\"21173\">text formatting\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"21230\" data-fude-source-end=\"21231\">.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"777\">\u003Cspan data-fude-source-start=\"21233\" data-fude-source-end=\"21299\">To test a list without creating a file, paste its source into the \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002Fmarkdown-viewer\u002F\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"21300\" data-fude-source-end=\"21331\">free Markdown reader on Fude.md\u003C\u002Fspan>\u003C\u002Fa>\u003Cspan data-fude-source-start=\"21354\" data-fude-source-end=\"21355\">.\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp data-fude-source-line=\"779\">\u003Cspan data-fude-source-start=\"21357\" data-fude-source-end=\"21359\">📌 \u003C\u002Fspan>\u003Ca href=\"\u002Fen\u002F#download\" data-fude-link-kind=\"unopenable\">\u003Cspan data-fude-source-start=\"21360\" data-fude-source-end=\"21373\">Download Fude\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fp>","\nA Markdown list often begins with a simple hyphen. Then you add a subitem, a checkbox, a second paragraph, or a code block, and what seemed obvious suddenly depends on a few invisible spaces.\n\nThe basic syntax for writing lists and checkboxes in Markdown is simple:\n\n```markdown\n- A bulleted item\n- Another item\n\n1. First step\n2. Second step\n\n- [ ] Task to do\n- [x] Completed task\n```\n\nIn this guide, I will start with these three forms, then explain automatic numbering, nested lists, content that spans multiple lines, checkboxes, and the differences between GitHub, Obsidian, and Fude.\n\nIf `.md` files are still new to you, start with my guide [What Is a Markdown File (.md) and How Do You Open It?](\u002Fen\u002Fblog\u002Fwhat-is-markdown-file-how-to-open\u002F).\n\n## 1. Choose the right type of Markdown list\n\nMarkdown offers three families of lists:\n\n| Goal | Syntax | Use it when |\n| --- | --- | --- |\n| Bulleted list | `- Item` | The order does not matter |\n| Numbered list | `1. Step` | The order or progression matters |\n| Task list | `- [ ] Task` | Each item has an open or completed state |\n\nHere is the same content expressed in three different ways:\n\n```markdown\n# Information with no particular order\n- Documentation\n- Tests\n- Release\n\n# Steps to follow in order\n1. Write the documentation\n2. Run the tests\n3. Publish the release\n\n# Work to track\n- [x] Write the documentation\n- [ ] Run the tests\n- [ ] Publish the release\n```\n\nRendered:\n\n**Information with no particular order**\n\n- Documentation\n- Tests\n- Release\n\n**Steps to follow in order**\n\n1. Write the documentation\n2. Run the tests\n3. Publish the release\n\n**Work to track**\n\n- [x] Write the documentation\n- [ ] Run the tests\n- [ ] Publish the release\n\nThe choice should not be purely visual. A numbered list tells the reader that a sequence exists. A checkbox turns a descriptive item into a task. If neither piece of information is useful, a bulleted list remains the simplest option.\n\n## 2. Create a bulleted list\n\nTo create an unordered list, place a hyphen followed by a space in front of each item:\n\n```markdown\n- Apples\n- Pears\n- Apricots\n```\n\nRendered:\n\n- Apples\n- Pears\n- Apricots\n\nThe space after the hyphen is required:\n\n```markdown\n- Valid item\n-Invalid item\n```\n\nThe second line usually remains plain text because `-Invalid item` has no space between the marker and the content.\n\n### Hyphen, asterisk, or plus sign?\n\nMarkdown syntax accepts three markers for bulleted lists:\n\n```markdown\n- With a hyphen\n* With an asterisk\n+ With a plus sign\n```\n\nRendered:\n\n- With a hyphen\n- With an asterisk\n- With a plus sign\n\nAll three produce a bullet. I still recommend the hyphen `-`: it is easy to read in the source and avoids confusion with the asterisk used for [bold and italic text](\u002Fen\u002Fblog\u002Fbold-italic-strikethrough-underline-markdown\u002F).\n\nKeep the same marker throughout a list as well. Changing the character can create two separate lists depending on the renderer:\n\n```markdown\n- First group\n- Same group\n\n* Potential new group\n* Same new group\n```\n\nThe blank line makes the separation intentional here. Without it, the result may look identical on screen even though the HTML structure contains several lists.\n\n### Add a sentence before the list\n\nI leave a blank line before and after a list:\n\n```markdown\nThe document contains three sections:\n\n- introduction\n- analysis\n- conclusion\n\nThe next section explains the analysis in detail.\n```\n\nMarkdown readers can often recognize a list without that blank line. Adding it still makes the source clearer and avoids differences with older or stricter renderers.\n\n## 3. Create a numbered list\n\nAn ordered list uses a number, a period, and a space:\n\n```markdown\n1. Install the app\n2. Add a project\n3. Open a Markdown file\n```\n\nRendered:\n\n1. Install the app\n2. Add a project\n3. Open a Markdown file\n\nThe number is part of the marker. `1.Installation` does not work correctly because the space after the period is missing.\n\nSome Markdown readers also accept a closing parenthesis:\n\n```markdown\n1) First step\n2) Second step\n```\n\nThis form is valid in compatible renderers, but `1.` remains the most familiar and portable syntax. It is the one I use throughout the blog guides.\n\n### Do you need to write the actual numbers?\n\nThe Markdown renderer determines the starting number from the first item, then calculates the rest. These two sources can therefore both produce `1`, `2`, `3` in the rendered output:\n\n```markdown\n1. Prepare\n2. Check\n3. Publish\n```\n\n```markdown\n1. Prepare\n1. Check\n1. Publish\n```\n\nRendered in both cases:\n\n1. Prepare\n2. Check\n3. Publish\n\nRepeating `1.` has one advantage: you can move or insert a step without renumbering every line that follows.\n\nI still prefer to write the actual numbers in a document that may also be read as plain text. The rendered result is correct either way, but `1.`, `2.`, `3.` is easier to understand when the file appears in a terminal, a Git diff, or an editor without a preview.\n\n### Start at a different number\n\nTo resume a procedure at step 4, start the new list with `4.`:\n\n```markdown\n4. Restart the app\n5. Check the result\n6. Archive the log\n```\n\nIn most Markdown readers, the first marker sets the starting number. The numbers that follow do not necessarily control every number displayed: the reader usually continues the sequence itself.\n\nThis detail explains a sometimes surprising result:\n\n```markdown\n4. Restart the app\n9. Check the result\n2. Archive the log\n```\n\nThe rendered output may display `4`, `5`, `6`. To avoid misleading anyone who reads the source, keep the numbering consistent even when the parser can correct it.\n\n### Avoid creating a numbered list by accident\n\nA sentence that begins with a year followed by a period can be interpreted as a list:\n\n```markdown\n1986. An important year for the project.\n```\n\nEscape the period with a backslash if you want to keep it as a regular sentence:\n\n```markdown\n1986\\. An important year for the project.\n```\n\nRendered: 1986\\. An important year for the project.\n\n## 4. Create a nested list\n\nA nested list places one list inside a parent item. Indent the subitems with four spaces:\n\n```markdown\n- Documentation\n    - Installation guide\n    - Contribution guide\n- Application\n    - Reader\n    - Project library\n```\n\nRendered:\n\n- Documentation\n    - Installation guide\n    - Contribution guide\n- Application\n    - Reader\n    - Project library\n\nFour spaces provide a simple and portable rule. Some renderers accept two or three spaces in simple cases, but the result becomes more fragile when markers are longer or an item contains several blocks.\n\nThe precise rule is to align the nested content with the beginning of the parent item's text. Compare these two items:\n\n```markdown\n1. First item\n   - Subitem\n\n100. One-hundredth item\n     - Subitem\n```\n\nThe `100.` marker takes up more space than `1.`. Its subitem therefore needs additional indentation to remain attached to the correct parent.\n\n### Add several levels\n\nYou can repeat the indentation:\n\n```markdown\n- Project\n    - Application\n        - Interface\n        - Storage\n    - Website\n        - Blog\n        - Documentation\n```\n\nRendered:\n\n- Project\n    - Application\n        - Interface\n        - Storage\n    - Website\n        - Blog\n        - Documentation\n\nTechnically, lists can contain many levels. In practice, three levels are almost always enough. Beyond that, the structure becomes difficult to scan on a small screen and tedious to maintain in the source.\n\nIf you need five or six levels, headings and subheadings probably describe the hierarchy more clearly.\n\n## 5. Mix bullets and numbers\n\nA numbered list can contain bullets:\n\n```markdown\n1. Prepare the document\n    - check the title\n    - add a description\n    - review the links\n2. Check the rendered output\n    - open the file\n    - check the images\n    - test the examples\n3. Publish\n```\n\nRendered:\n\n1. Prepare the document\n    - check the title\n    - add a description\n    - review the links\n2. Check the rendered output\n    - open the file\n    - check the images\n    - test the examples\n3. Publish\n\nThe reverse works as well:\n\n```markdown\n- Mac version\n    1. Download the app\n    2. Move Fude to Applications\n- Windows version\n    1. Download the installer\n    2. Follow the displayed steps\n```\n\nRendered:\n\n- Mac version\n    1. Download the app\n    2. Move Fude to Applications\n- Windows version\n    1. Download the installer\n    2. Follow the displayed steps\n\nThe type used at each level should express its role. Bullets group options or details, while numbers describe a sequence to follow.\n\n## 6. Add checkboxes in Markdown\n\nA task list, often called a *Markdown checklist*, is a list where each item begins with a pair of brackets. The hyphen remains the most common marker:\n\n```markdown\n- [ ] Prepare the draft\n- [x] Check the examples\n- [ ] Publish the article\n```\n\nRendered:\n\n- [ ] Prepare the draft\n- [x] Check the examples\n- [ ] Publish the article\n\nA space between the brackets represents an open task. A lowercase or uppercase `x` represents a completed task:\n\n```markdown\n- [ ] To do\n- [x] Completed\n- [X] Also completed\n```\n\nSpaces matter. This form is correct:\n\n```markdown\n- [ ] Open task\n```\n\nThese forms are not:\n\n```markdown\n- [] Brackets with no space inside\n- [ ]Task with no space after the brackets\n[ ] Item with no list marker\n```\n\nCheckboxes were not part of Markdown's original syntax. GitHub popularized them, and they are now understood by GitHub, Obsidian, Fude, and many modern tools.\n\nThis extension also allows checkboxes inside a numbered list:\n\n```markdown\n1. [x] Prepare the draft\n2. [ ] Review the examples\n3. [ ] Publish the article\n```\n\nRendered:\n\n1. [x] Prepare the draft\n2. [ ] Review the examples\n3. [ ] Publish the article\n\nThis form is valid, but it combines two pieces of information: the order of the steps and their state. Use it for a procedure that must be completed in order. For a simple to-do list, hyphens are more natural.\n\n### Nest tasks\n\nTask lists follow the same indentation rules as other lists:\n\n```markdown\n- [ ] Publish the new release\n    - [x] Write the release notes\n    - [ ] Generate the installation files\n    - [ ] Send the announcement\n- [ ] Prepare the next release\n```\n\nRendered:\n\n- [ ] Publish the new release\n    - [x] Write the release notes\n    - [ ] Generate the installation files\n    - [ ] Send the announcement\n- [ ] Prepare the next release\n\nChecking every subitem does not automatically check the parent in Markdown itself. An app may add that behavior, but the file only contains the `[ ]` and `[x]` states that you wrote.\n\n### A displayed checkbox is not always interactive\n\nRendering a checkbox and changing it are two different things.\n\nA static reader can display an empty or checked box without letting you click it. An editor can update the source directly when you click. On GitHub, the behavior also depends on the context: task lists in issues and pull requests include tracking features that a simple file displayed elsewhere does not have.\n\nTo keep the document portable, always treat the text as the source of truth: replace `[ ]` with `[x]` to complete a task, and do the reverse to reopen it.\n\n### Can you put a checkbox inside a Markdown table?\n\nA Markdown checkbox must belong to a list item. When placed by itself inside a table cell, the `[ ]` sequence therefore does not usually become a task:\n\n```markdown\n| Task | Status |\n| --- | --- |\n| Review the article | [ ] |\n| Check the links | [x] |\n```\n\nRendered in most Markdown readers:\n\n| Task | Status |\n| --- | --- |\n| Review the article | [ ] |\n| Check the links | [x] |\n\nSome tools add their own interpretation, but the result is not portable. For a purely visual indication, you can use the `☐` and `☑` characters. They remain text, are not interactive, and do not represent a Markdown task state.\n\nIf you need actual tasks, keep a checklist. If you need to compare several properties on each row, use a table and choose a label such as “To do” or “Completed.” The [complete guide to Markdown tables](\u002Fen\u002Fblog\u002Fmarkdown-table-complete-guide-with-examples\u002F) explains their syntax and limitations.\n\n## 7. Format the content of a list\n\nA list item can contain most inline Markdown syntax:\n\n```markdown\n- **Important**: back up the file\n- *Optional*: change the theme\n- ~~Abandoned~~: export to XML\n- Read the [guide to links](\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F)\n```\n\nRendered:\n\n- **Important**: back up the file\n- *Optional*: change the theme\n- ~~Abandoned~~: export to XML\n- Read the [guide to links](\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F)\n\nThe guide to [bold, italic, strikethrough, and underline in Markdown](\u002Fen\u002Fblog\u002Fbold-italic-strikethrough-underline-markdown\u002F) explains the compatibility differences between these styles.\n\n### Add several paragraphs to one item\n\nLeave a blank line, then indent the following paragraph to keep it inside the same item:\n\n```markdown\n1. Back up the database.\n\n    This copy lets you roll back if the migration fails.\n\n2. Run the migration.\n\n    Keep the log until validation is complete.\n```\n\nRendered:\n\n1. Back up the database.\n\n    This copy lets you roll back if the migration fails.\n\n2. Run the migration.\n\n    Keep the log until validation is complete.\n\nWithout indentation, the second paragraph may leave the list and interrupt the numbering.\n\n### Add a blockquote\n\nIndent the `>` marker as well:\n\n```markdown\n- Review the rule before continuing.\n\n    > An untested backup is not yet a reliable backup.\n\n- Check the copy.\n```\n\nRendered:\n\n- Review the rule before continuing.\n\n    > An untested backup is not yet a reliable backup.\n\n- Check the copy.\n\n### Add a code block\n\nThe block fenced by three backticks must remain attached to the item:\n\n````markdown\n1. Run the command:\n\n    ```bash\n    pnpm test\n    ```\n\n2. Fix any errors.\n````\n\nRendered:\n\n1. Run the command:\n\n    ```bash\n    pnpm test\n    ```\n\n2. Fix any errors.\n\nFenced blocks are generally easier to read than blocks created using only spaces, especially inside an already nested list.\n\n### Add an image\n\nAn image can become part of a list item:\n\n```markdown\n- Light theme preview\n\n    ![Interface in the light theme](.\u002Fimages\u002Flight-theme.png)\n\n- Dark theme preview\n\n    ![Interface in the dark theme](.\u002Fimages\u002Fdark-theme.png)\n```\n\nPaths, alternative text, and the differences between local files and web images are explained in the guide [How to Add Images in Markdown](\u002Fen\u002Fblog\u002Fhow-to-add-images-in-markdown\u002F).\n\n## 8. Understand tight and loose lists\n\nThese two lists do not have exactly the same structure:\n\n```markdown\n- First item\n- Second item\n- Third item\n```\n\n```markdown\n- First item\n\n- Second item\n\n- Third item\n```\n\nTight rendering:\n\n- First item\n- Second item\n- Third item\n\nLoose rendering:\n\n- First item\n\n- Second item\n\n- Third item\n\nThe first is a tight list. The second is a loose list. In a loose list, each item usually contains an actual paragraph, which adds vertical spacing depending on the reader's stylesheet.\n\nI use tight lists for short items. I reserve loose lists for items made up of several sentences or several blocks.\n\nAdding blank lines at random to “fix” the output often has the opposite effect. Decide whether the list should be tight or loose, then apply the same structure to every item.\n\n## 9. Compare GitHub, Obsidian, and Fude\n\nBulleted lists, numbered lists, and nesting are part of the foundation supported by all three tools. The main differences concern editing and checkboxes.\n\n### On GitHub\n\nGitHub uses its own variant of Markdown. It supports:\n\n- bulleted and numbered lists;\n- nested lists with several levels;\n- task lists using `[ ]` and `[x]`;\n- formatting, links, and issue references inside items.\n\nIn GitHub editing areas, `Tab` and `Shift + Tab` indent or outdent the selected lines. Task lists placed in issues and pull requests can also participate in tracking work.\n\nGitHub recommends visually aligning a nested list marker with the beginning of the parent item's text. This method becomes particularly useful when the ordered list begins with `100.` instead of `1.`.\n\n### In Obsidian\n\nObsidian displays lists and lets you check tasks from its editing modes. Clicking the box then updates the local Markdown file by replacing its state.\n\nThemes and plugins can add other task symbols or states. Those conventions remain specific to the Obsidian environment. If the file needs to be read elsewhere, keep `[ ]` and `[x]` for essential states.\n\n### In Fude\n\nFude supports the Markdown variant used by GitHub, including its task lists. Bullets, numbers, nesting, bold text, links, and checkboxes are therefore displayed in the reader.\n\nFude remains a reader: you cannot check a box in the rendered view of your file. The visible state comes from `[ ]` or `[x]` in the source, which you can change with your editor or an AI agent.\n\nWhen a task list becomes too long to scan vertically, Fude can also turn a dedicated block into a Kanban board. The guide [Create a Kanban Board in Markdown with Fude and AI Agents](\u002Fen\u002Fblog\u002Fcreate-kanban-board-markdown-fude-ai-agents\u002F) explains this reader-specific syntax.\n\nYou can paste every example from this article into the [free Markdown reader on Fude.md](\u002Fen\u002Fmarkdown-viewer\u002F) to check its rendered output immediately.\n\n## 10. Troubleshoot common problems\n\n### “My hyphens remain visible as text”\n\nCheck the space after the marker:\n\n```markdown\n- correct\n-incorrect\n```\n\nAlso make sure you are looking at the rendered document. An editor in source mode naturally displays the hyphens. A reader turns them into bullets.\n\n### “My nested list stays at the same level”\n\nThe indentation is insufficient or inconsistent. Use four spaces and avoid mixing tabs and spaces:\n\n```markdown\n- Parent\n    - Child\n```\n\nEnable the display of invisible characters in your editor if two lines that look aligned do not behave the same way.\n\n### “My numbering restarts at 1”\n\nA paragraph, code block, or incorrectly indented line has probably split the list in two. Check that the intermediate content still belongs to the previous item and is indented.\n\nAn intentional break can start at a different number:\n\n```markdown\n4. Resume at the fourth step\n```\n\n### “My checkboxes do not appear”\n\nCheck the three places where a space is required:\n\n```markdown\n- [ ] Task\n```\n\nYou need one space after the hyphen, one inside the brackets for an open task, and one after `]`.\n\nIf the syntax is correct but the brackets remain visible, the reader probably does not support task lists.\n\n### “I can see the checkbox, but I cannot click it”\n\nThe reader displays the state without providing editing controls. Change `[ ]` to `[x]` in the source, or open the file in an editor that can reflect a click back into the Markdown.\n\n### “Three asterisks create a horizontal rule”\n\nThree separated asterisks can be interpreted as a horizontal rule:\n\n```markdown\n* * *\n```\n\nTo create three items, place each marker on its own line with its content:\n\n```markdown\n* First item\n* Second item\n* Third item\n```\n\nThe guide [How to Add a Horizontal Line in Markdown](\u002Fen\u002Fblog\u002Fhow-to-add-horizontal-line-markdown\u002F) explains this ambiguity and the other available syntax.\n\n### “My content leaves the list”\n\nParagraphs, blockquotes, images, and code blocks that belong to an item must remain indented. A blank line alone is not enough to express that relationship.\n\nWhen in doubt, simplify the item temporarily: keep only its first line, check the rendered output, then reintroduce each block one at a time with the same indentation.\n\n## 11. Copy this cheat sheet\n\n````markdown\n# Bulleted list\n- First item\n- Second item\n- Third item\n\n# Numbered list\n1. First step\n2. Second step\n3. Third step\n\n# Automatic numbering\n1. First step\n1. Second step\n1. Third step\n\n# Nested list\n- Parent\n    - Child\n        - Grandchild\n\n# Bullets inside a procedure\n1. Prepare\n    - back up the data\n    - close the app\n2. Run\n3. Check\n\n# Checkboxes — supported by GitHub and many readers\n- [ ] Open task\n- [x] Completed task\n\n# Nested tasks\n- [ ] Publish\n    - [x] Write\n    - [ ] Review\n    - [ ] Go live\n\n# Several paragraphs inside one item\n1. First step.\n\n    Explanation that remains attached to the first step.\n\n2. Second step.\n\n# Code block inside an item\n1. Run the tests:\n\n    ```bash\n    pnpm test\n    ```\n\n2. Check the result.\n\n# Escape a false list number\n1986\\. A year, not a step.\n````\n\n---\n\nMarkdown lists remain simple as long as their structure is visible in the source. A hyphen and a space create a bullet. A number followed by a period creates a step. Four spaces attach a subitem to its parent. Finally, `[ ]` and `[x]` add a task state in readers that support task lists.\n\nThe most useful rule is not a character: choose the structure that actually expresses your intention. Use bullets to group, numbers to guide, and checkboxes to track. When the hierarchy becomes too deep, return to headings. When the number of tasks becomes too large, switch to a Kanban view.\n\nTo continue learning, read the guides to [Markdown links](\u002Fen\u002Fblog\u002Fhow-to-create-links-in-markdown\u002F), [images](\u002Fen\u002Fblog\u002Fhow-to-add-images-in-markdown\u002F), [tables](\u002Fen\u002Fblog\u002Fmarkdown-table-complete-guide-with-examples\u002F), and [text formatting](\u002Fen\u002Fblog\u002Fbold-italic-strikethrough-underline-markdown\u002F).\n\nTo test a list without creating a file, paste its source into the [free Markdown reader on Fude.md](\u002Fen\u002Fmarkdown-viewer\u002F).\n\n📌 [Download Fude](\u002Fen\u002F#download)\n",[2559,2561],{"locale":2560,"slug":2554},"en",{"locale":2562,"slug":2563},"fr","listes-markdown-puces-numerotation-imbrication-cases-cocher",{"title":1977,"path":2565,"stem":2566,"description":2567,"children":-1},"\u002Fen\u002Fblog\u002Fcreate-kanban-board-markdown-fude-ai-agents","en\u002Fblog\u002F9.create-kanban-board-markdown-fude-ai-agents","Fude turns a Markdown block into a Kanban board. Learn how to ask an AI agent to create your board, add cards, tags, and due dates, then review it in Fude.",1786014099142]