apex-ruby 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/apex-ruby.gemspec +14 -3
  4. data/ext/apex_ext/apex_src/include/apex/apex.h +11 -2
  5. data/ext/apex_ext/apex_src/src/apex.c +64 -5
  6. data/ext/apex_ext/apex_src/src/ast_terminal.c +2 -4
  7. data/ext/apex_ext/apex_src/src/extensions/callouts.c +103 -63
  8. data/ext/apex_ext/apex_src/src/extensions/callouts.h +3 -2
  9. data/ext/apex_ext/apex_src/src/extensions/citations.c +15 -2
  10. data/ext/apex_ext/apex_src/src/extensions/emoji.c +73 -7
  11. data/ext/apex_ext/apex_src/src/extensions/html_markdown.c +25 -4
  12. data/ext/apex_ext/apex_src/src/extensions/html_markdown.h +4 -1
  13. data/ext/apex_ext/apex_src/src/extensions/insert.c +49 -0
  14. data/ext/apex_ext/apex_src/src/extensions/metadata.c +275 -55
  15. data/ext/apex_ext/apex_src/src/extensions/metadata.h +9 -0
  16. data/ext/apex_ext/apex_src/src/extensions/relaxed_tables.c +172 -254
  17. data/ext/apex_ext/apex_src/src/extensions/table_html_postprocess.c +36 -127
  18. data/ext/apex_ext/apex_src/src/html_renderer.c +99 -157
  19. data/ext/apex_ext/extconf.rb +31 -79
  20. data/lib/apex/version.rb +1 -1
  21. metadata +1 -470
  22. data/ext/apex_ext/apex_src/AGENTS.md +0 -41
  23. data/ext/apex_ext/apex_src/BENCHMARK.md +0 -32
  24. data/ext/apex_ext/apex_src/BENCHMARK_COMPARISON.md +0 -67
  25. data/ext/apex_ext/apex_src/CHANGELOG.md +0 -3373
  26. data/ext/apex_ext/apex_src/CMakeLists.txt +0 -481
  27. data/ext/apex_ext/apex_src/Dockerfile.linux-build +0 -15
  28. data/ext/apex_ext/apex_src/Formula/apex.rb +0 -43
  29. data/ext/apex_ext/apex_src/Info.plist.in +0 -27
  30. data/ext/apex_ext/apex_src/Package.swift +0 -192
  31. data/ext/apex_ext/apex_src/PackageSupport/README.md +0 -17
  32. data/ext/apex_ext/apex_src/PackageSupport/cmark-gfm/cmark_gfm_spm_stub.c +0 -4
  33. data/ext/apex_ext/apex_src/README.md +0 -536
  34. data/ext/apex_ext/apex_src/ROADMAP.md +0 -5
  35. data/ext/apex_ext/apex_src/VERSION +0 -1
  36. data/ext/apex_ext/apex_src/apex-debug.log +0 -4
  37. data/ext/apex_ext/apex_src/apex-header-2-rb@2x.webp +0 -0
  38. data/ext/apex_ext/apex_src/apex-plugins.json.example +0 -20
  39. data/ext/apex_ext/apex_src/apex.code-workspace +0 -38
  40. data/ext/apex_ext/apex_src/apex.pc.in +0 -11
  41. data/ext/apex_ext/apex_src/apex.taskpaper +0 -12
  42. data/ext/apex_ext/apex_src/apex_deflist_debug.log +0 -25
  43. data/ext/apex_ext/apex_src/buildnotes.md +0 -1435
  44. data/ext/apex_ext/apex_src/cli/main.c +0 -4588
  45. data/ext/apex_ext/apex_src/debug.log +0 -7
  46. data/ext/apex_ext/apex_src/debug_test.sh +0 -22
  47. data/ext/apex_ext/apex_src/docs/API_REFERENCE.md +0 -451
  48. data/ext/apex_ext/apex_src/docs/ARCHITECTURE.md +0 -166
  49. data/ext/apex_ext/apex_src/docs/CITATIONS_EXAMPLES.md +0 -274
  50. data/ext/apex_ext/apex_src/docs/CITATIONS_IMPLEMENTATION_PLAN.md +0 -749
  51. data/ext/apex_ext/apex_src/docs/CITATIONS_PLAN.md +0 -744
  52. data/ext/apex_ext/apex_src/docs/CMARK_INTEGRATION.md +0 -220
  53. data/ext/apex_ext/apex_src/docs/CRITICMARKUP.md +0 -501
  54. data/ext/apex_ext/apex_src/docs/DEBUGGING.md +0 -73
  55. data/ext/apex_ext/apex_src/docs/FINAL_STATUS.md +0 -391
  56. data/ext/apex_ext/apex_src/docs/FINAL_STATUS_UPDATE.md +0 -237
  57. data/ext/apex_ext/apex_src/docs/IAL_FEATURES.md +0 -210
  58. data/ext/apex_ext/apex_src/docs/IAL_STATUS.md +0 -344
  59. data/ext/apex_ext/apex_src/docs/INDEX_IMPLEMENTATION_ANALYSIS.md +0 -382
  60. data/ext/apex_ext/apex_src/docs/INTEGRATION_EXAMPLE.m +0 -144
  61. data/ext/apex_ext/apex_src/docs/LIMITATIONS_RESOLVED.md +0 -278
  62. data/ext/apex_ext/apex_src/docs/OUTPUT_MODES.md +0 -321
  63. data/ext/apex_ext/apex_src/docs/PROGRESS.md +0 -167
  64. data/ext/apex_ext/apex_src/docs/STANDALONE_FEATURE.md +0 -174
  65. data/ext/apex_ext/apex_src/docs/TABLE_SPANS_STATUS.md +0 -243
  66. data/ext/apex_ext/apex_src/docs/TEST_COVERAGE.md +0 -316
  67. data/ext/apex_ext/apex_src/docs/USER_GUIDE.md +0 -803
  68. data/ext/apex_ext/apex_src/docs/WIKI_LINKS_ISSUE.md +0 -91
  69. data/ext/apex_ext/apex_src/docs/index.md +0 -459
  70. data/ext/apex_ext/apex_src/docs/plans/2025-02-27-man-page-output-implementation.md +0 -351
  71. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-12-toc-output-format.md +0 -745
  72. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-18-bear-image-attributes.md +0 -829
  73. data/ext/apex_ext/apex_src/docs/superpowers/plans/2026-07-19-apex-node-npm.md +0 -1148
  74. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-12-toc-output-format-design.md +0 -161
  75. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-18-bear-image-attributes-design.md +0 -184
  76. data/ext/apex_ext/apex_src/docs/superpowers/specs/2026-07-19-apex-node-npm-design.md +0 -211
  77. data/ext/apex_ext/apex_src/documentation/README.md +0 -160
  78. data/ext/apex_ext/apex_src/documentation/app-settings-table.md +0 -67
  79. data/ext/apex_ext/apex_src/documentation/app-transformed/Citations.md +0 -340
  80. data/ext/apex_ext/apex_src/documentation/app-transformed/Credits.md +0 -11
  81. data/ext/apex_ext/apex_src/documentation/app-transformed/Header-IDs.md +0 -234
  82. data/ext/apex_ext/apex_src/documentation/app-transformed/Inline-Attribute-Lists.md +0 -516
  83. data/ext/apex_ext/apex_src/documentation/app-transformed/Metadata-Transforms.md +0 -461
  84. data/ext/apex_ext/apex_src/documentation/app-transformed/Modes.md +0 -193
  85. data/ext/apex_ext/apex_src/documentation/app-transformed/Multi-File-Documents.md +0 -201
  86. data/ext/apex_ext/apex_src/documentation/app-transformed/Plugins.md +0 -678
  87. data/ext/apex_ext/apex_src/documentation/app-transformed/Syntax.md +0 -1367
  88. data/ext/apex_ext/apex_src/documentation/docsets/Apex Command Line Options.cheatsheet.txt +0 -371
  89. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Info.plist +0 -24
  90. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/C-API.html +0 -2211
  91. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Callouts.html +0 -1194
  92. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Citations.html +0 -1620
  93. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Command-Line-Options.html +0 -6024
  94. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Configuration.html +0 -1877
  95. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Credits.html +0 -1040
  96. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Examples.html +0 -1402
  97. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Filters.html +0 -1656
  98. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Generating-Man-Pages.html +0 -1226
  99. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Getting-Started.html +0 -1148
  100. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Header-IDs.html +0 -1478
  101. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Home.html +0 -1225
  102. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Indices.html +0 -2327
  103. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Inline-Attribute-Lists.html +0 -2041
  104. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Installation.html +0 -1314
  105. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Limitations-and-Roadmap.html +0 -1868
  106. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Metadata-Transforms.html +0 -1731
  107. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Modes.html +0 -2242
  108. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-File-Documents.html +0 -1533
  109. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Multi-Format-Images.html +0 -1362
  110. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Pandoc-Integration.html +0 -1338
  111. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Plugins.html +0 -3188
  112. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Quarto-Mode.html +0 -1405
  113. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Rendering-Markdown-In-Terminal.html +0 -1902
  114. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Syntax.html +0 -4222
  115. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Tables.html +0 -1781
  116. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Troubleshooting.html +0 -1629
  117. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Usage.html +0 -1394
  118. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Using-Apex-with-Jekyll.html +0 -1132
  119. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Writing-Tests.html +0 -1754
  120. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/Documents/Xcode-Integration.html +0 -2562
  121. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/docSet.dsidx +0 -0
  122. data/ext/apex_ext/apex_src/documentation/docsets/Apex.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  123. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Info.plist +0 -22
  124. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans.woff +0 -0
  125. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold.woff +0 -0
  126. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Bold_Italic.woff +0 -0
  127. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold.woff +0 -0
  128. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Extrabold_Italic.woff +0 -0
  129. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Italic.woff +0 -0
  130. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold.woff +0 -0
  131. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/cheatset_resources/Open_Sans_Semibold_Italic.woff +0 -0
  132. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/index.html +0 -914
  133. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/Documents/style.css +0 -399
  134. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/docSet.dsidx +0 -0
  135. data/ext/apex_ext/apex_src/documentation/docsets/ApexCLI.docset/Contents/Resources/optimizedIndex.dsidx +0 -0
  136. data/ext/apex_ext/apex_src/documentation/generate_app_docs.rb +0 -772
  137. data/ext/apex_ext/apex_src/documentation/generate_app_docs_ai.rb +0 -678
  138. data/ext/apex_ext/apex_src/documentation/generate_docset.rb +0 -873
  139. data/ext/apex_ext/apex_src/documentation/generate_single_html.rb +0 -733
  140. data/ext/apex_ext/apex_src/documentation/html/apex-app-docs.html +0 -8746
  141. data/ext/apex_ext/apex_src/documentation/html/apex-docs.html +0 -17073
  142. data/ext/apex_ext/apex_src/documentation/shared_scripts.js +0 -64
  143. data/ext/apex_ext/apex_src/documentation/shared_styles.css +0 -651
  144. data/ext/apex_ext/apex_src/documentation/transform_for_app.example.md +0 -260
  145. data/ext/apex_ext/apex_src/documentation/transform_for_app.md +0 -55
  146. data/ext/apex_ext/apex_src/escaping-repro.md +0 -103
  147. data/ext/apex_ext/apex_src/examples/bracketed_spans_demo.md +0 -119
  148. data/ext/apex_ext/apex_src/examples/emoji_span_plugin.yml +0 -11
  149. data/ext/apex_ext/apex_src/examples/example.html +0 -53
  150. data/ext/apex_ext/apex_src/examples/example.md +0 -85
  151. data/ext/apex_ext/apex_src/examples/fenced_divs_demo.md +0 -158
  152. data/ext/apex_ext/apex_src/examples/kbd.md +0 -8
  153. data/ext/apex_ext/apex_src/examples/kbd_plugin.rb +0 -250
  154. data/ext/apex_ext/apex_src/examples/kbd_plugin.yml +0 -9
  155. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/Info.plist +0 -8
  156. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/QuickLook/Preview.png +0 -0
  157. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown to RTF.workflow/Contents/document.wflow +0 -547
  158. data/ext/apex_ext/apex_src/examples/quick-actions/Markdown-to-RTF.workflow.zip +0 -0
  159. data/ext/apex_ext/apex_src/examples/quick-actions/README.md +0 -33
  160. data/ext/apex_ext/apex_src/ial.html +0 -24
  161. data/ext/apex_ext/apex_src/icon/apexicon-outline-black.png +0 -0
  162. data/ext/apex_ext/apex_src/icon/apexicon-outline-black@2x.png +0 -0
  163. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark.png +0 -0
  164. data/ext/apex_ext/apex_src/icon/apexicon-outline-mark@2x.png +0 -0
  165. data/ext/apex_ext/apex_src/icon/apexicon-outline-white.png +0 -0
  166. data/ext/apex_ext/apex_src/icon/apexicon-outline-white@2x.png +0 -0
  167. data/ext/apex_ext/apex_src/icon/apexicon.png +0 -0
  168. data/ext/apex_ext/apex_src/icon/apexicon@2x.png +0 -0
  169. data/ext/apex_ext/apex_src/man/apex-config.5 +0 -455
  170. data/ext/apex_ext/apex_src/man/apex-config.5.md +0 -262
  171. data/ext/apex_ext/apex_src/man/apex-plugins.7 +0 -541
  172. data/ext/apex_ext/apex_src/man/apex-plugins.7.md +0 -365
  173. data/ext/apex_ext/apex_src/man/apex.1 +0 -583
  174. data/ext/apex_ext/apex_src/man/apex.1.html +0 -703
  175. data/ext/apex_ext/apex_src/man/apex.1.md +0 -803
  176. data/ext/apex_ext/apex_src/man/apex.1.new +0 -338
  177. data/ext/apex_ext/apex_src/objc/Apex.swift +0 -316
  178. data/ext/apex_ext/apex_src/objc/ApexPlugins.swift +0 -79
  179. data/ext/apex_ext/apex_src/objc/NSString+Apex.h +0 -207
  180. data/ext/apex_ext/apex_src/objc/NSString+Apex.m +0 -584
  181. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.h +0 -76
  182. data/ext/apex_ext/apex_src/objc/NSString+ApexPlugins.m +0 -169
  183. data/ext/apex_ext/apex_src/output.html +0 -87
  184. data/ext/apex_ext/apex_src/pages/index.md +0 -459
  185. data/ext/apex_ext/apex_src/plans/quarto-mode.md +0 -442
  186. data/ext/apex_ext/apex_src/src/_README.md +0 -413
  187. data/ext/apex_ext/apex_src/src/extensions/github-emoji.txt +0 -869
  188. data/ext/apex_ext/apex_src/test-linux-build.sh +0 -20
  189. data/ext/apex_ext/apex_src/test.html +0 -103
  190. data/ext/apex_ext/apex_src/test_coverage.sh +0 -121
  191. data/ext/apex_ext/apex_src/test_ial_fenced.md +0 -6
  192. data/ext/apex_ext/apex_src/test_math_norm.py +0 -79
  193. data/ext/apex_ext/apex_src/test_pandoc_output.html +0 -48
  194. data/ext/apex_ext/apex_src/test_spm.sh +0 -107
  195. data/ext/apex_ext/apex_src/tests/ApexSPMTest/main.swift +0 -50
  196. data/ext/apex_ext/apex_src/tests/BENCHMARK_RESULTS.md +0 -229
  197. data/ext/apex_ext/apex_src/tests/CMakeLists.txt +0 -25
  198. data/ext/apex_ext/apex_src/tests/README.md +0 -152
  199. data/ext/apex_ext/apex_src/tests/benchmark.sh +0 -113
  200. data/ext/apex_ext/apex_src/tests/benchmark_comparison.sh +0 -166
  201. data/ext/apex_ext/apex_src/tests/compare_header_ids.sh +0 -31
  202. data/ext/apex_ext/apex_src/tests/fixtures/basic/headers.md +0 -25
  203. data/ext/apex_ext/apex_src/tests/fixtures/basic/list-interruption.md +0 -24
  204. data/ext/apex_ext/apex_src/tests/fixtures/basic/misc_markup.md +0 -33
  205. data/ext/apex_ext/apex_src/tests/fixtures/basic/test_basic.md +0 -26
  206. data/ext/apex_ext/apex_src/tests/fixtures/code/code-blocks.md +0 -260
  207. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/SUMMARY.md +0 -6
  208. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/chapter1.md +0 -7
  209. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/index.txt +0 -9
  210. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/intro.md +0 -5
  211. data/ext/apex_ext/apex_src/tests/fixtures/combine_summary/section1_1.md +0 -5
  212. data/ext/apex_ext/apex_src/tests/fixtures/comprehensive_test.md +0 -652
  213. data/ext/apex_ext/apex_src/tests/fixtures/debug_ref_image_ial.md +0 -3
  214. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial.md +0 -11
  215. data/ext/apex_ext/apex_src/tests/fixtures/demos/ial_demo.md +0 -177
  216. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji-autocorrect.md +0 -94
  217. data/ext/apex_ext/apex_src/tests/fixtures/extensions/emoji_test.md +0 -3
  218. data/ext/apex_ext/apex_src/tests/fixtures/extensions/kbd_test.md +0 -3
  219. data/ext/apex_ext/apex_src/tests/fixtures/filters/filter_output_with_rawblock.json +0 -1
  220. data/ext/apex_ext/apex_src/tests/fixtures/filters/unwrap.md +0 -7
  221. data/ext/apex_ext/apex_src/tests/fixtures/ial/bracketed_spans_test.md +0 -74
  222. data/ext/apex_ext/apex_src/tests/fixtures/images/auto-wildcard.md +0 -8
  223. data/ext/apex_ext/apex_src/tests/fixtures/images/bear_image_attributes.md +0 -10
  224. data/ext/apex_ext/apex_src/tests/fixtures/images/image_and_encoding_test.md +0 -27
  225. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.avif +0 -0
  226. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.jpg +0 -0
  227. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu.webp +0 -0
  228. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.avif +0 -0
  229. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.jpg +0 -0
  230. data/ext/apex_ext/apex_src/tests/fixtures/images/img/app-pass-1-profile-menu@2x.webp +0 -0
  231. data/ext/apex_ext/apex_src/tests/fixtures/images/media_formats_test.md +0 -63
  232. data/ext/apex_ext/apex_src/tests/fixtures/images/multimarkdown_image_attributes_test.md +0 -60
  233. data/ext/apex_ext/apex_src/tests/fixtures/images/pandoc_ial_image_test.md +0 -27
  234. data/ext/apex_ext/apex_src/tests/fixtures/images/width_height_conversion_test.md +0 -94
  235. data/ext/apex_ext/apex_src/tests/fixtures/img-in-div.md +0 -16
  236. data/ext/apex_ext/apex_src/tests/fixtures/includes/code.py +0 -4
  237. data/ext/apex_ext/apex_src/tests/fixtures/includes/data-semi.csv +0 -3
  238. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.csv +0 -5
  239. data/ext/apex_ext/apex_src/tests/fixtures/includes/data.tsv +0 -5
  240. data/ext/apex_ext/apex_src/tests/fixtures/includes/image.png +0 -2
  241. data/ext/apex_ext/apex_src/tests/fixtures/includes/metadata_options.yml +0 -11
  242. data/ext/apex_ext/apex_src/tests/fixtures/includes/nested.md +0 -8
  243. data/ext/apex_ext/apex_src/tests/fixtures/includes/raw.html +0 -4
  244. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.md +0 -19
  245. data/ext/apex_ext/apex_src/tests/fixtures/includes/sections.txt +0 -11
  246. data/ext/apex_ext/apex_src/tests/fixtures/includes/simple.md +0 -7
  247. data/ext/apex_ext/apex_src/tests/fixtures/includes/test_image.png +0 -0
  248. data/ext/apex_ext/apex_src/tests/fixtures/includes/with space.txt +0 -1
  249. data/ext/apex_ext/apex_src/tests/fixtures/large_doc.md +0 -1094
  250. data/ext/apex_ext/apex_src/tests/fixtures/metadata/mmd-metadata.md +0 -5
  251. data/ext/apex_ext/apex_src/tests/fixtures/metadata/pandoc-meta.md +0 -4
  252. data/ext/apex_ext/apex_src/tests/fixtures/metadata/yaml-frontmatter.md +0 -6
  253. data/ext/apex_ext/apex_src/tests/fixtures/metadata_options.yml +0 -11
  254. data/ext/apex_ext/apex_src/tests/fixtures/minimal_pb.md +0 -2
  255. data/ext/apex_ext/apex_src/tests/fixtures/obsidian-callouts.md +0 -46
  256. data/ext/apex_ext/apex_src/tests/fixtures/output/gfm_header_id_test.md +0 -96
  257. data/ext/apex_ext/apex_src/tests/fixtures/output/test_citations.md +0 -43
  258. data/ext/apex_ext/apex_src/tests/fixtures/output/test_def_list_links.md +0 -12
  259. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_mmark.md +0 -53
  260. data/ext/apex_ext/apex_src/tests/fixtures/output/test_index_textindex.md +0 -37
  261. data/ext/apex_ext/apex_src/tests/fixtures/pagebreak_html_repro.md +0 -5
  262. data/ext/apex_ext/apex_src/tests/fixtures/python-callouts.md +0 -47
  263. data/ext/apex_ext/apex_src/tests/fixtures/quarto/callouts.md +0 -3
  264. data/ext/apex_ext/apex_src/tests/fixtures/quarto/code-attrs.md +0 -3
  265. data/ext/apex_ext/apex_src/tests/fixtures/quarto/diagrams.md +0 -8
  266. data/ext/apex_ext/apex_src/tests/fixtures/quarto/lists.md +0 -19
  267. data/ext/apex_ext/apex_src/tests/fixtures/quarto/raw-content.md +0 -5
  268. data/ext/apex_ext/apex_src/tests/fixtures/quarto/shortcodes.md +0 -7
  269. data/ext/apex_ext/apex_src/tests/fixtures/quarto/smoke.md +0 -81
  270. data/ext/apex_ext/apex_src/tests/fixtures/quarto/spans.md +0 -5
  271. data/ext/apex_ext/apex_src/tests/fixtures/quarto-callouts.md +0 -47
  272. data/ext/apex_ext/apex_src/tests/fixtures/speed.md +0 -192
  273. data/ext/apex_ext/apex_src/tests/fixtures/tables/advanced_tables_test.md +0 -93
  274. data/ext/apex_ext/apex_src/tests/fixtures/tables/grid-tables.md +0 -37
  275. data/ext/apex_ext/apex_src/tests/fixtures/tables/inline_tables_test.md +0 -41
  276. data/ext/apex_ext/apex_src/tests/fixtures/tables/relaxed-table.md +0 -12
  277. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_cr_line_endings.md +0 -15
  278. data/ext/apex_ext/apex_src/tests/fixtures/tables/table_no_trailing_newline.md +0 -15
  279. data/ext/apex_ext/apex_src/tests/generate_gfm_ids.sh +0 -105
  280. data/ext/apex_ext/apex_src/tests/generate_ial_demo.sh +0 -143
  281. data/ext/apex_ext/apex_src/tests/gfm_id_comparison_summary.md +0 -96
  282. data/ext/apex_ext/apex_src/tests/gh_api_test.md +0 -6
  283. data/ext/apex_ext/apex_src/tests/ial_demo.html +0 -186
  284. data/ext/apex_ext/apex_src/tests/include_code.py +0 -19
  285. data/ext/apex_ext/apex_src/tests/include_snippet.md +0 -15
  286. data/ext/apex_ext/apex_src/tests/metadata_cli_test.sh +0 -119
  287. data/ext/apex_ext/apex_src/tests/multi_file_cli_test.sh +0 -64
  288. data/ext/apex_ext/apex_src/tests/paginate_cli_test.sh +0 -80
  289. data/ext/apex_ext/apex_src/tests/sample_data.csv +0 -7
  290. data/ext/apex_ext/apex_src/tests/table_escaped_ltlt.md +0 -4
  291. data/ext/apex_ext/apex_src/tests/terminal_width_test.sh +0 -29
  292. data/ext/apex_ext/apex_src/tests/test-swift-package.sh +0 -14
  293. data/ext/apex_ext/apex_src/tests/test_basic.c +0 -74
  294. data/ext/apex_ext/apex_src/tests/test_bear_image_attrs.c +0 -301
  295. data/ext/apex_ext/apex_src/tests/test_cmark_callback.c +0 -189
  296. data/ext/apex_ext/apex_src/tests/test_concordance.tsv +0 -4
  297. data/ext/apex_ext/apex_src/tests/test_custom_plugins.c +0 -78
  298. data/ext/apex_ext/apex_src/tests/test_escaping_repro.c +0 -82
  299. data/ext/apex_ext/apex_src/tests/test_extensions.c +0 -3337
  300. data/ext/apex_ext/apex_src/tests/test_helpers.c +0 -183
  301. data/ext/apex_ext/apex_src/tests/test_helpers.h +0 -91
  302. data/ext/apex_ext/apex_src/tests/test_ial.c +0 -289
  303. data/ext/apex_ext/apex_src/tests/test_links.c +0 -418
  304. data/ext/apex_ext/apex_src/tests/test_marked_integration.c +0 -290
  305. data/ext/apex_ext/apex_src/tests/test_metadata.c +0 -1147
  306. data/ext/apex_ext/apex_src/tests/test_output.c +0 -2056
  307. data/ext/apex_ext/apex_src/tests/test_plugins.c +0 -219
  308. data/ext/apex_ext/apex_src/tests/test_refs.bib +0 -31
  309. data/ext/apex_ext/apex_src/tests/test_runner.c +0 -268
  310. data/ext/apex_ext/apex_src/tests/test_syntax_highlight.c +0 -198
  311. data/ext/apex_ext/apex_src/tests/test_tables.c +0 -1298
  312. data/ext/apex_ext/apex_src/tests/update_benchmarks.sh +0 -9
  313. data/ext/apex_ext/apex_src/tests/yaml_test.md +0 -13
  314. data/ext/apex_ext/apex_src/tests.rb +0 -39
  315. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CMakeLists.txt +0 -48
  316. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.c +0 -14
  317. data/ext/apex_ext/apex_src/vendor/cmark-gfm/CheckFileOffsetBits.cmake +0 -43
  318. data/ext/apex_ext/apex_src/vendor/cmark-gfm/FindAsan.cmake +0 -74
  319. data/ext/apex_ext/apex_src/vendor/cmark-gfm/Makefile.nmake +0 -38
  320. data/ext/apex_ext/apex_src/vendor/cmark-gfm/README.md +0 -206
  321. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/CMakeLists.txt +0 -30
  322. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.cpp +0 -15
  323. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/cplusplus.h +0 -16
  324. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.c +0 -111
  325. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/harness.h +0 -35
  326. data/ext/apex_ext/apex_src/vendor/cmark-gfm/api_test/main.c +0 -1169
  327. data/ext/apex_ext/apex_src/vendor/cmark-gfm/appveyor.yml +0 -21
  328. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-flat.md +0 -16
  329. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-bq-nested.md +0 -13
  330. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-code.md +0 -11
  331. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-fences.md +0 -14
  332. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-heading.md +0 -9
  333. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-hr.md +0 -10
  334. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-html.md +0 -32
  335. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-lheading.md +0 -8
  336. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-flat.md +0 -67
  337. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-list-nested.md +0 -36
  338. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-flat.md +0 -15
  339. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/block-ref-nested.md +0 -17
  340. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-autolink.md +0 -14
  341. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-backticks.md +0 -3
  342. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-flat.md +0 -5
  343. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-nested.md +0 -5
  344. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-em-worst.md +0 -5
  345. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-entity.md +0 -11
  346. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-escape.md +0 -15
  347. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-html.md +0 -44
  348. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-flat.md +0 -23
  349. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-links-nested.md +0 -13
  350. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/inline-newlines.md +0 -24
  351. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/lorem1.md +0 -13
  352. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/samples/rawtabs.md +0 -18
  353. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/statistics.py +0 -595
  354. data/ext/apex_ext/apex_src/vendor/cmark-gfm/bench/stats.py +0 -19
  355. data/ext/apex_ext/apex_src/vendor/cmark-gfm/benchmarks.md +0 -33
  356. data/ext/apex_ext/apex_src/vendor/cmark-gfm/changelog.txt +0 -1245
  357. data/ext/apex_ext/apex_src/vendor/cmark-gfm/data/CaseFolding.txt +0 -1495
  358. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/CMakeLists.txt +0 -119
  359. data/ext/apex_ext/apex_src/vendor/cmark-gfm/extensions/ext_scanners.re +0 -92
  360. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/CMakeLists.txt +0 -22
  361. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/README.md +0 -12
  362. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic.c +0 -91
  363. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzz_quadratic_brackets.c +0 -110
  364. data/ext/apex_ext/apex_src/vendor/cmark-gfm/fuzz/fuzzloop.sh +0 -28
  365. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/CMakeLists.txt +0 -10
  366. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/make_man_page.py +0 -133
  367. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man1/cmark-gfm.1 +0 -78
  368. data/ext/apex_ext/apex_src/vendor/cmark-gfm/man/man3/cmark-gfm.3 +0 -1041
  369. data/ext/apex_ext/apex_src/vendor/cmark-gfm/nmake.bat +0 -1
  370. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/CMakeLists.txt +0 -230
  371. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/cmark-gfm_version.h.in +0 -7
  372. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h +0 -38
  373. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/config.h.in +0 -76
  374. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/libcmark-gfm.pc.in +0 -10
  375. data/ext/apex_ext/apex_src/vendor/cmark-gfm/src/scanners.re +0 -365
  376. data/ext/apex_ext/apex_src/vendor/cmark-gfm/suppressions +0 -10
  377. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/CMakeLists.txt +0 -114
  378. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/cmark.cpython-314.pyc +0 -0
  379. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/__pycache__/normalize.cpython-314.pyc +0 -0
  380. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/afl_test_cases/test.md +0 -49
  381. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark-fuzz.c +0 -58
  382. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/cmark.py +0 -105
  383. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/entity_tests.py +0 -67
  384. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-full-info-string.txt +0 -0
  385. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions-table-prefer-style-attributes.txt +0 -38
  386. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/extensions.txt +0 -989
  387. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/fuzzing_dictionary +0 -67
  388. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/normalize.py +0 -194
  389. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/pathological_tests.py +0 -160
  390. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/regression.txt +0 -375
  391. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/roundtrip_tests.py +0 -50
  392. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/run-cmark-fuzz +0 -4
  393. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/smart_punct.txt +0 -177
  394. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec.txt +0 -10212
  395. data/ext/apex_ext/apex_src/vendor/cmark-gfm/test/spec_tests.py +0 -152
  396. data/ext/apex_ext/apex_src/vendor/cmark-gfm/toolchain-mingw32.cmake +0 -17
  397. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/Dockerfile +0 -41
  398. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/appveyor-build.bat +0 -13
  399. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/make_entities_inc.py +0 -32
  400. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/mkcasefold.pl +0 -22
  401. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md.xsl +0 -319
  402. data/ext/apex_ext/apex_src/vendor/cmark-gfm/tools/xml2md_gfm.xsl +0 -80
  403. data/ext/apex_ext/apex_src/vendor/cmark-gfm/why-cmark-and-not-x.md +0 -104
  404. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.js +0 -6
  405. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.py +0 -37
  406. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rb +0 -15
  407. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper.rkt +0 -208
  408. data/ext/apex_ext/apex_src/vendor/cmark-gfm/wrappers/wrapper_ext.py +0 -109
  409. data/ext/apex_ext/apex_src/vendor/libyaml/CMakeLists.txt +0 -160
  410. data/ext/apex_ext/apex_src/vendor/libyaml/Changes +0 -372
  411. data/ext/apex_ext/apex_src/vendor/libyaml/License +0 -20
  412. data/ext/apex_ext/apex_src/vendor/libyaml/Makefile.am +0 -51
  413. data/ext/apex_ext/apex_src/vendor/libyaml/ReadMe.md +0 -46
  414. data/ext/apex_ext/apex_src/vendor/libyaml/announcement.msg +0 -89
  415. data/ext/apex_ext/apex_src/vendor/libyaml/bootstrap +0 -3
  416. data/ext/apex_ext/apex_src/vendor/libyaml/cmake/config.h.in +0 -4
  417. data/ext/apex_ext/apex_src/vendor/libyaml/configure.ac +0 -73
  418. data/ext/apex_ext/apex_src/vendor/libyaml/doc/doxygen.cfg +0 -222
  419. data/ext/apex_ext/apex_src/vendor/libyaml/docker/README.mkd +0 -17
  420. data/ext/apex_ext/apex_src/vendor/libyaml/docker/alpine-3.7 +0 -26
  421. data/ext/apex_ext/apex_src/vendor/libyaml/docker/fedora-25 +0 -26
  422. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-14.04 +0 -29
  423. data/ext/apex_ext/apex_src/vendor/libyaml/docker/ubuntu-16.04 +0 -24
  424. data/ext/apex_ext/apex_src/vendor/libyaml/examples/anchors.yaml +0 -10
  425. data/ext/apex_ext/apex_src/vendor/libyaml/examples/array.yaml +0 -2
  426. data/ext/apex_ext/apex_src/vendor/libyaml/examples/global-tag.yaml +0 -14
  427. data/ext/apex_ext/apex_src/vendor/libyaml/examples/json.yaml +0 -1
  428. data/ext/apex_ext/apex_src/vendor/libyaml/examples/mapping.yaml +0 -2
  429. data/ext/apex_ext/apex_src/vendor/libyaml/examples/numbers.yaml +0 -1
  430. data/ext/apex_ext/apex_src/vendor/libyaml/examples/strings.yaml +0 -7
  431. data/ext/apex_ext/apex_src/vendor/libyaml/examples/tags.yaml +0 -7
  432. data/ext/apex_ext/apex_src/vendor/libyaml/examples/yaml-version.yaml +0 -3
  433. data/ext/apex_ext/apex_src/vendor/libyaml/include/Makefile.am +0 -17
  434. data/ext/apex_ext/apex_src/vendor/libyaml/include/yaml.h +0 -1999
  435. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/ReadMe.md +0 -77
  436. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/Dockerfile +0 -32
  437. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/output/ReadMe +0 -1
  438. data/ext/apex_ext/apex_src/vendor/libyaml/pkg/docker/scripts/libyaml-dist.sh +0 -23
  439. data/ext/apex_ext/apex_src/vendor/libyaml/regression-inputs/clusterfuzz-testcase-minimized-5607885063061504.yml +0 -1
  440. data/ext/apex_ext/apex_src/vendor/libyaml/src/Makefile.am +0 -4
  441. data/ext/apex_ext/apex_src/vendor/libyaml/src/api.c +0 -1393
  442. data/ext/apex_ext/apex_src/vendor/libyaml/src/dumper.c +0 -394
  443. data/ext/apex_ext/apex_src/vendor/libyaml/src/emitter.c +0 -2358
  444. data/ext/apex_ext/apex_src/vendor/libyaml/src/loader.c +0 -544
  445. data/ext/apex_ext/apex_src/vendor/libyaml/src/parser.c +0 -1416
  446. data/ext/apex_ext/apex_src/vendor/libyaml/src/reader.c +0 -469
  447. data/ext/apex_ext/apex_src/vendor/libyaml/src/scanner.c +0 -3598
  448. data/ext/apex_ext/apex_src/vendor/libyaml/src/writer.c +0 -141
  449. data/ext/apex_ext/apex_src/vendor/libyaml/src/yaml_private.h +0 -684
  450. data/ext/apex_ext/apex_src/vendor/libyaml/tests/CMakeLists.txt +0 -27
  451. data/ext/apex_ext/apex_src/vendor/libyaml/tests/Makefile.am +0 -9
  452. data/ext/apex_ext/apex_src/vendor/libyaml/tests/ReadMe.md +0 -63
  453. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor-alt.c +0 -800
  454. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-deconstructor.c +0 -1127
  455. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter-alt.c +0 -217
  456. data/ext/apex_ext/apex_src/vendor/libyaml/tests/example-reformatter.c +0 -202
  457. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-all-tests.sh +0 -29
  458. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-dumper.c +0 -314
  459. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter-test-suite.c +0 -290
  460. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-emitter.c +0 -327
  461. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-loader.c +0 -63
  462. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser-test-suite.c +0 -196
  463. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-parser.c +0 -88
  464. data/ext/apex_ext/apex_src/vendor/libyaml/tests/run-scanner.c +0 -63
  465. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-reader.c +0 -354
  466. data/ext/apex_ext/apex_src/vendor/libyaml/tests/test-version.c +0 -29
  467. data/ext/apex_ext/apex_src/vendor/libyaml/yaml-0.1.pc.in +0 -10
  468. data/ext/apex_ext/apex_src/vendor/libyaml/yamlConfig.cmake.in +0 -16
  469. data/ext/apex_ext/apex_src/xcode_build/CMakeScripts/ReRunCMake.make +0 -74
  470. data/ext/apex_ext/apex_src/xcode_build/CTestTestfile.cmake +0 -22
  471. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Apex +0 -0
  472. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/Resources/Info.plist +0 -44
  473. data/ext/apex_ext/apex_src/xcode_build/Debug/Apex.framework/Versions/A/_CodeSignature/CodeResources +0 -128
  474. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.pbxproj +0 -5118
  475. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  476. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  477. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/project.xcworkspace/xcuserdata/ttscoff.xcuserdatad/WorkspaceSettings.xcsettings +0 -8
  478. data/ext/apex_ext/apex_src/xcode_build/apex.xcodeproj/xcuserdata/ttscoff.xcuserdatad/xcschemes/xcschememanagement.plist +0 -99
  479. data/ext/apex_ext/apex_src/xcode_build/cmake_install.cmake +0 -452
  480. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/CMakeScripts/ReRunCMake.make +0 -52
  481. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmake_install.cmake +0 -55
  482. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.pbxproj +0 -2455
  483. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/cmark-gfm.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  484. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/extensions/cmake_install.cmake +0 -171
  485. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/man/cmake_install.cmake +0 -55
  486. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmake_install.cmake +0 -220
  487. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_export.h +0 -43
  488. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/cmark-gfm_version.h +0 -7
  489. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/config.h +0 -76
  490. data/ext/apex_ext/apex_src/xcode_build/vendor/cmark-gfm/src/libcmark-gfm.pc +0 -10
@@ -1,4222 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
-
6
- <meta charset="UTF-8">
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
- <meta name="generator" content="Apex 1.1.12">
9
- <title>Document</title>
10
- <style>
11
- /* GitHub-style syntax highlighting for Pygments and Skylighting */
12
- /* Don't apply background to wrapper when code highlighting is enabled - let default styles handle it */
13
- .code-highlighted .highlight, .code-highlighted .sourceCode { background: inherit; border-radius: 6px; padding: 16px; overflow-x: auto; }
14
- .highlight pre, .sourceCode pre { margin: 0; padding: 0; background: transparent; }
15
- .highlight code, .sourceCode code { font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 12px; line-height: 1.45; }
16
- /* Pygments classes */
17
- .highlight .k { color: #d73a49; font-weight: 600; } /* Keyword */
18
- .highlight .kt { color: #d73a49; } /* Keyword.Type */
19
- .highlight .kd { color: #d73a49; font-weight: 600; } /* Keyword.Declaration */
20
- .highlight .kn { color: #d73a49; } /* Keyword.Namespace */
21
- .highlight .kp { color: #d73a49; } /* Keyword.Pseudo */
22
- .highlight .kr { color: #d73a49; font-weight: 600; } /* Keyword.Reserved */
23
- .highlight .n { color: #6f42c1; } /* Name */
24
- .highlight .na { color: #6f42c1; } /* Name.Attribute */
25
- .highlight .nc { color: #6f42c1; font-weight: 600; } /* Name.Class */
26
- .highlight .no { color: #005cc5; } /* Name.Constant */
27
- .highlight .nd { color: #6f42c1; font-weight: 600; } /* Name.Decorator */
28
- .highlight .ni { color: #800080; } /* Name.Entity */
29
- .highlight .ne { color: #990000; font-weight: 600; } /* Name.Exception */
30
- .highlight .nf { color: #6f42c1; font-weight: 600; } /* Name.Function */
31
- .highlight .nl { color: #6f42c1; } /* Name.Label */
32
- .highlight .nn { color: #555; } /* Name.Namespace */
33
- .highlight .nt { color: #22863a; } /* Name.Tag */
34
- .highlight .nv { color: #e36209; } /* Name.Variable */
35
- .highlight .s { color: #032f62; } /* String */
36
- .highlight .sb { color: #032f62; } /* String.Backtick */
37
- .highlight .sc { color: #032f62; } /* String.Char */
38
- .highlight .sd { color: #032f62; } /* String.Doc */
39
- .highlight .s2 { color: #032f62; } /* String.Double */
40
- .highlight .se { color: #032f62; } /* String.Escape */
41
- .highlight .sh { color: #032f62; } /* String.Heredoc */
42
- .highlight .si { color: #032f62; } /* String.Interpol */
43
- .highlight .sx { color: #032f62; } /* String.Other */
44
- .highlight .sr { color: #032f62; } /* String.Regex */
45
- .highlight .s1 { color: #032f62; } /* String.Single */
46
- .highlight .ss { color: #032f62; } /* String.Symbol */
47
- .highlight .c { color: #6a737d; font-style: italic; } /* Comment */
48
- .highlight .c1 { color: #6a737d; font-style: italic; } /* Comment.Single */
49
- .highlight .cm { color: #6a737d; font-style: italic; } /* Comment.Multiline */
50
- .highlight .cp { color: #6a737d; font-weight: 600; } /* Comment.Preproc */
51
- .highlight .cs { color: #6a737d; font-weight: 600; font-style: italic; } /* Comment.Special */
52
- .highlight .m { color: #005cc5; } /* Literal.Number */
53
- .highlight .mb { color: #005cc5; } /* Literal.Number.Bin */
54
- .highlight .mf { color: #005cc5; } /* Literal.Number.Float */
55
- .highlight .mh { color: #005cc5; } /* Literal.Number.Hex */
56
- .highlight .mi { color: #005cc5; } /* Literal.Number.Integer */
57
- .highlight .il { color: #005cc5; } /* Literal.Number.Integer.Long */
58
- .highlight .mo { color: #005cc5; } /* Literal.Number.Oct */
59
- .highlight .o { color: #d73a49; } /* Operator */
60
- .highlight .ow { color: #d73a49; } /* Operator.Word */
61
- .highlight .p { color: #24292e; } /* Punctuation */
62
- .highlight .w { color: #e1e4e8; } /* Text.Whitespace */
63
- /* Skylighting classes */
64
- .sourceCode .kw { color: #d73a49; font-weight: 600; } /* Keyword */
65
- .sourceCode .dt { color: #6f42c1; } /* DataType */
66
- .sourceCode .dv { color: #005cc5; } /* DecVal */
67
- .sourceCode .bn { color: #005cc5; } /* BaseN */
68
- .sourceCode .fl { color: #005cc5; } /* Float */
69
- .sourceCode .ch { color: #032f62; } /* Char */
70
- .sourceCode .st { color: #032f62; } /* String */
71
- .sourceCode .co { color: #6a737d; font-style: italic; } /* Comment */
72
- .sourceCode .ot { color: #22863a; } /* Other */
73
- .sourceCode .al { color: #e36209; font-weight: 600; } /* Alert */
74
- .sourceCode .fu { color: #6f42c1; font-weight: 600; } /* Function */
75
- .sourceCode .re { color: #032f62; } /* RegionMarker */
76
- .sourceCode .er { color: #d73a49; font-weight: 600; } /* Error */
77
- .sourceCode .cf { color: #d73a49; font-weight: 600; } /* ControlFlow */
78
- .sourceCode .op { color: #d73a49; } /* Operator */
79
- .sourceCode .pp { color: #6a737d; } /* Preprocessor */
80
- .sourceCode .at { color: #005cc5; } /* Attribute */
81
- .sourceCode .do { color: #6a737d; font-style: italic; } /* Documentation */
82
- .sourceCode .an { color: #6a737d; font-weight: 600; } /* Annotation */
83
- .sourceCode .cv { color: #6a737d; font-weight: 600; font-style: italic; } /* CommentVar */
84
- .sourceCode .in { color: #6a737d; } /* Information */
85
- .sourceCode .wa { color: #e36209; font-weight: 600; } /* Warning */
86
- .sourceCode .im { color: #d73a49; } /* Import */
87
- .sourceCode .bu { color: #005cc5; } /* BuiltIn */
88
- .sourceCode .ex { color: #6f42c1; } /* Extension */
89
- .sourceCode .va { color: #e36209; } /* Variable */
90
- .sourceCode .ss { color: #032f62; } /* SpecialString */
91
- .sourceCode .sc { color: #032f62; } /* SpecialChar */
92
- .sourceCode .vs { color: #032f62; } /* VerbatimString */
93
- .sourceCode .il { color: #005cc5; } /* Special */
94
- /* Line numbers (Skylighting) */
95
- .sourceCode.numberSource .sourceCode { counter-reset: line; }
96
- .sourceCode.numberSource .sourceCode > span { position: relative; left: -4em; counter-increment: line; }
97
- .sourceCode.numberSource .sourceCode > span > a:first-child::before { content: counter(line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; min-width: 1em; padding-right: 0.5em; color: #aaa; }
98
- </style>
99
- <style>
100
- body {
101
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
102
- line-height: 1.6;
103
- max-width: 800px;
104
- margin: 2rem auto;
105
- padding: 0 1rem;
106
- color: #333;
107
- }
108
- pre { background: #f5f5f5; padding: 1rem; overflow-x: auto; }
109
- code { background: #f0f0f0; padding: 0.2em 0.4em; border-radius: 3px; }
110
- blockquote { border-left: 4px solid #ddd; margin: 0; padding-left: 1rem; color: #666; }
111
- table { border-collapse: collapse; width: 100%%; }
112
- th, td { border: 1px solid #ddd; padding: 0.5rem; }
113
- th { background: #f5f5f5; }
114
- tfoot td { background: #e8e8e8; }
115
- figure.table-figure { width: fit-content; margin: 1em 0; }
116
- figure.table-figure table { width: auto; }
117
- figcaption { text-align: center; font-weight: bold; font-size: 0.8em; }
118
- .page-break { page-break-after: always; }
119
- .callout { padding: 1rem; margin: 1rem 0; border-left: 4px solid; }
120
- .callout-note { border-color: #3b82f6; background: #eff6ff; }
121
- .callout-warning { border-color: #f59e0b; background: #fffbeb; }
122
- .callout-tip { border-color: #10b981; background: #f0fdf4; }
123
- .callout-danger { border-color: #ef4444; background: #fef2f2; }
124
- ins { background: #d4fcbc; text-decoration: none; }
125
- del { background: #fbb6c2; text-decoration: line-through; }
126
- mark { background: #fff3cd; }
127
- .smallcaps { font-variant: small-caps; }
128
- .underline { text-decoration: underline; }
129
- span.mark { background: #fff3cd; }
130
- .hidden { display: none; }
131
- .quarto-xref { font-variant: normal; }
132
- .critic.comment { background: #e7e7e7; color: #666; font-style: italic; }
133
- .mkhashtag { color: #666; }
134
- .mkstyledtag {
135
- display: inline-block;
136
- background: #e0e0e0;
137
- padding: 3px 9px;
138
- border-radius: 20px;
139
- font-size: 0.9em;
140
- line-height: 1.4;
141
- color: #333;
142
- margin: 0 2px;
143
- }
144
- </style>
145
- <meta name="paginate" content="symbols"/>
146
- <meta name="highlight-language-only" content="true"/>
147
- <meta name="code-line-numbers" content="false"/>
148
- <meta name="code-highlight" content="pygments"/>
149
- <meta name="sup-sub" content="true"/>
150
- <meta name="relaxed-tables" content="true"/>
151
- <meta name="includes" content="true"/>
152
- <meta name="autolink" content="true"/>
153
- <meta name="pretty" content="false"/>
154
- <meta name="standalone" content="false"/>
155
- <meta name="mode" content="unified"/>
156
- <meta name="markdown-in-html" content="true"/>
157
- <meta name="image-captions" content="true"/>
158
- <meta name="wikilink-extension" content="html"/>
159
- <meta name="wikilink-space" content="hyphen"/>
160
- <meta name="wikilinks" content="true"/>
161
- <meta name="widont" content="true"/>
162
- <meta name="plugins" content="true"/>
163
- <meta name="id-format" content="gfm"/>
164
-
165
- <style>
166
- :root {
167
- /* border-box width of the fixed sidebar; body offset includes a small gap */
168
- --sidebar-width: 250px;
169
- --sidebar-offset: 270px;
170
- }
171
-
172
- /* Base styles — override Apex standalone centering (max-width + margin: auto) */
173
- body {
174
- -webkit-font-smoothing: antialiased;
175
- -moz-osx-font-smoothing: grayscale;
176
- font-size: 17px;
177
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
178
- "Helvetica Neue", Arial, sans-serif;
179
- line-height: 1.65;
180
- color: #1e293b;
181
- background-color: #fff;
182
- max-width: none;
183
- width: auto;
184
- margin: 2rem 2rem 2rem var(--sidebar-offset);
185
- padding: 0 1rem;
186
- box-sizing: border-box;
187
- }
188
-
189
- /* Sidebar / Main TOC - wider on larger screens */
190
- .main-toc,
191
- .sidebar {
192
- position: fixed;
193
- left: 0;
194
- top: 0;
195
- box-sizing: border-box;
196
- width: var(--sidebar-width);
197
- min-width: var(--sidebar-width);
198
- max-width: var(--sidebar-width);
199
- height: 100vh;
200
- overflow-y: auto;
201
- background: #1e293b;
202
- color: rgba(255, 255, 255, 0.9);
203
- border-right: 2px solid rgba(255, 255, 255, 0.1);
204
- padding: 24px 20px 130px;
205
- font-size: 14px;
206
- z-index: 100;
207
- box-shadow: 4px 0 24px rgba(0, 0, 0, 0.08);
208
- transition: transform 0.3s ease;
209
- }
210
-
211
- .main-toc ul,
212
- .sidebar ul {
213
- list-style: none;
214
- padding-left: 0;
215
- margin: 0;
216
- padding-bottom: 80px;
217
- }
218
-
219
- .main-toc ul::after,
220
- .sidebar ul::after {
221
- content: "";
222
- display: block;
223
- height: 80px;
224
- }
225
-
226
- .main-toc li,
227
- .sidebar li {
228
- margin: 0.25em 0;
229
- }
230
-
231
- .main-toc a,
232
- .sidebar a {
233
- color: rgba(255, 255, 255, 0.85);
234
- text-decoration: none;
235
- display: block;
236
- padding: 6px 12px;
237
- border-radius: 4px;
238
- transition: all 0.15s ease;
239
- white-space: nowrap;
240
- overflow: hidden;
241
- text-overflow: ellipsis;
242
- }
243
-
244
- .main-toc a:hover,
245
- .sidebar a:hover {
246
- background: #334155;
247
- color: #fff;
248
- }
249
-
250
- .sidebar a.active {
251
- color: #0ea5e9;
252
- font-weight: 500;
253
- }
254
-
255
- /* Hamburger menu button */
256
- .hamburger-menu {
257
- display: none;
258
- position: fixed;
259
- top: 12px;
260
- left: 12px;
261
- z-index: 200;
262
- background: #1e293b;
263
- border: 2px solid rgba(255, 255, 255, 0.1);
264
- border-radius: 6px;
265
- padding: 10px;
266
- cursor: pointer;
267
- color: rgba(255, 255, 255, 0.9);
268
- font-size: 20px;
269
- line-height: 1;
270
- box-sizing: border-box;
271
- width: 44px;
272
- height: 44px;
273
- align-items: center;
274
- justify-content: center;
275
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
276
- transition: all 0.2s ease;
277
- opacity: 0.2;
278
- }
279
-
280
- .hamburger-menu:hover {
281
- background: #334155;
282
- color: #fff;
283
- opacity: 1;
284
- }
285
-
286
- /* Move hamburger to the right of the sidebar when menu is open */
287
- .hamburger-menu.active {
288
- left: calc(var(--sidebar-width) + 12px);
289
- }
290
-
291
- .hamburger-menu.active {
292
- background: #0ea5e9;
293
- }
294
-
295
- .hamburger-menu::before {
296
- content: "☰";
297
- }
298
-
299
- .hamburger-menu.active::before {
300
- content: "✕";
301
- }
302
-
303
- /* Mobile menu overlay */
304
- .mobile-menu-overlay {
305
- display: none;
306
- position: fixed;
307
- top: 0;
308
- left: 0;
309
- right: 0;
310
- bottom: 0;
311
- background: rgba(0, 0, 0, 0.5);
312
- z-index: 150;
313
- opacity: 0;
314
- visibility: hidden;
315
- transition: opacity 0.3s ease, visibility 0.3s ease;
316
- }
317
-
318
- .mobile-menu-overlay.active {
319
- opacity: 1;
320
- visibility: visible;
321
- }
322
-
323
- /* Page TOC */
324
- .page-toc {
325
- background: #f9f9f9;
326
- border: 1px solid #ddd;
327
- border-radius: 4px;
328
- padding: 1rem;
329
- margin: 1.5rem 0;
330
- }
331
-
332
- .page-toc ul {
333
- list-style: none;
334
- padding-left: 0;
335
- margin: 0;
336
- }
337
-
338
- .page-toc > ul {
339
- padding-left: 0;
340
- }
341
-
342
- .page-toc li {
343
- margin: 0.25em 0;
344
- }
345
-
346
- .page-toc a {
347
- color: #0066cc;
348
- text-decoration: none;
349
- display: block;
350
- padding: 0.25em 0.5em;
351
- border-radius: 3px;
352
- }
353
-
354
- .page-toc a:hover {
355
- background: #e0e0e0;
356
- color: #004499;
357
- }
358
-
359
- .page-toc ul ul {
360
- list-style: none;
361
- padding-left: 1.5em;
362
- margin-top: 0.25em;
363
- margin-left: 0;
364
- }
365
-
366
- .page-toc ul ul ul {
367
- padding-left: 1.5em;
368
- }
369
-
370
- .page-toc ul ul a {
371
- font-size: 0.9em;
372
- color: #555;
373
- }
374
-
375
- .page-toc ul ul ul a {
376
- font-size: 0.85em;
377
- color: #666;
378
- }
379
-
380
- /* Floating TOC */
381
- .floating-toc {
382
- position: fixed;
383
- top: 0;
384
- left: var(--sidebar-offset);
385
- right: 0;
386
- z-index: 50;
387
- opacity: 0;
388
- visibility: hidden;
389
- transition: opacity 0.2s ease, visibility 0.2s ease;
390
- pointer-events: none;
391
- display: flex;
392
- justify-content: flex-end;
393
- padding-right: 2rem;
394
- }
395
-
396
- .floating-toc.visible {
397
- opacity: 1;
398
- visibility: visible;
399
- pointer-events: auto;
400
- }
401
-
402
- .floating-toc-container {
403
- background: rgba(255, 255, 255, 0.95);
404
- backdrop-filter: blur(10px);
405
- border-bottom: 1px solid #ddd;
406
- border-radius: 0 0 12px 12px;
407
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
408
- width: fit-content;
409
- max-width: 400px;
410
- min-width: 200px;
411
- overflow: hidden;
412
- transition: max-height 0.3s ease;
413
- }
414
-
415
- .floating-toc-header {
416
- padding: 8px 16px;
417
- cursor: pointer;
418
- user-select: none;
419
- font-size: 14px;
420
- font-weight: 500;
421
- color: #1e293b;
422
- display: flex;
423
- align-items: center;
424
- justify-content: space-between;
425
- }
426
-
427
- .floating-toc-header:hover {
428
- background: rgba(0, 0, 0, 0.02);
429
- }
430
-
431
- .floating-toc-content {
432
- max-height: 0;
433
- overflow: hidden;
434
- transition: max-height 0.3s ease;
435
- }
436
-
437
- .floating-toc-container:hover .floating-toc-content {
438
- max-height: 70vh;
439
- overflow-y: auto;
440
- }
441
-
442
- .floating-toc-content ul {
443
- list-style: none;
444
- padding: 8px 16px 16px;
445
- margin: 0;
446
- }
447
-
448
- .floating-toc-content li {
449
- margin: 0.1em 0;
450
- }
451
-
452
- .floating-toc-content a {
453
- color: #0066cc;
454
- text-decoration: none;
455
- display: block;
456
- padding: 0.2em 0.5em;
457
- border-radius: 4px;
458
- font-size: 13px;
459
- transition: background 0.15s ease;
460
- }
461
-
462
- .floating-toc-content a:hover {
463
- background: #e0e0e0;
464
- color: #004499;
465
- }
466
-
467
- .floating-toc-content ul ul {
468
- padding-left: 1.2em;
469
- margin-top: 0;
470
- margin-bottom: 0;
471
- }
472
-
473
- .floating-toc-content ul ul ul {
474
- margin-top: 0;
475
- margin-bottom: 0;
476
- }
477
-
478
- .floating-toc-content ul ul a {
479
- font-size: 12px;
480
- color: #555;
481
- }
482
-
483
- .floating-toc-content ul ul ul a {
484
- font-size: 11px;
485
- color: #666;
486
- }
487
-
488
- /* Smooth scrolling */
489
- html {
490
- scroll-behavior: smooth;
491
- }
492
-
493
- /* Code blocks */
494
- code {
495
- background: #f0f0f0;
496
- padding: 0.2em 0.4em;
497
- border-radius: 3px;
498
- font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
499
- font-size: 0.9em;
500
- margin: 0 0.1em;
501
- }
502
-
503
- pre {
504
- background: #f5f5f5;
505
- padding: 1rem;
506
- overflow-x: auto;
507
- border-radius: 4px;
508
- margin: 1em 0;
509
- }
510
-
511
- pre code {
512
- background: none;
513
- padding: 0;
514
- margin: 0;
515
- }
516
-
517
- /* Rouge syntax highlighting - GitHub theme, scoped to .highlight containers */
518
- .highlight {
519
- color: #24292e;
520
- }
521
-
522
- .highlight .c {
523
- color: #6a737d;
524
- font-style: italic;
525
- } /* Comment */
526
- .highlight .err {
527
- color: #a61717;
528
- background-color: #e3d2d2;
529
- } /* Error */
530
- .highlight .k {
531
- color: #d73a49;
532
- font-weight: bold;
533
- } /* Keyword */
534
- .highlight .l {
535
- color: #032f62;
536
- } /* Literal */
537
- .highlight .n {
538
- color: #24292e;
539
- } /* Name */
540
- .highlight .o {
541
- color: #d73a49;
542
- } /* Operator */
543
- .highlight .p {
544
- color: #24292e;
545
- } /* Punctuation */
546
- .highlight .cm {
547
- color: #6a737d;
548
- font-style: italic;
549
- } /* Comment.Multiline */
550
- .highlight .cp {
551
- color: #6a737d;
552
- font-weight: bold;
553
- } /* Comment.Preproc */
554
- .highlight .c1 {
555
- color: #6a737d;
556
- font-style: italic;
557
- } /* Comment.Single */
558
- .highlight .cs {
559
- color: #6a737d;
560
- font-weight: bold;
561
- font-style: italic;
562
- } /* Comment.Special */
563
- .highlight .gd {
564
- color: #24292e;
565
- background-color: #ffeef0;
566
- } /* Generic.Deleted */
567
- .highlight .ge {
568
- color: #24292e;
569
- font-style: italic;
570
- } /* Generic.Emph */
571
- .highlight .gr {
572
- color: #aa0000;
573
- } /* Generic.Error */
574
- .highlight .gh {
575
- color: #999999;
576
- font-weight: bold;
577
- } /* Generic.Heading */
578
- .highlight .gi {
579
- color: #24292e;
580
- background-color: #f0fff4;
581
- } /* Generic.Inserted */
582
- .highlight .go {
583
- color: #888888;
584
- } /* Generic.Output */
585
- .highlight .gp {
586
- color: #555555;
587
- } /* Generic.Prompt */
588
- .highlight .gs {
589
- font-weight: bold;
590
- } /* Generic.Strong */
591
- .highlight .gu {
592
- color: #aaaaaa;
593
- } /* Generic.Subheading */
594
- .highlight .gt {
595
- color: #aa0000;
596
- } /* Generic.Traceback */
597
- .highlight .kc {
598
- color: #d73a49;
599
- font-weight: bold;
600
- } /* Keyword.Constant */
601
- .highlight .kd {
602
- color: #d73a49;
603
- font-weight: bold;
604
- } /* Keyword.Declaration */
605
- .highlight .kn {
606
- color: #d73a49;
607
- font-weight: bold;
608
- } /* Keyword.Namespace */
609
- .highlight .kp {
610
- color: #d73a49;
611
- font-weight: bold;
612
- } /* Keyword.Pseudo */
613
- .highlight .kr {
614
- color: #d73a49;
615
- font-weight: bold;
616
- } /* Keyword.Reserved */
617
- .highlight .kt {
618
- color: #d73a49;
619
- font-weight: bold;
620
- } /* Keyword.Type */
621
- .highlight .ld {
622
- color: #032f62;
623
- } /* Literal.Date */
624
- .highlight .m {
625
- color: #005cc5;
626
- } /* Literal.Number */
627
- .highlight .s {
628
- color: #032f62;
629
- } /* Literal.String */
630
- .highlight .na {
631
- color: #6f42c1;
632
- } /* Name.Attribute */
633
- .highlight .nb {
634
- color: #005cc5;
635
- } /* Name.Builtin */
636
- .highlight .nc {
637
- color: #6f42c1;
638
- font-weight: bold;
639
- } /* Name.Class */
640
- .highlight .no {
641
- color: #005cc5;
642
- } /* Name.Constant */
643
- .highlight .nd {
644
- color: #6f42c1;
645
- font-weight: bold;
646
- } /* Name.Decorator */
647
- .highlight .ni {
648
- color: #800080;
649
- } /* Name.Entity */
650
- .highlight .ne {
651
- color: #990000;
652
- font-weight: bold;
653
- } /* Name.Exception */
654
- .highlight .nf {
655
- color: #6f42c1;
656
- } /* Name.Function */
657
- .highlight .nl {
658
- color: #990000;
659
- } /* Name.Label */
660
- .highlight .nn {
661
- color: #555555;
662
- } /* Name.Namespace */
663
- .highlight .nx {
664
- color: #6f42c1;
665
- } /* Name.Other */
666
- .highlight .py {
667
- color: #990000;
668
- } /* Name.Property */
669
- .highlight .nt {
670
- color: #22863a;
671
- } /* Name.Tag */
672
- .highlight .nv {
673
- color: #e36209;
674
- } /* Name.Variable */
675
- .highlight .ow {
676
- color: #d73a49;
677
- font-weight: bold;
678
- } /* Operator.Word */
679
- .highlight .w {
680
- color: #bbbbbb;
681
- } /* Text.Whitespace */
682
- .highlight .mf {
683
- color: #005cc5;
684
- } /* Literal.Number.Float */
685
- .highlight .mh {
686
- color: #005cc5;
687
- } /* Literal.Number.Hex */
688
- .highlight .mi {
689
- color: #005cc5;
690
- } /* Literal.Number.Integer */
691
- .highlight .mo {
692
- color: #005cc5;
693
- } /* Literal.Number.Oct */
694
- .highlight .sb {
695
- color: #032f62;
696
- } /* Literal.String.Backtick */
697
- .highlight .sc {
698
- color: #032f62;
699
- } /* Literal.String.Char */
700
- .highlight .sd {
701
- color: #032f62;
702
- } /* Literal.String.Doc */
703
- .highlight .s2 {
704
- color: #032f62;
705
- } /* Literal.String.Double */
706
- .highlight .se {
707
- color: #032f62;
708
- } /* Literal.String.Escape */
709
- .highlight .sh {
710
- color: #032f62;
711
- } /* Literal.String.Heredoc */
712
- .highlight .si {
713
- color: #032f62;
714
- } /* Literal.String.Interpol */
715
- .highlight .sx {
716
- color: #032f62;
717
- } /* Literal.String.Other */
718
- .highlight .sr {
719
- color: #22863a;
720
- } /* Literal.String.Regex */
721
- .highlight .s1 {
722
- color: #032f62;
723
- } /* Literal.String.Single */
724
- .highlight .ss {
725
- color: #032f62;
726
- } /* Literal.String.Symbol */
727
- .highlight .bp {
728
- color: #005cc5;
729
- } /* Name.Builtin.Pseudo */
730
- .highlight .vc {
731
- color: #e36209;
732
- } /* Name.Variable.Class */
733
- .highlight .vg {
734
- color: #e36209;
735
- } /* Name.Variable.Global */
736
- .highlight .vi {
737
- color: #e36209;
738
- } /* Name.Variable.Instance */
739
- .highlight .il {
740
- color: #005cc5;
741
- } /* Literal.Number.Integer.Long */
742
-
743
- /* Additional Rouge token classes that may be used */
744
- .highlight .token {
745
- color: #5670a0;
746
- }
747
- .highlight .token.list {
748
- color: #546e9f;
749
- }
750
- .highlight .token.punctuation {
751
- color: #3e8dad;
752
- }
753
- .highlight .token.list.punctuation {
754
- color: #e05b78;
755
- }
756
- .highlight .token.content {
757
- padding: 0;
758
- }
759
-
760
- /* Nested lists in page content */
761
- ul ul,
762
- ol ol,
763
- ul ol,
764
- ol ul {
765
- padding-left: 1.5em;
766
- margin-top: 0.25em;
767
- }
768
-
769
- /* Page footer */
770
- .page-footer {
771
- background: #f5f5f5;
772
- border-top: 1px solid #ddd;
773
- padding: 1.5rem;
774
- margin-top: 3rem;
775
- color: #666;
776
- font-size: 0.9em;
777
- }
778
-
779
- .page-footer p {
780
- margin: 0.5em 0;
781
- }
782
-
783
- .page-footer a {
784
- color: #0066cc;
785
- text-decoration: none;
786
- }
787
-
788
- .page-footer a:hover {
789
- text-decoration: underline;
790
- }
791
-
792
- /* Mobile responsive */
793
- @media (max-width: 768px) {
794
- .hamburger-menu {
795
- display: flex;
796
- }
797
-
798
- .main-toc,
799
- .sidebar {
800
- transform: translateX(-100%);
801
- z-index: 175;
802
- }
803
-
804
- .main-toc.mobile-open,
805
- .sidebar.mobile-open {
806
- transform: translateX(0);
807
- }
808
-
809
- body {
810
- margin: 2rem 1rem;
811
- }
812
-
813
- .floating-toc {
814
- left: 0;
815
- }
816
- }
817
-
818
- </style></head>
819
-
820
- <body class="code-highlighted">
821
- <div class="floating-toc" id="floating-toc">
822
- <div class="floating-toc-container">
823
- <div class="floating-toc-header">
824
- <span>Table of Contents 🔻</span>
825
- </div>
826
- <div class="floating-toc-content" id="floating-toc-content">
827
- <!-- Content will be populated by JavaScript -->
828
- </div>
829
- </div>
830
- </div>
831
-
832
- <button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle navigation"></button>
833
- <div class="mobile-menu-overlay" id="mobile-menu-overlay"></div>
834
-
835
- <nav class="main-toc"><ul><li><a href="Home.html">Home</a></li><li><a href="Getting-Started.html">Getting Started</a></li><li><a href="Installation.html">Installation</a></li><li><a href="Usage.html">Usage</a></li><li><a href="Syntax.html">Syntax</a></li><li><a href="Callouts.html">Callouts</a></li><li><a href="Tables.html">Tables</a></li><li><a href="Inline-Attribute-Lists.html">Inline Attribute Lists</a></li><li><a href="Modes.html">Modes</a></li><li><a href="Quarto-Mode.html">Quarto Mode</a></li><li><a href="Command-Line-Options.html">Command Line Options</a></li><li><a href="Rendering-Markdown-In-Terminal.html">Rendering Markdown in the Terminal</a></li><li><a href="Generating-Man-Pages.html">Generating Man Pages</a></li><li><a href="Multi-File-Documents.html">Multi-file Documents</a></li><li><a href="Citations.html">Citations</a></li><li><a href="Indices.html">Indices</a></li><li><a href="Metadata-Transforms.html">Metadata Transforms</a></li><li><a href="Pandoc-Integration.html">Integrating with Pandoc</a></li><li><a href="Using-Apex-with-Jekyll.html">Using Apex with Jekyll</a></li><li><a href="Header-IDs.html">Header IDs</a></li><li><a href="C-API.html">C API</a></li><li><a href="Writing-Tests.html">Writing Tests</a></li><li><a href="Xcode-Integration.html">Xcode Integration</a></li><li><a href="Examples.html">Examples</a></li><li><a href="Plugins.html">Plugins</a></li><li><a href="Filters.html">Filters</a></li><li><a href="Troubleshooting.html">Troubleshooting</a></li><li><a href="Credits.html">Credits</a></li></ul></nav>
836
-
837
- <h1 id="syntax-reference">
838
- Syntax&nbsp;Reference
839
- </h1>
840
- <nav class="page-toc" id="page-toc-top"><ul><li><a href="#syntax-reference">Syntax&nbsp;Reference</a><ul><li><a href="#basic-markdown">Basic&nbsp;Markdown</a><ul><li><a href="#headers">Headers</a></li><li><a href="#emphasis">Emphasis</a></li><li><a href="#strikethrough">Strikethrough</a></li><li><a href="#superscript-and-subscript">Superscript and&nbsp;Subscript</a></li><li><a href="#lists">Lists</a></li><li><a href="#links-and-images">Links&nbsp;and&nbsp;Images</a></li><li><a href="#image-captions-figure-figcaption">Image captions (figure /&nbsp;figcaption)</a></li><li><a href="#code">Code</a></li><li><a href="#blockquotes">Blockquotes</a></li><li><a href="#horizontal-rules">Horizontal&nbsp;Rules</a></li></ul></li><li><a href="#tables">Tables</a><ul><li><a href="#quick-reference">Quick&nbsp;Reference</a></li><li><a href="#basic-example">Basic&nbsp;Example</a></li></ul></li><li><a href="#footnotes">` and ` ` (default in unified/MMD).>Footnotes</a><ul><li><a href="#reference-style">Reference&nbsp;Style</a></li><li><a href="#inline-style-kramdown">Inline Style&nbsp;(Kramdown)</a></li><li><a href="#inline-style-multimarkdown">Inline Style&nbsp;(MultiMarkdown)</a></li></ul></li><li><a href="#definition-lists">Definition&nbsp;Lists</a></li><li><a href="#citations">Citations</a><ul><li><a href="#pandoc-citation-syntax">Pandoc Citation&nbsp;Syntax</a></li><li><a href="#multimarkdown-citation-syntax">MultiMarkdown Citation&nbsp;Syntax</a></li><li><a href="#mmark-citation-syntax">mmark Citation&nbsp;Syntax</a></li><li><a href="#bibliography">Bibliography</a></li></ul></li><li><a href="#indices">Indices</a><ul><li><a href="#mmark-index-syntax">mmark Index&nbsp;Syntax</a></li><li><a href="#textindex-syntax">TextIndex&nbsp;Syntax</a></li><li><a href="#leanpub-index-syntax">Leanpub Index&nbsp;Syntax</a></li><li><a href="#index-generation">Index&nbsp;Generation</a></li></ul></li><li><a href="#math">Math</a></li><li><a href="#wiki-links">Wiki&nbsp;Links</a><ul><li><a href="#syntax">Syntax</a></li><li><a href="#conversion-process">Conversion&nbsp;Process</a></li><li><a href="#space-handling-options">Space Handling&nbsp;Options</a></li><li><a href="#file-extensions">File&nbsp;Extensions</a></li><li><a href="#examples">Examples</a></li></ul></li><li><a href="#critic-markup">Critic&nbsp;Markup</a></li><li><a href="#callouts">Callouts</a></li><li><a href="#file-includes">File&nbsp;Includes</a><ul><li><a href="#generatesinglehtmlrb">generate_single_html.rb</a></li><li><a href="#generateappdocsrb">generate_app_docs.rb</a></li><li><a href="#generateappdocsairb">generate_app_docs_ai.rb</a></li></ul></li><li><a href="#requirements">Requirements</a></li><li><a href="#directory-structure">Directory&nbsp;Structure</a></li><li><a href="#how-it-works">How&nbsp;It&nbsp;Works</a><ul><li><a href="#standard-documentation-generation">Standard Documentation&nbsp;Generation</a></li><li><a href="#ai-transformation-workflow">AI Transformation&nbsp;Workflow</a></li><li><a href="#custom-csvtsv-delimiters-in-includes">Custom CSV/TSV Delimiters in&nbsp;Includes</a></li><li><a href="#address-syntax-for-file-includes">Address Syntax for File&nbsp;Includes</a></li><li><a href="#address-syntax-for-file-includes">Address Syntax for File&nbsp;Includes</a></li></ul></li><li><a href="#metadata">Metadata</a><ul><li><a href="#yaml-front-matter">YAML Front&nbsp;Matter</a></li><li><a href="#multimarkdown-metadata">MultiMarkdown&nbsp;Metadata</a></li><li><a href="#pandoc-title-block">Pandoc Title&nbsp;Block</a></li><li><a href="#metadata-variables">Metadata&nbsp;Variables</a></li></ul></li><li><a href="#abbreviations">Abbreviations</a></li><li><a href="#inline-attribute-lists-ial">Inline Attribute Lists&nbsp;(IAL)</a></li><li><a href="#table-of-contents">Table of&nbsp;Contents</a></li><li><a href="#smart-typography">Smart&nbsp;Typography</a></li><li><a href="#github-emoji">GitHub&nbsp;Emoji</a></li><li><a href="#special-markers">Special&nbsp;Markers</a></li><li><a href="#html">HTML</a><ul><li><a href="#markdown-inside-html-blocks">Markdown Inside HTML&nbsp;Blocks</a></li><li><a href="#pandoc-fenced-divs">Pandoc Fenced&nbsp;Divs</a></li></ul></li><li><a href="#related">Related</a></li></ul></li><li><a href="#index-section">Index</a></li></ul></nav>
841
-
842
- <p>
843
- This page documents all syntax features available in <strong>unified mode</strong>. For mode-specific syntax, see <a href="Modes.html">Modes</a>.
844
- </p>
845
-
846
- <h2 id="basic-markdown">
847
- Basic&nbsp;Markdown
848
- </h2>
849
-
850
- <h3 id="headers">
851
- Headers
852
- </h3>
853
-
854
- <p>
855
- <strong>ATX-style headers:</strong>
856
- </p>
857
-
858
- <div class="highlight">
859
- <pre><span></span><span class="gh"># H1</span>
860
- <span class="gu">## H2</span>
861
- <span class="gu">### H3</span>
862
- <span class="gu">#### H4</span>
863
- <span class="gu">##### H5</span>
864
- <span class="gu">###### H6</span>
865
- </pre>
866
- </div>
867
-
868
- <p>
869
- <strong>Setext-style headers:</strong>
870
- </p>
871
-
872
- <div class="highlight">
873
- <pre><span></span><span class="gh">H1 Alternative</span>
874
- <span class="gh">==============</span>
875
-
876
- <span class="gu">H2 Alternative</span>
877
- <span class="gu">--------------</span>
878
- </pre>
879
- </div>
880
-
881
- <p>
882
- <strong>Multi-line setext headers (<abbr title="MultiMarkdown">MMD</abbr> 6):</strong>
883
- Setext headers can span multiple lines before the underline. This is supported in <strong>unified</strong> and <strong>MultiMarkdown</strong> modes:
884
- </p>
885
-
886
- <div class="highlight">
887
- <pre><span></span>This is
888
- a multi-line
889
- <span class="gh">setext header</span>
890
- <span class="gh">========</span>
891
-
892
- Another
893
- header
894
- with
895
- multiple
896
- <span class="gu">lines</span>
897
- <span class="gu">--------</span>
898
- </pre>
899
- </div>
900
-
901
- <h3 id="emphasis">
902
- Emphasis
903
- </h3>
904
-
905
- <div class="highlight">
906
- <pre><span></span><span class="ge">*italic*</span>
907
- <span class="ge">_italic_</span>
908
- <span class="gs">**bold**</span>
909
- <span class="gs">__bold__</span>
910
- ***bold italic***
911
- ___bold italic___
912
- </pre>
913
- </div>
914
-
915
- <h3 id="strikethrough">
916
- Strikethrough
917
- </h3>
918
-
919
- <p>
920
- GFM-style strikethrough uses paired tildes:
921
- </p>
922
-
923
- <div class="highlight">
924
- <pre><span></span><span class="gd">~~strikethrough text~~</span>
925
- </pre>
926
- </div>
927
-
928
- <p>
929
- This renders as <code>&lt;del&gt;strikethrough text&lt;/del&gt;</code> in <abbr title="Hypertext Markup Language">HTML</abbr>. Strikethrough is enabled by default in <strong>GFM</strong> and <strong>unified</strong> modes. In other modes, use <code>--strikethrough</code> to enable it, or <code>--no-strikethrough</code> to disable it in GFM or unified mode.
930
- <strong>Note:</strong> When using <code>--proofreader</code>, <code>~~text~~</code> is converted to CriticMarkup deletion syntax (<code>&lt;del class=&quot;critic&quot;&gt;text&lt;/del&gt;</code>) before strikethrough processing.
931
- </p>
932
-
933
- <h3 id="superscript-and-subscript">
934
- Superscript and&nbsp;Subscript
935
- </h3>
936
-
937
- <p>
938
- MultiMarkdown-style superscript and subscript syntax:
939
- </p>
940
-
941
- <div class="highlight">
942
- <pre><span></span>H~2~O # H₂O (subscript - tildes within word)
943
- m^2 # m² (superscript)
944
- x^2 + y^2 # x² + y²
945
- H~2~SO~4~ # H₂SO₄ (multiple subscripts within word)
946
- ~h2o~ # &lt;u&gt;h2o&lt;/u&gt; (underline - tildes at word boundaries)
947
- </pre>
948
- </div>
949
-
950
- <p>
951
- <strong>Syntax rules:</strong>
952
- </p>
953
-
954
- <ul>
955
-
956
- <li>
957
- The <code>^</code> character creates superscript for the text immediately following it. The superscript stops at the first space, punctuation, or newline.
958
- </li>
959
-
960
- <li>
961
- The <code>~</code> character creates subscript when used <strong>within a word/identifier</strong> with paired tildes (e.g., <code>H~2~O</code>). The subscript ends at the second tilde.
962
- </li>
963
-
964
- <li>
965
- When tildes are at word boundaries (e.g., <code>~text~</code>), they create underline instead of subscript. This prevents interference with underline/strikethrough syntax.
966
- <strong>Examples:</strong>
967
- </li>
968
-
969
- </ul>
970
-
971
- <div class="highlight">
972
- <pre><span></span>Water: H~2~O # H₂O (subscript - tildes within word)
973
- Area: m^2 # m² (superscript)
974
- Formula: E = mc^2 # E = mc² (superscript)
975
- Chemical: H~2~SO~4~ # H₂SO₄ (multiple subscripts within word)
976
- ~h2o~ # &lt;u&gt;h2o&lt;/u&gt; (underline - tildes at word boundaries)
977
- </pre>
978
- </div>
979
-
980
- <p>
981
- This feature is enabled by default in <strong>MultiMarkdown</strong> and <strong>unified</strong> modes. In other modes, use the <code>--sup-sub</code> flag to enable it. Use <code>--no-sup-sub</code> to disable it in unified or MultiMarkdown modes.
982
- </p>
983
-
984
- <h3 id="lists">
985
- Lists
986
- </h3>
987
-
988
- <p>
989
- <strong>Unordered:</strong>
990
- </p>
991
-
992
- <div class="highlight">
993
- <pre><span></span><span class="k">-</span><span class="w"> </span>Item 1
994
- <span class="k">-</span><span class="w"> </span>Item 2
995
- <span class="w"> </span><span class="k">-</span><span class="w"> </span>Nested item
996
- <span class="w"> </span><span class="k">-</span><span class="w"> </span>Another nested
997
- <span class="k">-</span><span class="w"> </span>Item 3
998
- </pre>
999
- </div>
1000
-
1001
- <p>
1002
- <strong>Ordered:</strong>
1003
- </p>
1004
-
1005
- <div class="highlight">
1006
- <pre><span></span><span class="k">1.</span> First item
1007
- <span class="k">2.</span> Second item
1008
-
1009
- <span class="w"> </span><span class="k">1.</span> Nested item
1010
- <span class="w"> </span><span class="k">2.</span> Another nested
1011
- <span class="k">3.</span> Third item
1012
- </pre>
1013
- </div>
1014
-
1015
- <p>
1016
- <strong>Mixed Markers (Unified &amp; MultiMarkdown modes):</strong>
1017
- In unified and MultiMarkdown modes, you can mix different list marker types at the same indentation level. The list will inherit the type from the first item:
1018
- </p>
1019
-
1020
- <div class="highlight">
1021
- <pre><span></span><span class="k">1.</span> First numbered item
1022
- <span class="k">*</span><span class="w"> </span>Second item (becomes numbered)
1023
- <span class="k">*</span><span class="w"> </span>Third item (becomes numbered)
1024
-
1025
- <span class="k">*</span><span class="w"> </span>First bullet item
1026
- <span class="k">1.</span> Second item (becomes bullet)
1027
- <span class="k">2.</span> Third item (becomes bullet)
1028
- </pre>
1029
- </div>
1030
-
1031
- <p>
1032
- By default, CommonMark and GFM modes create separate lists when marker types change. Use <code>--mixed-lists</code> to enable this behavior in other modes, or <code>--no-mixed-lists</code> to disable it in unified/MultiMarkdown modes.
1033
- <strong>Alpha Lists (Unified mode):</strong>
1034
- In unified mode, you can use alphabetic markers for ordered lists:
1035
- </p>
1036
-
1037
- <div class="highlight">
1038
- <pre><span></span>&lt;!-- apex-alpha-list-lower --&gt;
1039
-
1040
- <span class="k">1.</span> First item
1041
- <span class="k">2.</span> Second item
1042
- <span class="k">3.</span> Third item
1043
-
1044
- &lt;!-- apex-alpha-list-upper --&gt;
1045
-
1046
- <span class="k">1.</span> First item (uppercase)
1047
- <span class="k">2.</span> Second item (uppercase)
1048
- <span class="k">3.</span> Third item (uppercase)
1049
- </pre>
1050
- </div>
1051
-
1052
- <p>
1053
- Alpha lists are automatically converted to <abbr title="Hypertext Markup Language">HTML</abbr> with <code>style=&quot;list-style-type: lower-alpha&quot;</code> or <code>style=&quot;list-style-type: upper-alpha&quot;</code>. This feature is enabled by default in unified mode. Use <code>--alpha-lists</code> to enable in other modes, or <code>--no-alpha-lists</code> to disable in unified mode.
1054
- <strong>Task Lists:</strong>
1055
- </p>
1056
-
1057
- <div class="highlight">
1058
- <pre><span></span><span class="k">- [ ]</span> Todo item
1059
- <span class="k">- [x]</span> Completed item
1060
- <span class="k">- [ ]</span> Another todo
1061
- </pre>
1062
- </div>
1063
-
1064
- <h3 id="links-and-images">
1065
- Links&nbsp;and&nbsp;Images
1066
- </h3>
1067
-
1068
- <p>
1069
- <strong>Standard Markdown links:</strong>
1070
- </p>
1071
-
1072
- <div class="highlight">
1073
- <pre><span></span>[<span class="nt">Link text</span>](<span class="na">https://example.com</span>)
1074
- [<span class="nt">Link with title</span>](<span class="na">https://example.com &quot;Title&quot;</span>)
1075
- </pre>
1076
- </div>
1077
-
1078
- <p>
1079
- <strong>Link titles with different quote styles (<abbr title="MultiMarkdown">MMD</abbr> 6):</strong>
1080
- Link and image titles can use single quotes, double quotes, or parentheses. This is supported in <strong>unified</strong> and <strong>MultiMarkdown</strong> modes:
1081
- </p>
1082
-
1083
- <div class="highlight">
1084
- <pre><span></span>[<span class="nt">Link with double quotes</span>](<span class="na">https://example.com &quot;Title&quot;</span>)
1085
- [<span class="nt">Link with single quotes</span>](<span class="na">https://example.com &#39;Title&#39;</span>)
1086
- [<span class="nt">Link with parentheses</span>](<span class="na">https://example.com (Title</span>))
1087
- </pre>
1088
- </div>
1089
-
1090
- <p>
1091
- <strong>Images:</strong>
1092
- </p>
1093
-
1094
- <div class="highlight">
1095
- <pre><span></span>![<span class="nt">Alt text</span>](<span class="na">image.png</span>)
1096
- ![<span class="nt">Alt with title</span>](<span class="na">image.png &quot;Image title&quot;</span>)
1097
- </pre>
1098
- </div>
1099
-
1100
- <h3 id="image-captions-figure-figcaption">
1101
- Image captions (figure /&nbsp;figcaption)
1102
- </h3>
1103
-
1104
- <p>
1105
- In <strong>unified</strong> and <strong>MultiMarkdown</strong> modes, Apex can wrap images in semantic <code>&lt;figure&gt;</code> elements with <code>&lt;figcaption&gt;</code> when caption text is available. Caption text is chosen as follows:
1106
- </p>
1107
-
1108
- <ol>
1109
-
1110
- <li>
1111
- <strong><code>caption=&quot;TEXT&quot;</code> attribute</strong> (IAL) — If present, this is always used as the figcaption and the image is wrapped in <code>&lt;figure&gt;</code>, <strong>even when image captions are otherwise disabled</strong> (see below).
1112
- </li>
1113
-
1114
- <li>
1115
- <strong>Title attribute</strong> — If the image has a title (e.g. <code>&quot;Image title&quot;</code> in the link), that becomes the caption when image captions are enabled.
1116
- </li>
1117
-
1118
- <li>
1119
- <strong>Alt text</strong> — If there is no title, alt text is used as the caption when image captions are enabled (unless <code>--title-captions-only</code> is set).
1120
- If both title and alt are empty and there is no <code>caption=&quot;&quot;</code> attribute, the image is left as a plain <code>&lt;img&gt;</code> tag.
1121
- <strong>Example (unified / MultiMarkdown with image captions enabled):</strong>
1122
- Input:
1123
- </li>
1124
-
1125
- </ol>
1126
-
1127
- <div class="highlight">
1128
- <pre><span></span>![<span class="nt">Alt only</span>](<span class="na">photo.png</span>)
1129
- ![<span class="nt">With title</span>](<span class="na">figure.png &quot;Figure caption&quot;</span>)
1130
- ![](plain.png)
1131
- </pre>
1132
- </div>
1133
-
1134
- <p>
1135
- Output:
1136
- </p>
1137
-
1138
- <div class="highlight">
1139
- <pre><span></span><span class="p">&lt;</span><span class="nt">figure</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;photo.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Alt only&quot;</span><span class="p">&gt;&lt;</span><span class="nt">figcaption</span><span class="p">&gt;</span>Alt only<span class="p">&lt;/</span><span class="nt">figcaption</span><span class="p">&gt;&lt;/</span><span class="nt">figure</span><span class="p">&gt;</span>
1140
- <span class="p">&lt;</span><span class="nt">figure</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;figure.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;With title&quot;</span> <span class="na">title</span><span class="o">=</span><span class="s">&quot;Figure caption&quot;</span><span class="p">&gt;&lt;</span><span class="nt">figcaption</span><span class="p">&gt;</span>Figure caption<span class="p">&lt;/</span><span class="nt">figcaption</span><span class="p">&gt;&lt;/</span><span class="nt">figure</span><span class="p">&gt;</span>
1141
- <span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;plain.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">&gt;</span>
1142
- </pre>
1143
- </div>
1144
-
1145
- <p>
1146
- <strong>Explicit caption via IAL (<code>caption=&quot;&quot;</code>):</strong>
1147
- You can set the figcaption explicitly with the <code>caption</code> attribute in an inline attribute list. This <strong>always</strong> produces <code>&lt;figure&gt;&lt;figcaption&gt;...&lt;/figcaption&gt;&lt;/figure&gt;</code> for that image, regardless of the <code>--image-captions</code> flag. The <code>caption</code> attribute is not emitted on the final <code>&lt;img&gt;</code> tag (it is used only for the figcaption).
1148
- </p>
1149
-
1150
- <div class="highlight">
1151
- <pre><span></span>![<span class="nt">Screenshot</span>](<span class="na">screen.png</span>)
1152
- ![<span class="nt">Logo</span>](<span class="na">logo.png</span>)
1153
- </pre>
1154
- </div>
1155
-
1156
- <p>
1157
- Output (even with <code>--no-image-captions</code>):
1158
- </p>
1159
-
1160
- <div class="highlight">
1161
- <pre><span></span><span class="p">&lt;</span><span class="nt">figure</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;screen.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Screenshot&quot;</span><span class="p">&gt;&lt;</span><span class="nt">figcaption</span><span class="p">&gt;</span>App window in dark mode<span class="p">&lt;/</span><span class="nt">figcaption</span><span class="p">&gt;&lt;/</span><span class="nt">figure</span><span class="p">&gt;</span>
1162
- <span class="p">&lt;</span><span class="nt">figure</span><span class="p">&gt;&lt;</span><span class="nt">img</span> <span class="na">id</span><span class="o">=</span><span class="s">&quot;logo&quot;</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;logo.png&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Logo&quot;</span><span class="p">&gt;&lt;</span><span class="nt">figcaption</span><span class="p">&gt;</span>Company logo<span class="p">&lt;/</span><span class="nt">figcaption</span><span class="p">&gt;&lt;/</span><span class="nt">figure</span><span class="p">&gt;</span>
1163
- </pre>
1164
- </div>
1165
-
1166
- <p>
1167
- <strong>Caption options:</strong>
1168
- </p>
1169
-
1170
- <table>
1171
-
1172
- <thead>
1173
-
1174
- <tr>
1175
-
1176
- <th>
1177
- Option
1178
- </th>
1179
-
1180
- <th>
1181
- Effect
1182
- </th>
1183
-
1184
- </tr>
1185
-
1186
- </thead>
1187
-
1188
- <tbody>
1189
-
1190
- <tr>
1191
-
1192
- <td>
1193
- <code>--image-captions</code>
1194
- </td>
1195
-
1196
- <td>
1197
- Enable wrapping images with title/alt in <code>&lt;figure&gt;</code> and <code>&lt;figcaption&gt;</code> (default in unified/<abbr title="MultiMarkdown">MMD</abbr>).
1198
- </td>
1199
-
1200
- </tr>
1201
- <tr>
1202
-
1203
- <td>
1204
- <code>--no-image-captions</code>
1205
- </td>
1206
-
1207
- <td>
1208
- Disable automatic captions from title/alt. Images with <code>caption=&quot;&quot;</code> in IAL still get figures.
1209
- </td>
1210
-
1211
- </tr>
1212
- <tr>
1213
-
1214
- <td>
1215
- <code>--title-captions-only</code>
1216
- </td>
1217
-
1218
- <td>
1219
- Only add captions for images that have a <strong>title</strong> attribute; ignore alt for captions. Implies <code>--image-captions</code>. You do not need to pass both.
1220
- </td>
1221
-
1222
- </tr>
1223
- <tr>
1224
-
1225
- <td>
1226
- <code>--no-title-captions-only</code>
1227
- </td>
1228
-
1229
- <td>
1230
- Use title or alt for captions (default).
1231
- </td>
1232
-
1233
- </tr>
1234
- </tbody>
1235
-
1236
- </table>
1237
-
1238
- <ul>
1239
-
1240
- <li>
1241
- <strong>CLI:</strong> e.g. <code>--no-image-captions</code>, <code>--title-captions-only</code>
1242
- </li>
1243
-
1244
- <li>
1245
- <strong>Metadata:</strong> <code>image-captions: true|false</code>, <code>title-captions-only: true|false</code> (or snake_case <code>title_captions_only</code>) in YAML/<abbr title="MultiMarkdown">MMD</abbr> metadata.
1246
- <strong>Image titles with different quote styles (<abbr title="MultiMarkdown">MMD</abbr> 6):</strong>
1247
- </li>
1248
-
1249
- </ul>
1250
-
1251
- <div class="highlight">
1252
- <pre><span></span>![<span class="nt">Image</span>](<span class="na">image.png &quot;Double quote title&quot;</span>)
1253
- ![<span class="nt">Image</span>](<span class="na">image.png &#39;Single quote title&#39;</span>)
1254
- ![<span class="nt">Image</span>](<span class="na">image.png (Parentheses title</span>))
1255
- </pre>
1256
- </div>
1257
-
1258
- <p>
1259
- <strong>Retina / @2x images (srcset):</strong>
1260
- In <strong>unified</strong> and <strong>MultiMarkdown</strong> modes, you can add <code>@2x</code> to image attributes to generate a <code>srcset</code> for retina displays. The 2x variant is assumed to have the same path with <code>@2x</code> inserted before the file extension (e.g. <code>icon.png</code> → <code>icon@2x.png</code>).
1261
- <strong>Inline:</strong>
1262
- </p>
1263
-
1264
- <div class="highlight">
1265
- <pre><span></span>![<span class="nt">Alt</span>](<span class="na">img/icon.png </span>)
1266
- ![<span class="nt">Alt</span>](<span class="na">img/icon.png </span>)
1267
- ![<span class="nt">Alt</span>](<span class="na">img/icon.png </span>)
1268
- </pre>
1269
- </div>
1270
-
1271
- <p>
1272
- <strong>Reference-style:</strong>
1273
- </p>
1274
-
1275
- <div class="highlight">
1276
- <pre><span></span>![<span class="nt">Logo</span>](<span class="na">https://example.com/badge.png?size=250x83</span>)
1277
- </pre>
1278
- </div>
1279
-
1280
- <p>
1281
- <strong>With IAL:</strong> You can also use <code>@2x</code> in an inline attribute list after the image:
1282
- </p>
1283
-
1284
- <div class="highlight">
1285
- <pre><span></span>![<span class="nt">Alt</span>](<span class="na">img/icon.png</span>)
1286
- ![<span class="nt">Alt</span>](<span class="na">img/icon.png</span>)
1287
- </pre>
1288
- </div>
1289
-
1290
- <p>
1291
- Output includes both <code>src</code> and <code>srcset</code> so browsers can choose the appropriate resolution:
1292
- </p>
1293
-
1294
- <div class="highlight">
1295
- <pre><span></span><span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;img/icon.png&quot;</span> <span class="na">srcset</span><span class="o">=</span><span class="s">&quot;img/icon.png 1x, img/icon@2x.png 2x&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;Alt&quot;</span><span class="p">&gt;</span>
1296
- </pre>
1297
- </div>
1298
-
1299
- <p>
1300
- <strong>Multi-format images (WebP, AVIF, auto, video):</strong> Apex supports additional attributes for modern image formats, automatic format discovery, and video URLs. See <a href="Multi-Format-Images.html">Multi-Format Images</a> for full documentation.
1301
- <strong>Terminal output (<code>-t terminal</code> / <code>-t terminal256</code>):</strong> Standard <code>![alt](url)</code> image syntax is rendered inline when stdout is a TTY and a viewer is available (<code>imgcat</code> on iTerm2, otherwise <code>chafa</code>, <code>catimg</code>, or <code>viu</code>). With pagination (<code>-p</code> / <code>paginate: true</code>), inline graphics protocols may bypass the pager; use <strong><code>--paginate-symbols</code></strong> or <strong><code>paginate: symbols</code></strong> for pager-friendly chafa ANSI art. See <a href="Rendering-Markdown-In-Terminal.html">Rendering Markdown in the Terminal</a>.
1302
- <strong>Reference-style links and images:</strong>
1303
- Reference-style links and images also support all three quote styles for titles:
1304
- </p>
1305
-
1306
- <div class="highlight">
1307
- <pre><span></span>[<span class="nt">Link text</span>][<span class="nl">ref1</span>]
1308
- ![Image][img1]
1309
-
1310
- [<span class="nl">ref1</span>]: <span class="na">https://example.com &quot;Reference title&quot;</span>
1311
- [<span class="nl">ref2</span>]: <span class="na">https://example.com &#39;Reference title&#39;</span>
1312
- [<span class="nl">ref3</span>]: <span class="na">https://example.com (Reference title)</span>
1313
-
1314
- [<span class="nl">img1</span>]: <span class="na">image.png &quot;Image title&quot;</span>
1315
- [<span class="nl">img2</span>]: <span class="na">image.png &#39;Image title&#39;</span>
1316
- [<span class="nl">img3</span>]: <span class="na">image.png (Image title)</span>
1317
- </pre>
1318
- </div>
1319
-
1320
- <p>
1321
- <strong>Image attributes on reference definitions:</strong>
1322
- In <strong>unified</strong>, <strong>MultiMarkdown</strong>, and <strong>Kramdown</strong> modes, you can put attributes (e.g. <code>width=250 height=83</code> or <code>@2x</code>) after the URL in an image reference definition. A space after the URL separates the URL from the attributes; the URL is not encoded, so query parameters (e.g. <code>?size=250x83</code>) are preserved.
1323
- </p>
1324
-
1325
- <div class="highlight">
1326
- <pre><span></span>![<span class="nt">Logo</span>](<span class="na">https://example.com/badge.png?size=250x83</span>)
1327
- </pre>
1328
- </div>
1329
-
1330
- <p>
1331
- These attributes are applied to every image that uses that reference, including images inside fenced divs (::: … :::) and other markdown=“1” regions.
1332
- <strong>Bear image attribute comments:</strong>
1333
- Apex recognizes the JSON metadata comments that Bear places immediately after
1334
- images. This works in <strong>CommonMark</strong>, <strong>GFM</strong>, <strong>MultiMarkdown</strong>, and
1335
- <strong>unified</strong> modes:
1336
- </p>
1337
-
1338
- <div class="highlight">
1339
- <pre><span></span>![](emperor-1.jpg)&lt;!-- {&quot;width&quot;:259} --&gt;
1340
- </pre>
1341
- </div>
1342
-
1343
- <p>
1344
- With raw <abbr title="Hypertext Markup Language">HTML</abbr> enabled, this produces:
1345
- </p>
1346
-
1347
- <div class="highlight">
1348
- <pre><span></span><span class="p">&lt;</span><span class="nt">img</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;emperor-1.jpg&quot;</span> <span class="na">alt</span><span class="o">=</span><span class="s">&quot;&quot;</span> <span class="na">width</span><span class="o">=</span><span class="s">&quot;259&quot;</span><span class="p">&gt;</span><span class="cm">&lt;!-- {&quot;width&quot;:259} --&gt;</span>
1349
- </pre>
1350
- </div>
1351
-
1352
- <p>
1353
- The comment must be on the same line as the image. It may touch the image or
1354
- be separated by spaces or tabs. Apex preserves the original comment; when raw
1355
- <abbr title="Hypertext Markup Language">HTML</abbr> is disabled, the current safe-<abbr title="Hypertext Markup Language">HTML</abbr> handling still applies.
1356
- Bear comments also work with reference-style images:
1357
- </p>
1358
-
1359
- <div class="highlight">
1360
- <pre><span></span>![<span class="nt">Default</span>](<span class="na">emperor.jpg</span>)
1361
- ![<span class="nt">Larger</span>](<span class="na">emperor.jpg</span>)&lt;!-- {&quot;width&quot;:320} --&gt;
1362
-
1363
- &lt;!-- {&quot;width&quot;:259,&quot;height&quot;:194} --&gt;
1364
- </pre>
1365
- </div>
1366
-
1367
- <p>
1368
- Attributes on the reference definition apply to every image using that
1369
- reference. A comment on an explicit <code>![alt][id]</code> use applies only to that
1370
- instance and overrides conflicting definition attributes.
1371
- Allowed keys are <code>width</code>, <code>height</code>, <code>style</code>, <code>class</code>, <code>id</code>, <code>rel</code>, and
1372
- <code>title</code>. Unsupported keys are ignored. Malformed JSON does not apply
1373
- attributes, and the comment remains in the output. See
1374
- <a href="Inline-Attribute-Lists#bear-image-attribute-comments">Inline Attribute Lists</a>
1375
- for complete rules and examples.
1376
- <strong>URL handling (images and links):</strong>
1377
- </p>
1378
-
1379
- <ul>
1380
-
1381
- <li>
1382
- URLs that contain a protocol (e.g. <code>http://</code>, <code>https://</code>) are not URL-encoded by Apex. Query parameters and special characters (e.g. <code>?</code>, <code>&amp;</code>, <code>=</code>) in such URLs are left as-is in the output.
1383
- </li>
1384
-
1385
- <li>
1386
- In image syntax (inline or reference definition), a space after the URL starts the attribute list. So the URL is everything before the first space that is followed by an attribute (e.g. <code>key=value</code> or <code>@2x</code>). Use this to keep query strings intact while adding width, height, or other attributes.
1387
- <strong>Autolinks:</strong>
1388
- Apex can automatically convert URLs and email addresses into clickable links. Autolinking is enabled by default in <strong>GFM</strong>, <strong>MultiMarkdown</strong>, <strong>Kramdown</strong>, and <strong>unified</strong> modes. It is disabled by default in <strong>CommonMark</strong> mode.
1389
- <strong>Angle-bracket autolinks:</strong>
1390
- </li>
1391
-
1392
- </ul>
1393
-
1394
- <div class="highlight">
1395
- <pre><span></span>&lt;https://example.com&gt;
1396
- &lt;http://example.com&gt;
1397
- &lt;mailto:user@example.com&gt;
1398
- </pre>
1399
- </div>
1400
-
1401
- <p>
1402
- <strong>Bare URL autolinks:</strong>
1403
- </p>
1404
-
1405
- <div class="highlight">
1406
- <pre><span></span>Visit https://example.com for more info.
1407
- Check out http://example.com too.
1408
- </pre>
1409
- </div>
1410
-
1411
- <p>
1412
- <strong>Email autolinks:</strong>
1413
- </p>
1414
-
1415
- <div class="highlight">
1416
- <pre><span></span>Contact me@example.com for details.
1417
- Send to user@example.com.
1418
- </pre>
1419
- </div>
1420
-
1421
- <p>
1422
- <strong>Important notes:</strong>
1423
- </p>
1424
-
1425
- <ul>
1426
-
1427
- <li>
1428
- Autolinks are <strong>not</strong> processed inside code spans (<code>`code`</code>) or code blocks (<code> </code> ```)
1429
- </li>
1430
-
1431
- <li>
1432
- Use <code>--autolink</code> to enable autolinking in modes where it’s disabled by default
1433
- </li>
1434
-
1435
- <li>
1436
- Use <code>--no-autolink</code> to disable autolinking in modes where it’s enabled by default
1437
- </li>
1438
-
1439
- <li>
1440
- Angle-bracket autolinks (<code>&lt;url&gt;</code>) are converted to standard Markdown links during preprocessing
1441
- </li>
1442
-
1443
- <li>
1444
- Bare URLs and email addresses are also converted to Markdown links during preprocessing
1445
- </li>
1446
-
1447
- </ul>
1448
-
1449
- <h3 id="code">
1450
- Code
1451
- </h3>
1452
-
1453
- <p>
1454
- <strong>Inline code:</strong>
1455
- </p>
1456
-
1457
- <div class="highlight">
1458
- <pre><span></span>Use <span class="sb">`code`</span> in text.
1459
- </pre>
1460
- </div>
1461
-
1462
- <p>
1463
- <strong>Fenced code blocks:</strong>
1464
- </p>
1465
-
1466
- <div class="highlight">
1467
- <pre><span></span><span class="sb">```python</span>
1468
- <span class="k">def</span><span class="w"> </span><span class="nf">hello</span><span class="p">():</span>
1469
- <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Hello, World!&quot;</span><span class="p">)</span>
1470
- <span class="sb">```</span>
1471
- </pre>
1472
- </div>
1473
-
1474
- <p>
1475
- <strong>Indented code blocks:</strong>
1476
- </p>
1477
-
1478
- <div class="highlight">
1479
- <pre><span></span> def hello():
1480
- print(&quot;Hello, World!&quot;)
1481
- </pre>
1482
- </div>
1483
-
1484
- <p>
1485
- <strong>Syntax highlighting:</strong>
1486
- Apex supports external syntax highlighting via the <code>--code-highlight</code> flag. When enabled, fenced code blocks are processed by external tools (Pygments, Skylighting, or Shiki) to produce colorized <abbr title="Hypertext Markup Language">HTML</abbr> or ANSI output.
1487
- <strong>Usage:</strong>
1488
- </p>
1489
-
1490
- <div class="highlight">
1491
- <pre><span></span>apex<span class="w"> </span>document.md<span class="w"> </span>--code-highlight<span class="w"> </span>pygments
1492
- apex<span class="w"> </span>document.md<span class="w"> </span>--code-highlight<span class="w"> </span>skylighting
1493
- apex<span class="w"> </span>document.md<span class="w"> </span>--code-highlight<span class="w"> </span>shiki
1494
- </pre>
1495
- </div>
1496
-
1497
- <p>
1498
- <strong>Features:</strong>
1499
- </p>
1500
-
1501
- <ul>
1502
-
1503
- <li>
1504
- Language-aware highlighting based on code block language specifiers
1505
- </li>
1506
-
1507
- <li>
1508
- Auto-detection when no language is specified (where supported)
1509
- </li>
1510
-
1511
- <li>
1512
- Line numbers support with <code>--code-line-numbers</code> flag (Pygments and Skylighting)
1513
- </li>
1514
-
1515
- <li>
1516
- Automatic <abbr title="Cascading Style Sheets">CSS</abbr> inclusion in standalone mode (GitHub-style theme)
1517
- </li>
1518
-
1519
- <li>
1520
- Terminal output can use external ANSI highlighters for code blocks
1521
- When processed with <code>--code-highlight pygments</code>, the code block is sent to Pygments (<code>pygmentize</code>) and replaced with highlighted <abbr title="Hypertext Markup Language">HTML</abbr> (or ANSI, in terminal modes) containing syntax classes and colors. <code>--code-highlight skylighting</code> uses <code>skylighting</code> for <abbr title="Hypertext Markup Language">HTML</abbr> or ANSI output. <code>--code-highlight shiki</code> uses the Shiki CLI (<code>@shikijs/cli</code>) to produce <abbr title="Hypertext Markup Language">HTML</abbr> or ANSI output depending on the selected <code>-t/--to</code> format.
1522
- <strong>Theming:</strong>
1523
- Use <code>--code-highlight-theme THEME</code> (or metadata <code>code-highlight-theme</code> / <code>code_highlight_theme</code>) to select a syntax highlighting theme:
1524
- </li>
1525
-
1526
- <li>
1527
- With <strong>Pygments</strong>, <code>THEME</code> is a Pygments style name used in both <abbr title="Hypertext Markup Language">HTML</abbr> and terminal/terminal256 output.
1528
- </li>
1529
-
1530
- <li>
1531
- With <strong>Skylighting</strong>, <code>THEME</code> is a Skylighting style name used in both <abbr title="Hypertext Markup Language">HTML</abbr> and ANSI terminal output.
1532
- </li>
1533
-
1534
- <li>
1535
- With <strong>Shiki</strong>, <code>THEME</code> is a Shiki theme ID used in both <abbr title="Hypertext Markup Language">HTML</abbr> and ANSI output.
1536
- Run <code>apex --list-themes</code> to see built-in themes for Pygments and Skylighting and a pointer to bundled Shiki themes.
1537
- <strong>Notes:</strong>
1538
- </li>
1539
-
1540
- <li>
1541
- Only fenced code blocks (with triple backticks) are highlighted. Indented code blocks are not processed by external highlighters.
1542
- </li>
1543
-
1544
- </ul>
1545
-
1546
- <h3 id="blockquotes">
1547
- Blockquotes
1548
- </h3>
1549
-
1550
- <div class="highlight">
1551
- <pre><span></span><span class="k">&gt; </span><span class="ge">This is a quote.</span>
1552
- <span class="k">&gt; </span><span class="ge">It can span multiple lines.</span>
1553
- <span class="k">&gt;</span>
1554
- <span class="ge">&gt; &gt; Nested quotes are supported.</span>
1555
- </pre>
1556
- </div>
1557
-
1558
- <p>
1559
- <strong>Lists and definition lists in blockquotes:</strong>
1560
- Blockquotes can contain lists and definition lists:
1561
- </p>
1562
-
1563
- <div class="highlight">
1564
- <pre><span></span><span class="k">&gt; </span><span class="ge">1. First item</span>
1565
- <span class="k">&gt; </span><span class="ge">2. Second item</span>
1566
- <span class="k">&gt;</span>
1567
- <span class="ge">&gt; - Unordered item</span>
1568
- <span class="k">&gt; </span><span class="ge">- Another item</span>
1569
- <span class="k">&gt;</span>
1570
- <span class="ge">&gt; Term</span>
1571
- <span class="k">&gt; </span><span class="ge">: Definition</span>
1572
- </pre>
1573
- </div>
1574
-
1575
- <p>
1576
- Nested blockquotes also support these features:
1577
- </p>
1578
-
1579
- <div class="highlight">
1580
- <pre><span></span><span class="k">&gt; </span><span class="ge">&gt; Nested quote</span>
1581
- <span class="k">&gt; </span><span class="ge">&gt; 1. List item</span>
1582
- <span class="k">&gt; </span><span class="ge">&gt; Term</span>
1583
- <span class="k">&gt; </span><span class="ge">&gt; : Definition</span>
1584
- </pre>
1585
- </div>
1586
-
1587
- <h3 Option id="horizontal-rules">
1588
- Horizontal&nbsp;Rules
1589
- </h3>
1590
-
1591
- <div class="highlight">
1592
- <pre><span></span>---
1593
- ***
1594
- ___
1595
- </pre>
1596
- </div>
1597
-
1598
- <h2 Effect id="tables">
1599
- Tables
1600
- </h2>
1601
-
1602
- <p>
1603
- Apex supports comprehensive table syntax including standard pipe tables, CSV/TSV tables, and advanced features. For complete table documentation, see <a href="Tables.html">Tables</a>.
1604
- </p>
1605
-
1606
- <h3 id="quick-reference">
1607
- Quick&nbsp;Reference
1608
- </h3>
1609
-
1610
- <ul>
1611
-
1612
- <li>
1613
- <strong>Standard pipe tables</strong> with column alignment (<code>:---</code>, <code><span class=\"emoji\">:---:</span></code>, <code>---:</code>)
1614
- </li>
1615
-
1616
- <li>
1617
- <strong>Relaxed tables</strong> (no separator row required in unified/kramdown modes)
1618
- </li>
1619
-
1620
- <li>
1621
- <strong>Grid tables</strong> (Pandoc <code>+---+</code> syntax; opt-in with <code>--grid-tables</code>, disable with <code>--no-grid-tables</code>)
1622
- </li>
1623
-
1624
- <li>
1625
- <strong>Headerless tables</strong> with alignment rows
1626
- </li>
1627
-
1628
- <li>
1629
- <strong>Row header columns</strong> (first column as row header)
1630
- </li>
1631
-
1632
- <li>
1633
- <strong>Inline CSV/TSV tables</strong> from fenced code blocks or <code>&lt;!--TABLE--&gt;</code> markers
1634
- </li>
1635
-
1636
- <li>
1637
- <strong>Column spans</strong> using empty cells or <code>&lt;&lt;</code> marker
1638
- </li>
1639
-
1640
- <li>
1641
- <strong>Row spans</strong> using <code>^^</code> marker
1642
- </li>
1643
-
1644
- <li>
1645
- <strong>Table footers</strong> using <code>===</code> separator rows
1646
- </li>
1647
-
1648
- <li>
1649
- <strong>Individual cell alignment</strong> using colons (<code>:Left</code>, <code>Center:</code>, <code><span class=\"emoji\">:Center:</span></code>)
1650
- </li>
1651
-
1652
- <li>
1653
- <strong>Table captions</strong> in multiple formats (<code>[Caption]</code>, <code>Table: Caption</code>, <code>: Caption</code>)
1654
- </li>
1655
-
1656
- <li>
1657
- <strong>Inline Attribute Lists (IALs)</strong> for adding IDs, classes, and custom attributes to tables
1658
- </li>
1659
-
1660
- </ul>
1661
-
1662
- <h3 `--image-captions` id="basic-example">
1663
- Basic&nbsp;Example
1664
- </h3>
1665
-
1666
- <div class="highlight">
1667
- <pre><span></span>| Header 1 | Header 2 | Header 3 |
1668
- | -------- | <span class=\"emoji\">:------:</span> | -------: |
1669
- | Left | Center | Right |
1670
- | Data | Data | Data |
1671
- </pre>
1672
- </div>
1673
-
1674
- <p>
1675
- Column alignment: <code>:---</code> (left, default), <code><span class=\"emoji\">:---:</span></code> (center), <code>---:</code> (right).
1676
- For detailed documentation of all advanced table features including rowspan, colspan, per-cell alignment, captions, IALs, and other advanced syntax, see <a href="Tables.html">Tables</a>.
1677
- </p>
1678
-
1679
- <h2 Enable wrapping images with title/alt in `<figure id="footnotes">
1680
- ` and `
1681
- <figcaption>
1682
- ` (default in unified/<abbr title="MultiMarkdown">MMD</abbr>).>Footnotes
1683
- </h2>
1684
-
1685
- <h3 id="reference-style">
1686
- Reference&nbsp;Style
1687
- </h3>
1688
-
1689
- <div class="highlight">
1690
- <pre><span></span>Here&#39;s a footnote[^1] and another[^note].
1691
-
1692
- [<span class="nl">^1</span>]: <span class="na">First footnote content.</span>
1693
- [<span class="nl">^note</span>]: <span class="na">Second footnote with custom ID.</span>
1694
- </pre>
1695
- </div>
1696
-
1697
- <h3 id="inline-style-kramdown">
1698
- Inline Style&nbsp;(Kramdown)
1699
- </h3>
1700
-
1701
- <div class="highlight">
1702
- <pre><span></span>This is a footnote[^fn1].
1703
- </pre>
1704
- </div>
1705
-
1706
- <h3 id="inline-style-multimarkdown">
1707
- Inline Style&nbsp;(MultiMarkdown)
1708
- </h3>
1709
-
1710
- <div class="highlight">
1711
- <pre><span></span>This is a footnote[^fn2].
1712
- </pre>
1713
- </div>
1714
-
1715
- <h2 id="definition-lists">
1716
- Definition&nbsp;Lists
1717
- </h2>
1718
-
1719
- <div class="highlight">
1720
- <pre><span></span>Term
1721
- : Definition text with <span class="gs">**Markdown**</span> support
1722
-
1723
- Apple
1724
- : A fruit
1725
- : A company
1726
-
1727
- Term with multiple definitions
1728
- : First definition
1729
- : Second definition
1730
- </pre>
1731
- </div>
1732
-
1733
- <p>
1734
- <strong>Definition lists in blockquotes:</strong>
1735
- Definition lists work inside blockquotes, including nested blockquotes:
1736
- </p>
1737
-
1738
- <div class="highlight">
1739
- <pre><span></span><span class="k">&gt; </span><span class="ge">Term 1</span>
1740
- <span class="k">&gt; </span><span class="ge">: Definition 1</span>
1741
- <span class="k">&gt; </span><span class="ge">Term 2</span>
1742
- <span class="k">&gt; </span><span class="ge">: Definition 2</span>
1743
-
1744
- <span class="k">&gt; </span><span class="ge">&gt; Nested blockquote</span>
1745
- <span class="k">&gt; </span><span class="ge">&gt; Term</span>
1746
- <span class="k">&gt; </span><span class="ge">&gt; : Definition</span>
1747
- </pre>
1748
- </div>
1749
-
1750
- <p>
1751
- This allows you to create quoted definitions and maintain proper nesting structure.
1752
- </p>
1753
-
1754
- <h2 `--no-image-captions` id="citations">
1755
- Citations
1756
- </h2>
1757
-
1758
- <p>
1759
- <strong>Note:</strong> Citations are supported in <strong>MultiMarkdown</strong> and <strong>unified</strong> modes. A bibliography file must be provided via <code>--bibliography</code> flag or document metadata.
1760
- </p>
1761
-
1762
- <h3 Disable automatic captions from title/alt. Images with `caption=""` in IAL still get figures. id="pandoc-citation-syntax">
1763
- Pandoc Citation&nbsp;Syntax
1764
- </h3>
1765
-
1766
- <p>
1767
- <strong>Basic citation:</strong>
1768
- </p>
1769
-
1770
- <div class="highlight">
1771
- <pre><span></span>See [@doe99] for details.
1772
- </pre>
1773
- </div>
1774
-
1775
- <p>
1776
- <strong>Multiple citations:</strong>
1777
- </p>
1778
-
1779
- <div class="highlight">
1780
- <pre><span></span>See [@doe99; <span class="ni">@smith2000</span>; <span class="ni">@smith2004</span>] for more information.
1781
- </pre>
1782
- </div>
1783
-
1784
- <p>
1785
- <strong>Author in text:</strong>
1786
- </p>
1787
-
1788
- <div class="highlight">
1789
- <pre><span></span><span class="ni">@smith04</span> says blah.
1790
- </pre>
1791
- </div>
1792
-
1793
- <p>
1794
- <strong>Author suppressed:</strong>
1795
- </p>
1796
-
1797
- <div class="highlight">
1798
- <pre><span></span>Smith says blah [-@smith04].
1799
- </pre>
1800
- </div>
1801
-
1802
- <p>
1803
- <strong>With locator:</strong>
1804
- </p>
1805
-
1806
- <div class="highlight">
1807
- <pre><span></span><span class="ni">@smith04</span> [p. 33] says blah.
1808
- </pre>
1809
- </div>
1810
-
1811
- <h3 id="multimarkdown-citation-syntax">
1812
- MultiMarkdown Citation&nbsp;Syntax
1813
- </h3>
1814
-
1815
- <p>
1816
- <strong>Basic citation:</strong>
1817
- </p>
1818
-
1819
- <div class="highlight">
1820
- <pre><span></span>This is a statement[#Doe:2006].
1821
- </pre>
1822
- </div>
1823
-
1824
- <p>
1825
- <strong>With locator:</strong>
1826
- </p>
1827
-
1828
- <div class="highlight">
1829
- <pre><span></span>This is a statement[p. 23][#Doe:2006].
1830
- </pre>
1831
- </div>
1832
-
1833
- <p>
1834
- <strong>Inline citation:</strong>
1835
- </p>
1836
-
1837
- <div class="highlight">
1838
- <pre><span></span>As per Doe.[#John Doe. <span class="ge">*A Totally Fake Book 1*</span>. Vanity Press, 2006.]
1839
- </pre>
1840
- </div>
1841
-
1842
- <h3 `--title-captions-only` id="mmark-citation-syntax">
1843
- mmark Citation&nbsp;Syntax
1844
- </h3>
1845
-
1846
- <p>
1847
- <strong>Basic citation:</strong>
1848
- </p>
1849
-
1850
- <div class="highlight">
1851
- <pre><span></span>This references [@RFC2535].
1852
- </pre>
1853
- </div>
1854
-
1855
- <p>
1856
- <strong>Normative citation:</strong>
1857
- </p>
1858
-
1859
- <div class="highlight">
1860
- <pre><span></span>This references [@!RFC1034] (normative).
1861
- </pre>
1862
- </div>
1863
-
1864
- <p>
1865
- <strong>Multiple citations:</strong>
1866
- </p>
1867
-
1868
- <div class="highlight">
1869
- <pre><span></span>Multiple citations: [@RFC1034;@RFC1035].
1870
- </pre>
1871
- </div>
1872
-
1873
- <p>
1874
- <strong>Combined reference:</strong>
1875
- </p>
1876
-
1877
- <div class="highlight">
1878
- <pre><span></span>Combined reference: [@RFC1034@STD3].
1879
- </pre>
1880
- </div>
1881
-
1882
- <h3 Only add captions for images that have a **title** attribute; ignore alt for captions. Implies `--image-captions`. You do not need to pass both. id="bibliography">
1883
- Bibliography
1884
- </h3>
1885
-
1886
- <p>
1887
- Bibliography is automatically generated from cited entries and inserted at the <code>&lt;!-- REFERENCES --&gt;</code> marker or appended to the end of the document.
1888
- <strong>Bibliography marker:</strong>
1889
- </p>
1890
-
1891
- <div class="highlight">
1892
- <pre><span></span><span class="gu">## References</span>
1893
-
1894
- &lt;!-- REFERENCES --&gt;
1895
- </pre>
1896
- </div>
1897
-
1898
- <p>
1899
- <strong>Bibliography in metadata:</strong>
1900
- </p>
1901
-
1902
- <div class="highlight">
1903
- <pre><span></span>---
1904
- <span class="gu">bibliography: references.bib</span>
1905
- <span class="gu">---</span>
1906
-
1907
- See [@doe99] for details.
1908
- </pre>
1909
- </div>
1910
-
1911
- <p>
1912
- <strong>Multiple bibliography files:</strong>
1913
- </p>
1914
-
1915
- <div class="highlight">
1916
- <pre><span></span>---
1917
- bibliography:
1918
- <span class="w"> </span><span class="k">-</span><span class="w"> </span>refs1.bib
1919
- <span class="gu"> - refs2.bib</span>
1920
- <span class="gu">---</span>
1921
- </pre>
1922
- </div>
1923
-
1924
- <p>
1925
- For complete documentation of citations and bibliography, see <a href="Citations.html">Citations</a>.
1926
- </p>
1927
-
1928
- <h2 id="indices">
1929
- Indices
1930
- </h2>
1931
-
1932
- <p>
1933
- <strong>Note:</strong> Indices are supported in <strong>MultiMarkdown</strong> and <strong>unified</strong> modes. Enabled by default in these modes.
1934
- </p>
1935
-
1936
- <h3 `--no-title-captions-only` id="mmark-index-syntax">
1937
- mmark Index&nbsp;Syntax
1938
- </h3>
1939
-
1940
- <p>
1941
- <strong>Basic index entry:</strong>
1942
- </p>
1943
-
1944
- <div class="highlight">
1945
- <pre><span></span>This is about protocols &lt;!--IDX:idxref-0--&gt;.
1946
- </pre>
1947
- </div>
1948
-
1949
- <p>
1950
- <strong>Sub-item entry:</strong>
1951
- </p>
1952
-
1953
- <div class="highlight">
1954
- <pre><span></span>HTTP/1.1 &lt;!--IDX:idxref-1--&gt; is a protocol version.
1955
- </pre>
1956
- </div>
1957
-
1958
- <p>
1959
- <strong>Primary entry (bold in index):</strong>
1960
- </p>
1961
-
1962
- <div class="highlight">
1963
- <pre><span></span>This is a primary topic &lt;!--IDX:idxref-2--&gt;.
1964
- </pre>
1965
- </div>
1966
-
1967
- <p>
1968
- <strong>Multiple entries:</strong>
1969
- </p>
1970
-
1971
- <div class="highlight">
1972
- <pre><span></span>Protocols &lt;!--IDX:idxref-3--&gt; and implementations &lt;!--IDX:idxref-4--&gt; are important.
1973
- </pre>
1974
- </div>
1975
-
1976
- <h3 Use title or alt for captions (default). id="textindex-syntax">
1977
- TextIndex&nbsp;Syntax
1978
- </h3>
1979
-
1980
- <p>
1981
- <strong>Basic syntax (indexes preceding word):</strong>
1982
- </p>
1983
-
1984
- <div class="highlight">
1985
- <pre><span></span>Most mechanical keyboard firmware&lt;!--IDX:idxref-5--&gt; supports key combinations.
1986
- </pre>
1987
- </div>
1988
-
1989
- <p>
1990
- <strong>Explicit term:</strong>
1991
- </p>
1992
-
1993
- <div class="highlight">
1994
- <pre><span></span>This uses [key combinations]&lt;!--IDX:idxref-6--&gt; for indexing.
1995
- </pre>
1996
- </div>
1997
-
1998
- <p>
1999
- <strong>With parameters:</strong>
2000
- </p>
2001
-
2002
- <div class="highlight">
2003
- <pre><span></span>Term&lt;!--IDX:idxref-7--&gt;
2004
- </pre>
2005
- </div>
2006
-
2007
- <h3 id="leanpub-index-syntax">
2008
- Leanpub Index&nbsp;Syntax
2009
- </h3>
2010
-
2011
- <p>
2012
- Leanpub (Markua) index syntax uses <code>&lt;!--IDX:idxref-8--&gt;</code> to mark index entries. See the <a href="https://help.leanpub.com/en/articles/6961502-how-to-create-an-index-in-a-leanpub-book">Leanpub index documentation</a>.
2013
- <strong>Basic index entry:</strong>
2014
- </p>
2015
-
2016
- <div class="highlight">
2017
- <pre><span></span>Call me Ishmael&lt;!--IDX:idxref-9--&gt;
2018
- </pre>
2019
- </div>
2020
-
2021
- <p>
2022
- <strong>Entries under headings (hierarchical):</strong>
2023
- </p>
2024
-
2025
- <div class="highlight">
2026
- <pre><span></span>Niagara&lt;!--IDX:idxref-10--&gt; is a waterfall.
2027
- </pre>
2028
- </div>
2029
-
2030
- <p>
2031
- <strong>Sort form:</strong>
2032
- </p>
2033
-
2034
- <div class="highlight">
2035
- <pre><span></span>Sabbath&lt;!--IDX:idxref-11--&gt; afternoon.
2036
- </pre>
2037
- </div>
2038
-
2039
- <h3 id="index-generation">
2040
- Index&nbsp;Generation
2041
- </h3>
2042
-
2043
- <p>
2044
- The index is automatically generated at the end of the document or at the <code>&lt;!--INDEX--&gt;</code> marker if present:
2045
- </p>
2046
-
2047
- <div class="highlight">
2048
- <pre><span></span><span class="gh"># Document</span>
2049
-
2050
- This is about protocols &lt;!--IDX:idxref-12--&gt;.
2051
-
2052
- &lt;!--INDEX--&gt;
2053
-
2054
- More content after the index.
2055
- </pre>
2056
- </div>
2057
-
2058
- <p>
2059
- <strong>Index features:</strong>
2060
- </p>
2061
-
2062
- <ul>
2063
-
2064
- <li>
2065
- Entries are sorted alphabetically
2066
- </li>
2067
-
2068
- <li>
2069
- Can be grouped by first letter (default)
2070
- </li>
2071
-
2072
- <li>
2073
- Sub-items are nested under main terms
2074
- </li>
2075
-
2076
- <li>
2077
- Primary entries are marked (typically bold)
2078
- </li>
2079
-
2080
- <li>
2081
- Each entry links back to its location in the document
2082
- <strong>Suppress index:</strong>
2083
- Use <code>--no-index</code> to suppress index generation while still creating index markers.
2084
- </li>
2085
-
2086
- </ul>
2087
-
2088
- <h2 id="math">
2089
- Math
2090
- </h2>
2091
-
2092
- <p>
2093
- <strong>Inline math:</strong>
2094
- </p>
2095
-
2096
- <div class="highlight">
2097
- <pre><span></span>The equation $E = mc^2$ is famous.
2098
- </pre>
2099
- </div>
2100
-
2101
- <p>
2102
- <strong>Display math:</strong>
2103
- </p>
2104
-
2105
- <div class="highlight">
2106
- <pre><span></span>$$
2107
- \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
2108
- $$
2109
- </pre>
2110
- </div>
2111
-
2112
- <p>
2113
- Math is wrapped in spans with appropriate classes for MathJax or KaTeX.
2114
- </p>
2115
-
2116
- <h2 id="wiki-links">
2117
- Wiki&nbsp;Links
2118
- </h2>
2119
-
2120
- <p>
2121
- <strong>Note:</strong> Wiki links are <strong>disabled by default</strong> in all modes. Use <code>--wikilinks</code> to enable.
2122
- Wiki links use double square brackets <code>[[...]]</code> to create links to other pages. They’re converted to standard <abbr title="Hypertext Markup Language">HTML</abbr> <code>&lt;a&gt;</code> tags with URLs generated from the page name.
2123
- </p>
2124
-
2125
- <h3 id="syntax">
2126
- Syntax
2127
- </h3>
2128
-
2129
- <div class="highlight">
2130
- <pre><span></span>[[Page Name]] # Link to page
2131
- [[Page Name|Display Text]] # Custom display text
2132
- [[Page Name#Section]] # Link to section
2133
- [[Page Name#Section|Display]] # Custom display with section
2134
- </pre>
2135
- </div>
2136
-
2137
- <h3 id="conversion-process">
2138
- Conversion&nbsp;Process
2139
- </h3>
2140
-
2141
- <p>
2142
- Wiki links are converted to <abbr title="Hypertext Markup Language">HTML</abbr> links through the following process:
2143
- </p>
2144
-
2145
- <ol>
2146
-
2147
- <li>
2148
- <strong>Page name extraction</strong>: The text between <code>[[</code> and <code>]]</code> is parsed
2149
- </li>
2150
-
2151
- <li>
2152
- <strong>Display text</strong>: If a pipe <code>|</code> is present, text after the pipe becomes the link text; otherwise, the page name is used
2153
- </li>
2154
-
2155
- <li>
2156
- <strong>Section anchor</strong>: If a hash <code>#</code> is present in the page name, it’s extracted as a section anchor
2157
- </li>
2158
-
2159
- <li>
2160
- <strong>URL generation</strong>: The page name is converted to a URL based on configuration options:
2161
- <ul>
2162
-
2163
- <li>
2164
- <strong>Space handling</strong>: Spaces in page names are converted according to <code>--wikilink-space</code> mode (default: <code>dash</code>)
2165
- </li>
2166
-
2167
- <li>
2168
- <strong>Extension</strong>: A file extension can be added via <code>--wikilink-extension</code> (default: none)
2169
- </li>
2170
-
2171
- </ul>
2172
-
2173
- </li>
2174
-
2175
- </ol>
2176
-
2177
- <h3 id="space-handling-options">
2178
- Space Handling&nbsp;Options
2179
- </h3>
2180
-
2181
- <p>
2182
- The <code>--wikilink-space</code> option controls how spaces in page names are converted:
2183
- </p>
2184
-
2185
- <ul>
2186
-
2187
- <li>
2188
- <strong><code>dash</code></strong> (default): Spaces become dashes
2189
- <ul>
2190
-
2191
- <li>
2192
- <code>[[Home Page]]</code> → <code>href=&quot;Home-Page&quot;</code>
2193
- </li>
2194
-
2195
- </ul>
2196
-
2197
- </li>
2198
-
2199
- <li>
2200
- <strong><code>none</code></strong>: Spaces are removed
2201
- <ul>
2202
-
2203
- <li>
2204
- <code>[[Home Page]]</code> → <code>href=&quot;HomePage&quot;</code>
2205
- </li>
2206
-
2207
- </ul>
2208
-
2209
- </li>
2210
-
2211
- <li>
2212
- <strong><code>underscore</code></strong>: Spaces become underscores
2213
- <ul>
2214
-
2215
- <li>
2216
- <code>[[Home Page]]</code> → <code>href=&quot;Home_Page&quot;</code>
2217
- </li>
2218
-
2219
- </ul>
2220
-
2221
- </li>
2222
-
2223
- <li>
2224
- <strong><code>space</code></strong>: Spaces are kept (URL-encoded as <code>%20</code>)
2225
- <ul>
2226
-
2227
- <li>
2228
- <code>[[Home Page]]</code> → <code>href=&quot;Home%20Page&quot;</code>
2229
- </li>
2230
-
2231
- </ul>
2232
-
2233
- </li>
2234
-
2235
- </ul>
2236
-
2237
- <h3 id="file-extensions">
2238
- File&nbsp;Extensions
2239
- </h3>
2240
-
2241
- <p>
2242
- The <code>--wikilink-extension</code> option adds a file extension to generated URLs:
2243
- </p>
2244
-
2245
- <ul>
2246
-
2247
- <li>
2248
- <code>--wikilink-extension html</code> → <code>href=&quot;Page.html&quot;</code>
2249
- </li>
2250
-
2251
- <li>
2252
- <code>--wikilink-extension md</code> → <code>href=&quot;Page.md&quot;</code>
2253
- </li>
2254
-
2255
- <li>
2256
- The dot is added automatically if not provided
2257
- </li>
2258
-
2259
- </ul>
2260
-
2261
- <h3 id="examples">
2262
- Examples
2263
- </h3>
2264
-
2265
- <p>
2266
- <strong>Basic usage:</strong>
2267
- </p>
2268
-
2269
- <div class="highlight">
2270
- <pre><span></span>apex<span class="w"> </span>document.md<span class="w"> </span>--wikilinks
2271
- </pre>
2272
- </div>
2273
-
2274
- <p>
2275
- <strong>Input:</strong>
2276
- </p>
2277
-
2278
- <div class="highlight">
2279
- <pre><span></span>See [[Main Page]] for details.
2280
- Or visit [[Main Page|the main page]] with custom text.
2281
- Link to [[Main Page#Introduction]] for a specific section.
2282
- </pre>
2283
- </div>
2284
-
2285
- <p>
2286
- <strong>Output (default - dash mode, no extension):</strong>
2287
- </p>
2288
-
2289
- <div class="highlight">
2290
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>See <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;Main-Page&quot;</span><span class="p">&gt;</span>Main Page<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> for details.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
2291
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Or visit <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;Main-Page&quot;</span><span class="p">&gt;</span>the main page<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> with custom text.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
2292
- <span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>Link to <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;Main-Page#Introduction&quot;</span><span class="p">&gt;</span>Main Page<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> for a specific section.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
2293
- </pre>
2294
- </div>
2295
-
2296
- <p>
2297
- <strong>With extension and space mode:</strong>
2298
- </p>
2299
-
2300
- <div class="highlight">
2301
- <pre><span></span>apex<span class="w"> </span>document.md<span class="w"> </span>--wikilinks<span class="w"> </span>--wikilink-space<span class="w"> </span>dash<span class="w"> </span>--wikilink-extension<span class="w"> </span>html
2302
- </pre>
2303
- </div>
2304
-
2305
- <p>
2306
- <strong>Input:</strong>
2307
- </p>
2308
-
2309
- <div class="highlight">
2310
- <pre><span></span>See [[Home Page]] for details.
2311
- </pre>
2312
- </div>
2313
-
2314
- <p>
2315
- <strong>Output:</strong>
2316
- </p>
2317
-
2318
- <div class="highlight">
2319
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>See <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;Home-Page.html&quot;</span><span class="p">&gt;</span>Home Page<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> for details.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
2320
- </pre>
2321
- </div>
2322
-
2323
- <p>
2324
- <strong>With underscore mode:</strong>
2325
- </p>
2326
-
2327
- <div class="highlight">
2328
- <pre><span></span>apex<span class="w"> </span>document.md<span class="w"> </span>--wikilinks<span class="w"> </span>--wikilink-space<span class="w"> </span>underscore
2329
- </pre>
2330
- </div>
2331
-
2332
- <p>
2333
- <strong>Input:</strong>
2334
- </p>
2335
-
2336
- <div class="highlight">
2337
- <pre><span></span>See [[User Guide]] for help.
2338
- </pre>
2339
- </div>
2340
-
2341
- <p>
2342
- <strong>Output:</strong>
2343
- </p>
2344
-
2345
- <div class="highlight">
2346
- <pre><span></span><span class="p">&lt;</span><span class="nt">p</span><span class="p">&gt;</span>See <span class="p">&lt;</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;User_Guide&quot;</span><span class="p">&gt;</span>User Guide<span class="p">&lt;/</span><span class="nt">a</span><span class="p">&gt;</span> for help.<span class="p">&lt;/</span><span class="nt">p</span><span class="p">&gt;</span>
2347
- </pre>
2348
- </div>
2349
-
2350
- <p>
2351
- For complete option details, see <a href="Command-Line-Options#--wikilinks">Command Line Options</a>.
2352
- </p>
2353
-
2354
- <h2 id="critic-markup">
2355
- Critic&nbsp;Markup
2356
- </h2>
2357
-
2358
- <p>
2359
- Track changes and annotations. Apex supports the standard CriticMarkup forms, and also provides a simple <code>++insert++</code> shorthand for <abbr title="Hypertext Markup Language">HTML</abbr> <code>&lt;ins&gt;</code> tags (see below).
2360
- </p>
2361
-
2362
- <div class="highlight">
2363
- <pre><span></span>&lt;ins class=&quot;critic&quot;&gt;addition&lt;/ins&gt; # Added text
2364
- &lt;del class=&quot;critic&quot;&gt;deletion&lt;/del&gt; # Deleted text
2365
- &lt;del class=&quot;critic break&quot;&gt;old text&lt;/del&gt;&lt;ins class=&quot;critic break&quot;&gt;new text&lt;/ins&gt; # Substitution
2366
- &lt;mark class=&quot;critic&quot;&gt;highlighted&lt;/mark&gt; # Highlighted text
2367
- &lt;span class=&quot;critic comment&quot;&gt;comment text&lt;/span&gt; # Comment/annotation
2368
- </pre>
2369
- </div>
2370
-
2371
- <p>
2372
- In addition to the curly-brace CriticMarkup form for insertions, you can use a plain <code>++insert++</code> shorthand:
2373
- </p>
2374
-
2375
- <div class="highlight">
2376
- <pre><span></span>+insert++ # Renders as &lt;ins&gt;insert&lt;/ins&gt;
2377
- This is &lt;ins&gt;important&lt;/ins&gt; text. # Inline insertion
2378
- </pre>
2379
- </div>
2380
-
2381
- <blockquote>
2382
-
2383
- <p>
2384
- Note: <code>++insert++</code> is a convenience syntax for <code>&lt;ins&gt;…&lt;/ins&gt;</code> and is independent of CriticMarkup’s <code>&lt;ins class=&quot;critic&quot;&gt;...&lt;/ins&gt;</code> form.
2385
- See <a href="Command-Line-Options.html">Command Line Options</a> for <code>--accept</code> and <code>--reject</code> modes.
2386
- </p>
2387
-
2388
- </blockquote>
2389
-
2390
- <h2 id="callouts">
2391
- Callouts
2392
- </h2>
2393
-
2394
- <p>
2395
- Bear/Obsidian/Xcode Playground syntax:
2396
- </p>
2397
-
2398
- <div class="highlight">
2399
- <pre><span></span><span class="k">&gt; </span><span class="ge">[!NOTE] Title</span>
2400
- <span class="k">&gt; </span><span class="ge">This is a note callout</span>
2401
-
2402
- <span class="k">&gt; </span><span class="ge">[!WARNING] Be Careful</span>
2403
- <span class="k">&gt; </span><span class="ge">Warning content</span>
2404
-
2405
- <span class="k">&gt; </span><span class="ge">[!TIP] Pro Tip</span>
2406
- <span class="k">&gt; </span><span class="ge">Helpful advice</span>
2407
-
2408
- <span class="k">&gt; </span><span class="ge">[!DANGER] Critical</span>
2409
- <span class="k">&gt; </span><span class="ge">Dangerous operation</span>
2410
-
2411
- <span class="k">&gt; </span><span class="ge">[!INFO] Information</span>
2412
- <span class="k">&gt; </span><span class="ge">Informational content</span>
2413
- </pre>
2414
- </div>
2415
-
2416
- <p>
2417
- <strong>Collapsible callouts:</strong>
2418
- </p>
2419
-
2420
- <div class="highlight">
2421
- <pre><span></span><span class="k">&gt; </span><span class="ge">[!NOTE]+ Expandable</span>
2422
- <span class="k">&gt; </span><span class="ge">Defaults to open</span>
2423
-
2424
- <span class="k">&gt; </span><span class="ge">[!NOTE]- Collapsed</span>
2425
- <span class="k">&gt; </span><span class="ge">Defaults to closed</span>
2426
- </pre>
2427
- </div>
2428
-
2429
- <h2 id="file-includes">
2430
- File&nbsp;Includes
2431
- </h2>
2432
-
2433
- <p>
2434
- <strong>Marked syntax:</strong>
2435
- </p>
2436
-
2437
- <div class="highlight">
2438
- <pre><span></span> # Include and process Markdown
2439
- # Include as code block
2440
- # Include raw <abbr title="Hypertext Markup Language">HTML</abbr>
2441
- </pre>
2442
- </div>
2443
-
2444
- <p>
2445
- <strong>MultiMarkdown transclusion:</strong>
2446
- </p>
2447
-
2448
- <div class="highlight">
2449
- <pre><span></span>{{file.md}} # Include file
2450
- {{file.*}} # Prefer file.html, file.md, file.txt, file.tex (in that order)
2451
- <span class="gh"># Apex Documentation Generators</span>
2452
-
2453
- This directory contains scripts to generate documentation from the Apex wiki.
2454
-
2455
- <span class="gu">## Scripts</span>
2456
-
2457
- <span class="gu">### `generate_docset.rb`</span>
2458
-
2459
- Generates Dash docsets for Apex documentation.
2460
-
2461
- <span class="gs">**Usage:**</span>
2462
- ```bash
2463
- ./generate_docset.rb [single|multi]
2464
- </pre>
2465
- </div>
2466
-
2467
- <ul>
2468
-
2469
- <li>
2470
- <code>single</code> - Generate single-page CLI options docset (ApexCLI.docset)
2471
- </li>
2472
-
2473
- <li>
2474
- <code>multi</code> - Generate multi-page docset from wiki files (Apex.docset, default)
2475
- </li>
2476
-
2477
- </ul>
2478
-
2479
- <p>
2480
- <strong>Output:</strong>
2481
- </p>
2482
-
2483
- <ul>
2484
-
2485
- <li>
2486
- Docsets are generated in <code>docsets/</code> directory
2487
- </li>
2488
-
2489
- <li>
2490
- The script automatically clones the wiki from GitHub and cleans up after running
2491
- </li>
2492
-
2493
- </ul>
2494
-
2495
- <h3 id="generatesinglehtmlrb">
2496
- <code>generate_single_html.rb</code>
2497
- </h3>
2498
-
2499
- <p>
2500
- Generates a single <abbr title="Hypertext Markup Language">HTML</abbr> file with all wiki pages, using JavaScript to show/hide pages.
2501
- </p>
2502
-
2503
- <p>
2504
- <strong>Usage:</strong>
2505
- </p>
2506
-
2507
- <div class="highlight">
2508
- <pre><span></span>./generate_single_html.rb
2509
- </pre>
2510
- </div>
2511
-
2512
- <p>
2513
- <strong>Output:</strong>
2514
- </p>
2515
-
2516
- <ul>
2517
-
2518
- <li>
2519
- <abbr title="Hypertext Markup Language">HTML</abbr> file is generated in <code>html/apex-docs.html</code>
2520
- </li>
2521
-
2522
- <li>
2523
- The script automatically clones the wiki from GitHub and cleans up after running
2524
- </li>
2525
-
2526
- </ul>
2527
-
2528
- <h3 id="generateappdocsrb">
2529
- <code>generate_app_docs.rb</code>
2530
- </h3>
2531
-
2532
- <p>
2533
- Generates app-focused documentation from pre-transformed Markdown files. This script reads from <code>app-transformed/</code> and generates a single <abbr title="Hypertext Markup Language">HTML</abbr> file suitable for embedding in apps like Marked.app.
2534
- </p>
2535
-
2536
- <p>
2537
- <strong>Usage:</strong>
2538
- </p>
2539
-
2540
- <div class="highlight">
2541
- <pre><span></span>./generate_app_docs.rb
2542
- </pre>
2543
- </div>
2544
-
2545
- <p>
2546
- <strong>Output:</strong>
2547
- </p>
2548
-
2549
- <ul>
2550
-
2551
- <li>
2552
- <abbr title="Hypertext Markup Language">HTML</abbr> file is generated in <code>html/apex-app-docs.html</code>
2553
- </li>
2554
-
2555
- <li>
2556
- Settings table is generated in <code>app-settings-table.md</code>
2557
- </li>
2558
-
2559
- <li>
2560
- Uses pre-transformed files from <code>app-transformed/</code> directory
2561
- </li>
2562
-
2563
- </ul>
2564
-
2565
- <p>
2566
- <strong>Note:</strong> This script requires pre-transformed Markdown files. See “AI Transformation Workflow” below for how to create them.
2567
- </p>
2568
-
2569
- <h3 id="generateappdocsairb">
2570
- <code>generate_app_docs_ai.rb</code>
2571
- </h3>
2572
-
2573
- <p>
2574
- Uses AI (via cursor-agent or similar) to transform CLI-focused documentation into app-focused documentation. This script can automatically transform wiki pages by replacing CLI references with app Settings references.
2575
- </p>
2576
-
2577
- <p>
2578
- <strong>Usage:</strong>
2579
- </p>
2580
-
2581
- <div class="highlight">
2582
- <pre><span></span>./generate_app_docs_ai.rb
2583
- </pre>
2584
- </div>
2585
-
2586
- <p>
2587
- <strong>Requirements:</strong>
2588
- </p>
2589
-
2590
- <ul>
2591
-
2592
- <li>
2593
- <code>cursor-agent</code> or similar AI agent tool
2594
- </li>
2595
-
2596
- <li>
2597
- <code>transform_for_app.md</code> file (copy from <code>transform_for_app.example.md</code>)
2598
- </li>
2599
-
2600
- </ul>
2601
-
2602
- <p>
2603
- <strong>Output:</strong>
2604
- </p>
2605
-
2606
- <ul>
2607
-
2608
- <li>
2609
- Transformed Markdown files in <code>app-transformed/</code> directory
2610
- </li>
2611
-
2612
- <li>
2613
- <abbr title="Hypertext Markup Language">HTML</abbr> file is generated in <code>html/apex-app-docs.html</code>
2614
- </li>
2615
-
2616
- <li>
2617
- Settings table is generated in <code>app-settings-table.md</code>
2618
- </li>
2619
-
2620
- </ul>
2621
-
2622
- <p>
2623
- <strong>Note:</strong> This script requires manual setup. See “AI Transformation Workflow” below.
2624
- </p>
2625
-
2626
- <h2 id="requirements">
2627
- Requirements
2628
- </h2>
2629
-
2630
- <ul>
2631
-
2632
- <li>
2633
- Ruby
2634
- </li>
2635
-
2636
- <li>
2637
- Apex binary (in PATH or in <code>../build-release/apex</code>)
2638
- </li>
2639
-
2640
- <li>
2641
- <code>sqlite3</code> gem (for multi-page docset): <code>gem install sqlite3</code>
2642
- </li>
2643
-
2644
- <li>
2645
- <code>mmd2cheatset</code> (for single-page docset): Should be at <code>~/Desktop/Code/mmd2cheatset/mmd2cheatset.rb</code>
2646
- </li>
2647
-
2648
- <li>
2649
- Git (for cloning the wiki)
2650
- </li>
2651
-
2652
- </ul>
2653
-
2654
- <h2 id="directory-structure">
2655
- Directory&nbsp;Structure
2656
- </h2>
2657
-
2658
- <pre><code class="highlight ">documentation/
2659
- ├── generate_docset.rb # Dash docset generator
2660
- ├── generate_single_html.rb # Single &lt;abbr title="Hypertext Markup Language"&gt;HTML&lt;/abbr&gt; file generator
2661
- ├── generate_app_docs.rb # App docs generator (uses pre-transformed files)
2662
- ├── generate_app_docs_ai.rb # AI-powered app docs transformer
2663
- ├── transform_for_app.example.md # Example transformation instructions
2664
- ├── docsets/ # Generated docsets (gitignored)
2665
- │ ├── Apex.docset
2666
- │ └── ApexCLI.docset
2667
- ├── html/ # Generated &lt;abbr title="Hypertext Markup Language"&gt;HTML&lt;/abbr&gt; files (gitignored)
2668
- │ ├── apex-docs.html
2669
- │ └── apex-app-docs.html
2670
- ├── app-transformed/ # Transformed Markdown files (gitignored)
2671
- │ ├── Syntax.md
2672
- │ ├── Modes.md
2673
- │ ├── Plugins.md
2674
- │ └── ...
2675
- └── app-settings-table.md # Generated settings reference table
2676
- </code></pre>
2677
-
2678
- <h2 id="how-it-works">
2679
- How&nbsp;It&nbsp;Works
2680
- </h2>
2681
-
2682
- <h3 id="standard-documentation-generation">
2683
- Standard Documentation&nbsp;Generation
2684
- </h3>
2685
-
2686
- <p>
2687
- The standard scripts (<code>generate_docset.rb</code> and <code>generate_single_html.rb</code>):
2688
- </p>
2689
-
2690
- <ol>
2691
-
2692
- <li>
2693
- Clone the wiki from <code>https://github.com/ApexMarkdown/apex.wiki.git</code> into <code>apex.wiki/</code>
2694
- </li>
2695
-
2696
- <li>
2697
- Process the wiki files
2698
- </li>
2699
-
2700
- <li>
2701
- Generate the output
2702
- </li>
2703
-
2704
- <li>
2705
- Clean up by removing the cloned wiki directory
2706
- </li>
2707
-
2708
- </ol>
2709
-
2710
- <p>
2711
- This ensures the latest version of the wiki is always used and no local wiki clone is required.
2712
- </p>
2713
-
2714
- <h3 id="ai-transformation-workflow">
2715
- AI Transformation&nbsp;Workflow
2716
- </h3>
2717
-
2718
- <p>
2719
- The app-focused documentation uses a hybrid approach:
2720
- </p>
2721
-
2722
- <ol>
2723
-
2724
- <li>
2725
- <strong>Manual Transformation (Recommended)</strong>
2726
- <ul>
2727
-
2728
- <li>
2729
- Copy <code>transform_for_app.example.md</code> to <code>transform_for_app.md</code>
2730
- </li>
2731
-
2732
- <li>
2733
- Edit <code>transform_for_app.md</code> to match your app’s settings structure
2734
- </li>
2735
-
2736
- <li>
2737
- Manually transform wiki pages using the instructions in <code>transform_for_app.md</code>
2738
- </li>
2739
-
2740
- <li>
2741
- Save transformed files to <code>app-transformed/</code> directory
2742
- </li>
2743
-
2744
- <li>
2745
- Run <code>generate_app_docs.rb</code> to generate the <abbr title="Hypertext Markup Language">HTML</abbr>
2746
- </li>
2747
-
2748
- </ul>
2749
-
2750
- </li>
2751
-
2752
- <li>
2753
- <strong>AI-Powered Transformation (Experimental)</strong>
2754
- <ul>
2755
-
2756
- <li>
2757
- Copy <code>transform_for_app.example.md</code> to <code>transform_for_app.md</code>
2758
- </li>
2759
-
2760
- <li>
2761
- Edit <code>transform_for_app.md</code> if needed for your app
2762
- </li>
2763
-
2764
- <li>
2765
- Ensure <code>cursor-agent</code> or similar AI tool is available
2766
- </li>
2767
-
2768
- <li>
2769
- Run <code>generate_app_docs_ai.rb</code> to automatically transform files
2770
- </li>
2771
-
2772
- <li>
2773
- Review and edit the generated files in <code>app-transformed/</code> as needed
2774
- </li>
2775
-
2776
- <li>
2777
- Run <code>generate_app_docs.rb</code> to generate the <abbr title="Hypertext Markup Language">HTML</abbr>
2778
- </li>
2779
-
2780
- </ul>
2781
-
2782
- </li>
2783
-
2784
- </ol>
2785
-
2786
- <p>
2787
- <strong>Transformation Instructions:</strong>
2788
- </p>
2789
-
2790
- <p>
2791
- The <code>transform_for_app.example.md</code> file contains comprehensive instructions for transforming CLI-focused documentation to app-focused documentation. Key transformations include:
2792
- </p>
2793
-
2794
- <ul>
2795
-
2796
- <li>
2797
- Replace CLI flags (<code>--flag</code>) with Settings references (<code>Settings-&gt;Category-&gt;Setting Name</code>)
2798
- </li>
2799
-
2800
- <li>
2801
- Remove command-line examples (code blocks showing <code>apex</code> commands)
2802
- </li>
2803
-
2804
- <li>
2805
- Remove links to “Command Line Options” page
2806
- </li>
2807
-
2808
- <li>
2809
- Add app-specific instructions (e.g., “Marked will automatically detect…”)
2810
- </li>
2811
-
2812
- <li>
2813
- Page-specific transformations for Multi-File-Documents, Plugins, Modes, etc.
2814
- </li>
2815
-
2816
- </ul>
2817
-
2818
- <p>
2819
- <strong>Example:</strong>
2820
- </p>
2821
-
2822
- <p>
2823
- <strong>Before (CLI-focused):</strong>
2824
- </p>
2825
-
2826
- <blockquote>
2827
-
2828
- <p>
2829
- Use the <code>--plugins</code> flag to enable plugins:
2830
- </p>
2831
-
2832
- <div class="highlight">
2833
- <pre><span></span>apex<span class="w"> </span>document.md<span class="w"> </span>--plugins
2834
- </pre>
2835
- </div>
2836
-
2837
- </blockquote>
2838
-
2839
- <p>
2840
- <strong>After (App-focused):</strong>
2841
- </p>
2842
-
2843
- <blockquote>
2844
-
2845
- <p>
2846
- Enable plugins by checking <strong>Settings-&gt;Processor-&gt;Include Plugins</strong>.
2847
- </p>
2848
-
2849
- </blockquote>
2850
-
2851
- <p>
2852
- <strong>Important Notes:</strong>
2853
- </p>
2854
-
2855
- <ul>
2856
-
2857
- <li>
2858
- The <code>app-transformed/</code> directory and <code>transform_for_app.md</code> are gitignored
2859
- </li>
2860
-
2861
- <li>
2862
- This allows you to maintain app-specific documentation without committing it to the public repo
2863
- </li>
2864
-
2865
- <li>
2866
- The example file (<code>transform_for_app.example.md</code>) is tracked in git as a template
2867
- # Glob include (first matching .md file)
2868
- {{c?de.py}} # ? wildcard (e.g. resolves to code.py)
2869
- </li>
2870
-
2871
- </ul>
2872
-
2873
- <pre><code class="highlight ">
2874
- `{{file.*}}` implements MultiMarkdown-style wildcard resolution, trying common extensions in a preferred order.
2875
- Patterns containing `*`, `?`, `[]`, or `{}` are treated as glob patterns and resolved relative to the current transclude base (see metadata `transclude base`).
2876
- **iA Writer syntax:**
2877
- ```markdown
2878
- /image.png # Intelligent include (detects type)
2879
- /code.py # Auto-detects as code block
2880
- /document.md # Auto-detects as Markdown
2881
- </code></pre>
2882
-
2883
- <p>
2884
- CSV and TSV files automatically convert to tables.
2885
- </p>
2886
-
2887
- <h3 id="custom-csvtsv-delimiters-in-includes">
2888
- Custom CSV/TSV Delimiters in&nbsp;Includes
2889
- </h3>
2890
-
2891
- <p>
2892
- CSV and TSV includes default to comma (CSV) or tab (TSV), but you can override the delimiter per include.
2893
- <strong>Marked (<code>&lt;&lt;[...]</code>) embedded override:</strong>
2894
- </p>
2895
-
2896
- <div class="highlight">
2897
- <pre><span></span> # shorthand single-character delimiter
2898
- # verbose form
2899
- </pre>
2900
- </div>
2901
-
2902
- <p>
2903
- <strong>MultiMarkdown transclusion (<code>{{...}}</code>) embedded override:</strong>
2904
- </p>
2905
-
2906
- <div class="highlight">
2907
- <pre><span></span>{{data.csv{;}}}
2908
- {{data.csv{delimiter=;}}}
2909
- </pre>
2910
- </div>
2911
-
2912
- <p>
2913
- <strong>iA Writer (<code>/file</code>) override (space optional):</strong>
2914
- </p>
2915
-
2916
- <div class="highlight">
2917
- <pre><span></span>/data.csv{;}
2918
- /data.csv {;}
2919
- /data.csv{delimiter=;}
2920
- /data.csv {delimiter=;}
2921
- </pre>
2922
- </div>
2923
-
2924
- <p>
2925
- Use <code>\\t</code> as a literal tab escape in verbose form when needed:
2926
- </p>
2927
-
2928
- <div class="highlight">
2929
- <pre><span></span>/data.csv{delimiter=\t}
2930
- </pre>
2931
- </div>
2932
-
2933
- <h3 id="address-syntax-for-file-includes">
2934
- Address Syntax for File&nbsp;Includes
2935
- </h3>
2936
-
2937
- <p>
2938
- File includes support mmark-style address syntax to include specific line ranges or sections. This works with <code>{{file}}</code> and <code>&lt;&lt;[file]</code>, <code>&lt;&lt;(file)</code>, <code>&lt;&lt;{file}</code> syntaxes, but <strong>not</strong> with iA Writer <code>/file</code> syntax.
2939
- <strong>Line number ranges:</strong>
2940
- </p>
2941
-
2942
- <div class="highlight">
2943
- <pre><span></span>{{file.md}}[3,5] # Include lines 3 to 5 (exclusive of 5)
2944
- {{file.md}}[3,] # Include from line 3 to end of file
2945
- # Include lines 1 to 10 in Marked syntax
2946
- # Include lines 5 to 15 in code block
2947
- </pre>
2948
- </div>
2949
-
2950
- <p>
2951
- <strong>Regular expression ranges:</strong>
2952
- </p>
2953
-
2954
- <div class="highlight">
2955
- <pre><span></span>{{file.md}}[/START/,/END/] # Include lines between regex matches
2956
- {{file.md}}[/&lt;sup&gt;##&lt;/sup&gt; /,/&lt;sup&gt;##&lt;/sup&gt; /] # Include between heading markers
2957
- # Include from function to closing brace
2958
- </pre>
2959
- </div>
2960
-
2961
- <p>
2962
- <strong>Prefix option:</strong>
2963
- </p>
2964
-
2965
- <div class="highlight">
2966
- <pre><span></span>{{file.md}}[3,5;prefix=&quot;C: &quot;] # Prefix each line with &quot;C: &quot;
2967
- {{code.py}}[1,10;prefix=&quot; &quot;] # Indent included lines
2968
- </pre>
2969
- </div>
2970
-
2971
- <p>
2972
- <strong>Combined examples:</strong>
2973
- </p>
2974
-
2975
- <div class="highlight">
2976
- <pre><span></span><span class="gh"># Include lines 10-20 with prefix</span>
2977
- {{example.py}}[10,20;prefix=&quot; &quot;]
2978
-
2979
- <span class="gh"># Include from regex match to end</span>
2980
- {{config.md}}[/&lt;sup&gt;##&lt;/sup&gt; Config/,]
2981
-
2982
- <span class="gh"># Include between patterns with prefix</span>
2983
- {{script.sh}}[/# START/,/# END/;prefix=&quot;# &quot;]
2984
- </pre>
2985
- </div>
2986
-
2987
- <p>
2988
- <strong>Notes:</strong>
2989
- </p>
2990
-
2991
- <ul>
2992
-
2993
- <li>
2994
- Line numbers are 1-based
2995
- </li>
2996
-
2997
- <li>
2998
- End line is exclusive (e.g., <code>[3,5]</code> includes lines 3 and 4, not 5)
2999
- </li>
3000
-
3001
- <li>
3002
- Regex patterns use POSIX extended regular expressions
3003
- </li>
3004
-
3005
- <li>
3006
- If start pattern is not found, empty content is returned
3007
- </li>
3008
-
3009
- <li>
3010
- If end pattern is not found, content from start to end of file is included
3011
- </li>
3012
-
3013
- <li>
3014
- Prefix is applied to each included line
3015
- </li>
3016
-
3017
- </ul>
3018
-
3019
- <h3 id="address-syntax-for-file-includes">
3020
- Address Syntax for File&nbsp;Includes
3021
- </h3>
3022
-
3023
- <p>
3024
- Apex supports mmark-style address syntax for specifying line ranges and applying prefixes to included files. This works with <code>{{file}}</code> and <code>&lt;&lt;[file]</code> syntaxes (but not iA Writer <code>/file</code> syntax).
3025
- <strong>Line number ranges:</strong>
3026
- </p>
3027
-
3028
- <div class="highlight">
3029
- <pre><span></span>{{file.md}}[3,5] # Include lines 3 to 5 (exclusive of 5)
3030
- {{file.md}}[3,] # Include from line 3 to end of file
3031
- # Include lines 1 to 10
3032
- # Include lines 5 to 15 from code file
3033
- </pre>
3034
- </div>
3035
-
3036
- <p>
3037
- <strong>Regular expression ranges:</strong>
3038
- </p>
3039
-
3040
- <div class="highlight">
3041
- <pre><span></span>{{file.md}}[/START/,/END/] # Include lines between regex matches
3042
- {{file.md}}[/&lt;sup&gt;##&lt;/sup&gt; Section/,/&lt;sup&gt;##&lt;/sup&gt; /] # Include from section to next section
3043
- # Include between BEGIN and END markers
3044
- </pre>
3045
- </div>
3046
-
3047
- <p>
3048
- <strong>Prefix option:</strong>
3049
- </p>
3050
-
3051
- <div class="highlight">
3052
- <pre><span></span>{{file.md}}[3,5;prefix=&quot;C: &quot;] # Prefix each line with &quot;C: &quot;
3053
- {{file.md}}[prefix=&quot;&gt; &quot;] # Prefix all lines with &quot;&gt; &quot;
3054
- # Prefix with 4 spaces (indentation)
3055
- </pre>
3056
- </div>
3057
-
3058
- <p>
3059
- <strong>Combined examples:</strong>
3060
- </p>
3061
-
3062
- <div class="highlight">
3063
- <pre><span></span>{{config.py}}[/def setup/,/&lt;sup&gt;def&lt;/sup&gt; /;prefix=&quot;# &quot;]
3064
- <span class="gh"># Includes lines from &quot;def setup&quot; to next &quot;def&quot;, with &quot;# &quot; prefix</span>
3065
-
3066
- &gt;
3067
- <span class="k">&gt; </span><span class="ge">**Usage:**</span>
3068
- <span class="k">&gt; </span><span class="ge">```bash</span>
3069
- <span class="k">&gt; </span><span class="ge">./generate_docset.rb [single|multi]</span>
3070
- <span class="k">&gt; </span><span class="ge">```</span>
3071
- &gt;
3072
- <span class="k">&gt; </span><span class="ge">- `single` - Generate single-page CLI options docset (ApexCLI.docset)</span>
3073
- <span class="k">&gt; </span><span class="ge">- `multi` - Generate multi-page docset from wiki files (Apex.docset, default)</span>
3074
- &gt;
3075
- <span class="k">&gt; </span><span class="ge">**Output:**</span>
3076
-
3077
- <span class="gh"># Includes lines 10-20 with blockquote prefix</span>
3078
- </pre>
3079
- </div>
3080
-
3081
- <p>
3082
- <strong>Notes:</strong>
3083
- </p>
3084
-
3085
- <ul>
3086
-
3087
- <li>
3088
- Line numbers are 1-based
3089
- </li>
3090
-
3091
- <li>
3092
- End line is exclusive (e.g., <code>[3,5]</code> includes lines 3 and 4, not 5)
3093
- </li>
3094
-
3095
- <li>
3096
- Regex patterns use POSIX extended regular expressions
3097
- </li>
3098
-
3099
- <li>
3100
- Prefix is applied to each included line
3101
- </li>
3102
-
3103
- <li>
3104
- Address syntax does not apply to iA Writer syntax (<code>/file</code>)
3105
- </li>
3106
-
3107
- </ul>
3108
-
3109
- <h2 id="metadata">
3110
- Metadata
3111
- </h2>
3112
-
3113
- <h3 id="yaml-front-matter">
3114
- YAML Front&nbsp;Matter
3115
- </h3>
3116
-
3117
- <div class="highlight">
3118
- <pre><span></span><span class="nn">---</span>
3119
- <span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">My Document</span>
3120
- <span class="nt">author</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">John Doe</span>
3121
- <span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">2025-12-06</span>
3122
- <span class="nn">---</span>
3123
- </pre>
3124
- </div>
3125
-
3126
- <h3 id="multimarkdown-metadata">
3127
- MultiMarkdown&nbsp;Metadata
3128
- </h3>
3129
-
3130
- <div class="highlight">
3131
- <pre><span></span>Title: My Document
3132
- Author: John Doe
3133
- Date: 2025-12-06
3134
- </pre>
3135
- </div>
3136
-
3137
- <h3 id="pandoc-title-block">
3138
- Pandoc Title&nbsp;Block
3139
- </h3>
3140
-
3141
- <div class="highlight">
3142
- <pre><span></span>% My Document
3143
- % John Doe
3144
- % 2025-12-06
3145
- </pre>
3146
- </div>
3147
-
3148
- <h3 id="metadata-variables">
3149
- Metadata&nbsp;Variables
3150
- </h3>
3151
-
3152
- <p>
3153
- Use <code>[%key]</code> to insert metadata values anywhere:
3154
- </p>
3155
-
3156
- <div class="highlight">
3157
- <pre><span></span>---
3158
- title: Apex Guide
3159
- <span class="gu">version: 0.1.0</span>
3160
- <span class="gu">---</span>
3161
-
3162
- <span class="gh"># [%title]</span>
3163
-
3164
- Version: [%version]
3165
- </pre>
3166
- </div>
3167
-
3168
- <p>
3169
- You can also transform metadata values using the <code>[%key:transform]</code> syntax. See <a href="Metadata-Transforms.html">Metadata Transforms</a> for a complete guide to available transforms.
3170
- <strong>External Metadata Sources:</strong>
3171
- Metadata can also be loaded from external files or specified on the command line:
3172
- </p>
3173
-
3174
- <ul>
3175
-
3176
- <li>
3177
- <strong><code>--meta-file FILE</code></strong>: Load metadata from an external file (YAML, <abbr title="MultiMarkdown">MMD</abbr>, or Pandoc format, auto-detected)
3178
- </li>
3179
-
3180
- <li>
3181
- <strong><code>--meta KEY=VALUE</code></strong>: Set metadata from the command line (supports multiple flags and comma-separated pairs)
3182
- Metadata precedence (highest to lowest):
3183
- </li>
3184
-
3185
- <li>
3186
- Command-line metadata (<code>--meta</code>)
3187
- </li>
3188
-
3189
- <li>
3190
- Document metadata (in the document)
3191
- </li>
3192
-
3193
- <li>
3194
- File metadata (<code>--meta-file</code>)
3195
- <strong>Reusable Metadata Files:</strong>
3196
- You can create reusable metadata files for common settings like language and quotes language. This is especially useful for maintaining consistent settings across multiple documents.
3197
- <strong>Example metadata file (<code>lang-fr.yml</code>):</strong>
3198
- </li>
3199
-
3200
- </ul>
3201
-
3202
- <div class="highlight">
3203
- <pre><span></span><span class="nn">---</span>
3204
- <span class="nt">language</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fr</span>
3205
- <span class="nt">quoteslanguage</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">french</span>
3206
- <span class="nn">---</span>
3207
- </pre>
3208
- </div>
3209
-
3210
- <p>
3211
- <strong>Note:</strong> In YAML, keys with spaces must be quoted (e.g., <code>&quot;Quotes Language&quot;: french</code>). Since Apex normalizes metadata keys (removes spaces, case-insensitive), you can use keys without spaces for cleaner YAML syntax. Both <code>quoteslanguage</code> and <code>&quot;Quotes Language&quot;</code> will work.
3212
- <strong>Example metadata file (<code>lang-de.mmd</code>):</strong>
3213
- </p>
3214
-
3215
- <pre><code class="highlight ">Language: de
3216
- Quotes Language: german
3217
- </code></pre>
3218
-
3219
- <p>
3220
- <strong>Note:</strong> MultiMarkdown format allows spaces in keys, so <code>Quotes Language</code> works without quotes.
3221
- <strong>Usage:</strong>
3222
- </p>
3223
-
3224
- <div class="highlight">
3225
- <pre><span></span><span class="c1"># Use French language settings for all documents</span>
3226
- apex<span class="w"> </span>document1.md<span class="w"> </span>--meta-file<span class="w"> </span>lang-fr.yml
3227
- apex<span class="w"> </span>document2.md<span class="w"> </span>--meta-file<span class="w"> </span>lang-fr.yml
3228
- </pre>
3229
- </div>
3230
-
3231
- <p>
3232
- <strong>Benefits:</strong>
3233
- </p>
3234
-
3235
- <ul>
3236
-
3237
- <li>
3238
- <strong>Consistency</strong>: Ensure all documents use the same language settings
3239
- </li>
3240
-
3241
- <li>
3242
- <strong>Reusability</strong>: Define language and quotes language once, use across many documents
3243
- </li>
3244
-
3245
- <li>
3246
- <strong>Maintainability</strong>: Update language settings in one place
3247
- </li>
3248
-
3249
- <li>
3250
- <strong>Automatic fallback</strong>: If <code>Quotes Language</code> is not specified, it automatically uses the <code>language</code> value
3251
- <strong>Controlling Command-Line Options via Metadata:</strong>
3252
- Most command-line options can be controlled via metadata, allowing per-document configuration. Boolean options accept <code>true</code>/<code>false</code>, <code>yes</code>/<code>no</code>, or <code>1</code>/<code>0</code> (case-insensitive). String options use the value directly.
3253
- <strong>Example:</strong>
3254
- </li>
3255
-
3256
- </ul>
3257
-
3258
- <div class="highlight">
3259
- <pre><span></span><span class="nn">---</span>
3260
- <span class="nt">indices</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
3261
- <span class="nt">wikilinks</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
3262
- <span class="nt">bibliography</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">references.bib</span>
3263
- <span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">My Research Paper</span>
3264
- <span class="nt">pretty</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
3265
- <span class="nt">standalone</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
3266
- <span class="nn">---</span>
3267
- </pre>
3268
- </div>
3269
-
3270
- <p>
3271
- This enables batch processing where each file can have its own configuration. See <a href="Command-Line-Options.html">Command Line Options</a> for complete documentation of metadata options and which options can be controlled via metadata.
3272
- </p>
3273
-
3274
- <h2 id="abbreviations">
3275
- Abbreviations
3276
- </h2>
3277
-
3278
- <p>
3279
- <strong>Classic <abbr title="MultiMarkdown">MMD</abbr> syntax:</strong>
3280
- </p>
3281
-
3282
- <div class="highlight">
3283
- <pre><span></span><abbr title="Hypertext Markup Language">HTML</abbr> and <abbr title="Cascading Style Sheets">CSS</abbr> are essential.
3284
- </pre>
3285
- </div>
3286
-
3287
- <p>
3288
- <strong><abbr title="MultiMarkdown">MMD</abbr> 6 reference syntax:</strong>
3289
- </p>
3290
-
3291
- <div class="highlight">
3292
- <pre><span></span>Using <abbr title="MultiMarkdown">MMD</abbr> here and <abbr title="MultiMarkdown">MMD</abbr> again.
3293
- </pre>
3294
- </div>
3295
-
3296
- <p>
3297
- <strong><abbr title="MultiMarkdown">MMD</abbr> 6 inline syntax:</strong>
3298
- </p>
3299
-
3300
- <div class="highlight">
3301
- <pre><span></span>This is <abbr title="Markdown">MD</abbr> and <abbr title="Cascading Style Sheets">CSS</abbr>.
3302
- </pre>
3303
- </div>
3304
-
3305
- <h2 id="inline-attribute-lists-ial">
3306
- Inline Attribute Lists&nbsp;(IAL)
3307
- </h2>
3308
-
3309
- <p>
3310
- Kramdown and Pandoc syntax for adding <abbr title="Hypertext Markup Language">HTML</abbr> attributes (IDs, classes, and custom key-value pairs) to Markdown elements.
3311
- Apex supports both <strong>Kramdown-style IALs</strong> (<code>{: ...}</code>) and <strong>Pandoc-style IALs</strong> (<code>{#id .class}</code>). Both formats work identically throughout the document.
3312
- <strong>Block-level IALs</strong> appear on the line immediately after the element:
3313
- </p>
3314
-
3315
- <div class="highlight">
3316
- <pre><span></span><span class="gh"># Header</span>
3317
-
3318
- {: <span class="ni">#custom</span>-id}
3319
-
3320
- <span class="gh"># Another Header</span>
3321
-
3322
- {#custom-id-2 .highlight}
3323
-
3324
- Paragraph with class.
3325
-
3326
- {: .important}
3327
-
3328
- <span class="gu">## Another Header</span>
3329
-
3330
- {: <span class="ni">#section</span>-2 .highlight title=&quot;Section Title&quot; lang=&quot;en&quot;}
3331
- </pre>
3332
- </div>
3333
-
3334
- <p>
3335
- <strong>Inline IALs</strong> appear immediately after the element within the paragraph:
3336
- </p>
3337
-
3338
- <div class="highlight">
3339
- <pre><span></span>Here&#39;s a [<span class="nt">styled link</span>](<span class="na">url</span>){:.button} with a class.
3340
-
3341
- Here&#39;s a [<span class="nt">Pandoc-style link</span>](<span class="na">url</span>){#link-id .button} with attributes.
3342
-
3343
- This has <span class="gs">**bold text**</span>{:.bold-style} and <span class="ge">*italic text*</span>{:.italic-style}.
3344
- </pre>
3345
- </div>
3346
-
3347
- <p>
3348
- <strong>Key-value pairs</strong> allow custom attributes:
3349
- </p>
3350
-
3351
- <div class="highlight">
3352
- <pre><span></span>Paragraph.
3353
-
3354
- {: title=&quot;Important Note&quot; lang=&quot;en&quot; data-custom=&quot;value&quot;}
3355
-
3356
- [<span class="nt">Link</span>](<span class="na">url</span>){:rel=&quot;nofollow&quot; target=&quot;_blank&quot;}
3357
- </pre>
3358
- </div>
3359
-
3360
- <p>
3361
- <strong>Attribute List Definitions (ALDs)</strong> define reusable attribute sets:
3362
- </p>
3363
-
3364
- <div class="highlight">
3365
- <pre><span></span><span class="gh"># Header 1</span>
3366
-
3367
- {:my-style}
3368
-
3369
- <span class="gh"># Header 2</span>
3370
-
3371
- {:my-style}
3372
- </pre>
3373
- </div>
3374
-
3375
- <p>
3376
- <strong>ALD references can be combined with additional attributes</strong> in the same IAL. Additional attributes override or extend the ALD:
3377
- </p>
3378
-
3379
- <div class="highlight">
3380
- <pre><span></span><span class="gh"># Heading 1</span>
3381
-
3382
- {:base-style}
3383
-
3384
- <span class="gh"># Heading 2</span>
3385
-
3386
- {:base-style .class3}
3387
-
3388
- <span class="gh"># Heading 3</span>
3389
-
3390
- {:base-style <span class="ni">#override</span>-id}
3391
-
3392
- <span class="gh"># Heading 4</span>
3393
-
3394
- {:base-style .class3 rel=&quot;nofollow&quot;}
3395
- </pre>
3396
- </div>
3397
-
3398
- <p>
3399
- <strong>Behavior:</strong>
3400
- </p>
3401
-
3402
- <ul>
3403
-
3404
- <li>
3405
- <strong>Classes</strong>: Additional classes are appended to the ALD classes
3406
- </li>
3407
-
3408
- <li>
3409
- <strong>IDs</strong>: If an ID is specified in the IAL, it overrides the ALD’s ID
3410
- </li>
3411
-
3412
- <li>
3413
- <strong>Key-value attributes</strong>: If a key exists in both ALD and IAL, the IAL value overrides the ALD value
3414
- For complete documentation with examples, see <a href="Inline-Attribute-Lists.html">Inline Attribute Lists</a>.
3415
- </li>
3416
-
3417
- </ul>
3418
-
3419
- <h2 id="table-of-contents">
3420
- Table of&nbsp;Contents
3421
- </h2>
3422
-
3423
- <p>
3424
- Multiple marker formats:
3425
- </p>
3426
-
3427
- <div class="highlight">
3428
- <pre><span></span>&lt;!--TOC--&gt; # Basic TOC
3429
- &lt;!--TOC max2 min1--&gt; # With depth control
3430
- {{TOC}} # <abbr title="MultiMarkdown">MMD</abbr> style
3431
- {{TOC:2-4}} # With range
3432
- {:toc} # Kramdown IAL marker (uses same TOC engine)
3433
- </pre>
3434
- </div>
3435
-
3436
- <p>
3437
- Bare TOC markers use heading levels 1 through 3 by default. You can change that
3438
- default with <code>--toc-min-max MIN,MAX</code> or the corresponding metadata/config
3439
- setting. Marker syntax with an explicit range, such as <code>{{TOC:2-4}}</code>, overrides
3440
- the default.
3441
- Use <code>-t toc</code> to extract a Markdown unordered-list TOC from headings without
3442
- placing a TOC marker in the source document.
3443
- Headings with the <code>.no_toc</code> class are excluded from the generated TOC:
3444
- </p>
3445
-
3446
- <div class="highlight">
3447
- <pre><span></span><span class="gh"># Contents</span>
3448
-
3449
- {:.no_toc}
3450
-
3451
- {:toc}
3452
- </pre>
3453
- </div>
3454
-
3455
- <h2 id="smart-typography">
3456
- Smart&nbsp;Typography
3457
- </h2>
3458
-
3459
- <p>
3460
- Automatic conversion:
3461
- </p>
3462
-
3463
- <ul>
3464
-
3465
- <li>
3466
- <code>&quot;text&quot;</code> → <code>&quot;text&quot;</code> (smart quotes)
3467
- </li>
3468
-
3469
- <li>
3470
- <code>'text'</code> → <code>'text'</code> (smart apostrophes)
3471
- </li>
3472
-
3473
- <li>
3474
- <code>--</code> → <code>–</code> (en dash)
3475
- </li>
3476
-
3477
- <li>
3478
- <code>---</code> → <code>—</code> (em dash)
3479
- </li>
3480
-
3481
- <li>
3482
- <code>...</code> → <code>…</code> (ellipsis)
3483
- </li>
3484
-
3485
- <li>
3486
- <code>&lt;&lt;</code> → <code>«</code> (left guillemet)
3487
- </li>
3488
-
3489
- <li>
3490
- <code>&gt;&gt;</code> → <code>»</code> (right guillemet)
3491
- </li>
3492
-
3493
- </ul>
3494
-
3495
- <h2 id="github-emoji">
3496
- GitHub&nbsp;Emoji
3497
- </h2>
3498
-
3499
- <div class="highlight">
3500
- <pre><span></span>Success! <span class=\"emoji\">:rocket:</span> <span class=\"emoji\">:tada:</span> <span class=\"emoji\">:sparkles:</span>
3501
- I <span class=\"emoji\">:heart:</span> Markdown!
3502
- </pre>
3503
- </div>
3504
-
3505
- <p>
3506
- Supports 350+ GitHub emoji, converted to Unicode characters.
3507
- </p>
3508
-
3509
- <h2 id="special-markers">
3510
- Special&nbsp;Markers
3511
- </h2>
3512
-
3513
- <p>
3514
- <strong>Page breaks:</strong>
3515
- </p>
3516
-
3517
- <div class="highlight">
3518
- <pre><span></span>&lt;div class=&quot;mkpagebreak manualbreak&quot; title=&quot;Page break created by marker&quot; data-description=&quot;PAGE (Marker)&quot; style=&quot;page-break-after:always&quot;&gt;&lt;span style=&quot;display:none&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
3519
-
3520
- # <abbr title="Hypertext Markup Language">HTML</abbr> comment style
3521
-
3522
- &lt;div class=&quot;mkpagebreak manualbreak&quot; title=&quot;Page break created by marker&quot; data-description=&quot;PAGE (Marker)&quot; style=&quot;page-break-after:always&quot;&gt;&lt;span style=&quot;display:none&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
3523
-
3524
- # Kramdown style
3525
- </pre>
3526
- </div>
3527
-
3528
- <p>
3529
- <strong>Autoscroll pauses:</strong>
3530
- </p>
3531
-
3532
- <div class="highlight">
3533
- <pre><span></span>&lt;div class=&quot;autoscroll-pause&quot; data-pause=&quot;5&quot;&gt;&lt;/div&gt; # Pause for 5 seconds
3534
- </pre>
3535
- </div>
3536
-
3537
- <p>
3538
- <strong>End-of-block marker:</strong>
3539
- </p>
3540
-
3541
- <div class="highlight">
3542
- <pre><span></span><span class="k">-</span><span class="w"> </span>Item 1
3543
-
3544
- ​
3545
-
3546
- <span class="k">-</span><span class="w"> </span>Item 2
3547
- </pre>
3548
- </div>
3549
-
3550
- <p>
3551
- Forces list separation.
3552
- </p>
3553
-
3554
- <h2 id="html">
3555
- <abbr title="Hypertext Markup Language">HTML</abbr>
3556
- </h2>
3557
-
3558
- <p>
3559
- Raw <abbr title="Hypertext Markup Language">HTML</abbr> is supported (when <code>unsafe</code> option is enabled, which is default):
3560
- </p>
3561
-
3562
- <div class="highlight">
3563
- <pre><span></span>&lt;div class=&quot;custom&quot;&gt;
3564
- &lt;p&gt;This is raw <abbr title="Hypertext Markup Language">HTML</abbr> inside Markdown.&lt;/p&gt;
3565
- &lt;/div&gt;
3566
- </pre>
3567
- </div>
3568
-
3569
- <h3 id="markdown-inside-html-blocks">
3570
- Markdown Inside <abbr title="Hypertext Markup Language">HTML</abbr>&nbsp;Blocks
3571
- </h3>
3572
-
3573
- <p>
3574
- By default, Markdown inside <abbr title="Hypertext Markup Language">HTML</abbr> blocks is <strong>not</strong> parsed unless the <abbr title="Hypertext Markup Language">HTML</abbr> block contains blank lines. This follows the CommonMark specification:
3575
- </p>
3576
-
3577
- <ul>
3578
-
3579
- <li>
3580
- <strong><abbr title="Hypertext Markup Language">HTML</abbr> blocks without blank lines</strong>: Content is treated as raw <abbr title="Hypertext Markup Language">HTML</abbr> and Markdown is not parsed
3581
- <div class="highlight">
3582
- <pre><span></span>&lt;div&gt;**This is not bold**&lt;/div&gt;
3583
- </pre>
3584
- </div>
3585
-
3586
- Output: <code>&lt;div&gt;**This is not bold**&lt;/div&gt;</code>
3587
- </li>
3588
-
3589
- <li>
3590
- <strong><abbr title="Hypertext Markup Language">HTML</abbr> blocks with blank lines</strong>: Content can be parsed as Markdown
3591
- <div class="highlight">
3592
- <pre><span></span>&lt;div&gt;
3593
-
3594
- <span class="gs">**This is bold**</span>
3595
-
3596
- &lt;/div&gt;
3597
- </pre>
3598
- </div>
3599
-
3600
- Output: <code>&lt;div&gt;&lt;p&gt;&lt;strong&gt;This is bold&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;</code>
3601
- To explicitly enable Markdown parsing inside <abbr title="Hypertext Markup Language">HTML</abbr> blocks, use the <code>markdown</code> attribute (GFM extension):
3602
- </li>
3603
-
3604
- </ul>
3605
-
3606
- <div class="highlight">
3607
- <pre><span></span>&lt;div&gt;&lt;h2&gt;This is a heading&lt;/h2&gt;
3608
- &lt;ul&gt;
3609
- &lt;li&gt;List item&lt;/li&gt;
3610
- &lt;/ul&gt;
3611
- &lt;/div&gt;
3612
- </pre>
3613
- </div>
3614
-
3615
- <p>
3616
- The <code>markdown</code> attribute accepts:
3617
- </p>
3618
-
3619
- <ul>
3620
-
3621
- <li>
3622
- <code>markdown=&quot;1&quot;</code> or <code>markdown=&quot;block&quot;</code> - Parse block-level Markdown
3623
- </li>
3624
-
3625
- <li>
3626
- <code>markdown=&quot;span&quot;</code> - Parse inline Markdown only
3627
- </li>
3628
-
3629
- </ul>
3630
-
3631
- <h3 id="pandoc-fenced-divs">
3632
- Pandoc Fenced&nbsp;Divs
3633
- </h3>
3634
-
3635
- <p>
3636
- Apex supports Pandoc’s fenced divs extension, which allows you to create <abbr title="Hypertext Markup Language">HTML</abbr> <code>&lt;div&gt;</code> elements with attributes using a special fence syntax. This feature is available in <strong>unified mode only</strong> and is enabled by default.
3637
- <strong>Basic syntax:</strong>
3638
- </p>
3639
-
3640
- <div class="highlight">
3641
- <pre><span></span>&lt;div id=&quot;special&quot; class=&quot;sidebar&quot;&gt;&lt;p&gt;Here is a paragraph.&lt;/p&gt;
3642
- &lt;p&gt;And another.&lt;/p&gt;
3643
- &lt;/div&gt;
3644
- </pre>
3645
- </div>
3646
-
3647
- <p>
3648
- <strong>Opening fences:</strong>
3649
- </p>
3650
-
3651
- <ul>
3652
-
3653
- <li>
3654
- Must contain at least 3 consecutive colons (<code>:::</code>)
3655
- </li>
3656
-
3657
- <li>
3658
- Must have attributes (ID, classes, or custom attributes)
3659
- </li>
3660
-
3661
- <li>
3662
- Attributes can optionally be followed by another string of consecutive colons
3663
- <strong>Closing fences:</strong>
3664
- </li>
3665
-
3666
- <li>
3667
- Must contain at least 3 consecutive colons (<code>:::</code>)
3668
- </li>
3669
-
3670
- <li>
3671
- No attributes needed
3672
- </li>
3673
-
3674
- <li>
3675
- Number of colons doesn’t need to match the opening fence
3676
- <strong>Attributes:</strong>
3677
- Attributes use the same syntax as fenced code blocks:
3678
- </li>
3679
-
3680
- <li>
3681
- <code>{#id}</code> - ID attribute
3682
- </li>
3683
-
3684
- <li>
3685
- <code>{.class}</code> - Class attribute (can have multiple)
3686
- </li>
3687
-
3688
- <li>
3689
- <code>key=&quot;value&quot;</code> - Custom attributes with quoted values
3690
- </li>
3691
-
3692
- <li>
3693
- <code>key='value'</code> - Custom attributes with single quotes
3694
- </li>
3695
-
3696
- <li>
3697
- Single unbraced word is treated as a class name
3698
- <strong>Examples:</strong>
3699
- </li>
3700
-
3701
- </ul>
3702
-
3703
- <div class="highlight">
3704
- <pre><span></span>&lt;div id=&quot;mydiv&quot; class=&quot;container&quot;&gt;&lt;p&gt;Content here&lt;/p&gt;
3705
- &lt;/div&gt;
3706
-
3707
- &lt;div class=&quot;sidebar&quot;&gt;&lt;p&gt;Single unbraced word becomes a class&lt;/p&gt;
3708
- &lt;/div&gt;
3709
-
3710
- &lt;div id=&quot;special&quot; class=&quot;warning important&quot; key=&quot;value&quot;&gt;&lt;p&gt;Div with ID, multiple classes, and custom attribute&lt;/p&gt;
3711
- &lt;/div&gt;
3712
-
3713
- &lt;div id=&quot;special&quot; class=&quot;sidebar&quot;&gt;&lt;p&gt;Trailing colons after attributes are allowed&lt;/p&gt;
3714
- &lt;/div&gt;
3715
- </pre>
3716
- </div>
3717
-
3718
- <p>
3719
- <strong>Nested divs:</strong>
3720
- Fenced divs can be nested. Opening fences must have attributes:
3721
- </p>
3722
-
3723
- <div class="highlight">
3724
- <pre><span></span>&lt;div class=&quot;Warning&quot;&gt;&lt;p&gt;This is a warning.&lt;/p&gt;
3725
- &lt;div class=&quot;Danger&quot;&gt;&lt;p&gt;This is a warning within a warning.&lt;/p&gt;
3726
- &lt;/div&gt;
3727
- &lt;/div&gt;
3728
- </pre>
3729
- </div>
3730
-
3731
- <p>
3732
- <strong>Block types:</strong>
3733
- By default, fenced divs create <code>&lt;div&gt;</code> elements. You can specify different <abbr title="Hypertext Markup Language">HTML</abbr> block elements using the <code>&gt;blocktype</code> syntax:
3734
- </p>
3735
-
3736
- <div class="highlight">
3737
- <pre><span></span>&lt;aside class=&quot;sidebar&quot; markdown=&quot;1&quot;&gt;
3738
- This creates an &lt;aside&gt; element instead of a &lt;div&gt;.
3739
- &lt;/aside&gt;
3740
- &lt;article id=&quot;post&quot; class=&quot;main&quot; markdown=&quot;1&quot;&gt;
3741
- This creates an &lt;article&gt; element.
3742
- &lt;/article&gt;
3743
- &lt;section class=&quot;container&quot; markdown=&quot;1&quot;&gt;
3744
- This creates a &lt;section&gt; element.
3745
- &lt;/section&gt;```
3746
-
3747
- <span class="gs">**Common block types:**</span>
3748
- <span class="k">-</span><span class="w"> </span><span class="sb">`&gt;div`</span> - Default, creates a <span class="sb">`&lt;div&gt;`</span> element
3749
- <span class="k">-</span><span class="w"> </span><span class="sb">`&gt;aside`</span> - Creates an <span class="sb">`&lt;aside&gt;`</span> element (sidebars, callouts)
3750
- <span class="k">-</span><span class="w"> </span><span class="sb">`&gt;article`</span> - Creates an <span class="sb">`&lt;article&gt;`</span> element (main content)
3751
- <span class="k">-</span><span class="w"> </span><span class="sb">`&gt;section`</span> - Creates a <span class="sb">`&lt;section&gt;`</span> element (document sections)
3752
- <span class="k">-</span><span class="w"> </span><span class="sb">`&gt;details`</span> - Creates a <span class="sb">`&lt;details&gt;`</span> element (collapsible content)
3753
- <span class="k">-</span><span class="w"> </span><span class="sb">`&gt;summary`</span> - Creates a <span class="sb">`&lt;summary&gt;`</span> element (for use inside <span class="sb">`&lt;details&gt;`</span>)
3754
- <span class="gs">**Nested block types:**</span>
3755
- You can nest different block types:
3756
- ```markdown
3757
- &lt;details class=&quot;warning&quot;&gt;&lt;summary&gt;&lt;p&gt;This is a summary&lt;/p&gt;
3758
- &lt;/summary&gt;
3759
- This is the content of the details block
3760
- &lt;/details&gt;
3761
-
3762
- &lt;section class=&quot;outer&quot;&gt;&lt;p&gt;Outer section content.&lt;/p&gt;
3763
- &lt;aside class=&quot;inner&quot;&gt;&lt;p&gt;Inner aside content.&lt;/p&gt;
3764
- &lt;/aside&gt;
3765
- &lt;p&gt;More outer content.&lt;/p&gt;
3766
- &lt;/section&gt;
3767
- </pre>
3768
- </div>
3769
-
3770
- <p>
3771
- <strong>Block type with unbraced class:</strong>
3772
- The block type syntax works with unbraced class names:
3773
- </p>
3774
-
3775
- <div class="highlight">
3776
- <pre><span></span>&lt;aside class=&quot;Warning&quot;&gt;&lt;p&gt;Warning content here&lt;/p&gt;
3777
- &lt;/aside&gt;
3778
- </pre>
3779
- </div>
3780
-
3781
- <p>
3782
- This creates <code>&lt;aside class=&quot;Warning&quot;&gt;...&lt;/aside&gt;</code>.
3783
- <strong>Note:</strong> Fenced divs should be separated by blank lines from preceding and following blocks for best results.
3784
- <strong>Control:</strong>
3785
- </p>
3786
-
3787
- <ul>
3788
-
3789
- <li>
3790
- Use <code>--divs</code> to explicitly enable (default in unified mode)
3791
- </li>
3792
-
3793
- <li>
3794
- Use <code>--no-divs</code> to disable fenced divs processing
3795
- </li>
3796
-
3797
- </ul>
3798
-
3799
- <h2 id="related">
3800
- Related
3801
- </h2>
3802
-
3803
- <ul>
3804
-
3805
- <li>
3806
- <a href="Modes.html">Modes</a> - Which syntax is available in each mode
3807
- </li>
3808
-
3809
- <li>
3810
- <a href="Header-IDs.html">Header IDs</a> - Automatic header ID generation
3811
- </li>
3812
-
3813
- <li>
3814
- <a href="Command-Line-Options.html">Command Line Options</a> - Feature flags including <code>--[no-]autolink</code>, <code>--[no-]mixed-lists</code>, <code>--[no-]alpha-lists</code>, <code>--[no-]sup-sub</code>, and <code>--[no-]divs</code>
3815
- </li>
3816
-
3817
- </ul>
3818
-
3819
- <h1 id="index-section">
3820
- Index
3821
- </h1>
3822
-
3823
- <div class="index">
3824
-
3825
- <dl>
3826
-
3827
- <dt>
3828
- H
3829
- </dt>
3830
-
3831
- <dd>
3832
-
3833
- <ul>
3834
-
3835
- <li>
3836
-
3837
- HTTP <a class="index-return" href="#idxref-1"><sup>[go]</sup></a>
3838
- <ul>
3839
-
3840
- <li>
3841
-
3842
- HTTP/1.1 <a class="index-return" href="#idxref-1"><sup>[go]</sup></a>
3843
- </li>
3844
-
3845
- </ul>
3846
-
3847
- </li>
3848
-
3849
- </ul>
3850
-
3851
- </dd>
3852
-
3853
- </dl>
3854
-
3855
- <dl>
3856
-
3857
- <dt>
3858
- I
3859
- </dt>
3860
-
3861
- <dd>
3862
-
3863
- <ul>
3864
-
3865
- <li>
3866
-
3867
- Implementation <a class="index-return" href="#idxref-4"><sup>[go]</sup></a>
3868
- </li>
3869
-
3870
- <li>
3871
-
3872
- Ishmael <a class="index-return" href="#idxref-9"><sup>[go]</sup></a>
3873
- </li>
3874
-
3875
- </ul>
3876
-
3877
- </dd>
3878
-
3879
- </dl>
3880
-
3881
- <dl>
3882
-
3883
- <dt>
3884
- K
3885
- </dt>
3886
-
3887
- <dd>
3888
-
3889
- <ul>
3890
-
3891
- <li>
3892
-
3893
- key combinations <a class="index-return" href="#idxref-6"><sup>[go]</sup></a>
3894
- </li>
3895
-
3896
- </ul>
3897
-
3898
- </dd>
3899
-
3900
- </dl>
3901
-
3902
- <dl>
3903
-
3904
- <dt>
3905
- M
3906
- </dt>
3907
-
3908
- <dd>
3909
-
3910
- <ul>
3911
-
3912
- <li>
3913
-
3914
- Most mechanical keyboard firmware <a class="index-return" href="#idxref-5"><sup>[go]</sup></a>
3915
- </li>
3916
-
3917
- </ul>
3918
-
3919
- </dd>
3920
-
3921
- </dl>
3922
-
3923
- <dl>
3924
-
3925
- <dt>
3926
- N
3927
- </dt>
3928
-
3929
- <dd>
3930
-
3931
- <ul>
3932
-
3933
- <li>
3934
-
3935
- Niagara <a class="index-return" href="#idxref-10"><sup>[go]</sup></a>
3936
- <ul>
3937
-
3938
- <li>
3939
-
3940
- cataract <a class="index-return" href="#idxref-10"><sup>[go]</sup></a>
3941
- </li>
3942
-
3943
- </ul>
3944
-
3945
- </li>
3946
-
3947
- </ul>
3948
-
3949
- </dd>
3950
-
3951
- </dl>
3952
-
3953
- <dl>
3954
-
3955
- <dt>
3956
- P
3957
- </dt>
3958
-
3959
- <dd>
3960
-
3961
- <ul>
3962
-
3963
- <li>
3964
-
3965
- Primary Topic <strong> <a class="index-return" href="#idxref-2"><sup>[go]</sup></a></strong>
3966
- <ul>
3967
-
3968
- <li>
3969
-
3970
- Sub Topic <a class="index-return" href="#idxref-2"><sup>[go]</sup></a>
3971
- </li>
3972
-
3973
- </ul>
3974
-
3975
- </li>
3976
-
3977
- <li>
3978
-
3979
- Protocol <a class="index-return" href="#idxref-0"><sup>[go]</sup></a>
3980
- </li>
3981
-
3982
- <li>
3983
-
3984
- Protocol <a class="index-return" href="#idxref-3"><sup>[go]</sup></a>
3985
- </li>
3986
-
3987
- <li>
3988
-
3989
- Protocol <a class="index-return" href="#idxref-12"><sup>[go]</sup></a>
3990
- </li>
3991
-
3992
- </ul>
3993
-
3994
- </dd>
3995
-
3996
- </dl>
3997
-
3998
- <dl>
3999
-
4000
- <dt>
4001
- S
4002
- </dt>
4003
-
4004
- <dd>
4005
-
4006
- <ul>
4007
-
4008
- <li>
4009
-
4010
- Sabbath, the <a class="index-return" href="#idxref-11"><sup>[go]</sup></a>
4011
- </li>
4012
-
4013
- </ul>
4014
-
4015
- </dd>
4016
-
4017
- </dl>
4018
-
4019
- <dl>
4020
-
4021
- <dt>
4022
- T
4023
- </dt>
4024
-
4025
- <dd>
4026
-
4027
- <ul>
4028
-
4029
- <li>
4030
-
4031
- term <a class="index-return" href="#idxref-8"><sup>[go]</sup></a>
4032
- </li>
4033
-
4034
- <li>
4035
-
4036
- Term <a class="index-return" href="#idxref-7"><sup>[go]</sup></a>
4037
- <ul>
4038
-
4039
- <li>
4040
-
4041
- param2 <a class="index-return" href="#idxref-7"><sup>[go]</sup></a>
4042
- </li>
4043
-
4044
- </ul>
4045
-
4046
- </li>
4047
-
4048
- </ul>
4049
-
4050
- </dd>
4051
-
4052
- </dl>
4053
-
4054
- </div>
4055
-
4056
- <script>
4057
- // Hamburger menu functionality
4058
- (function() {
4059
- function initHamburgerMenu() {
4060
- var hamburger = document.getElementById('hamburger-menu');
4061
- var sidebar = document.querySelector('.main-toc, .sidebar');
4062
- var overlay = document.getElementById('mobile-menu-overlay');
4063
-
4064
- if (!hamburger || !sidebar) return;
4065
-
4066
- function toggleMenu() {
4067
- var isOpen = sidebar.classList.contains('mobile-open');
4068
- if (isOpen) {
4069
- sidebar.classList.remove('mobile-open');
4070
- hamburger.classList.remove('active');
4071
- if (overlay) overlay.classList.remove('active');
4072
- } else {
4073
- sidebar.classList.add('mobile-open');
4074
- hamburger.classList.add('active');
4075
- if (overlay) overlay.classList.add('active');
4076
- }
4077
- }
4078
-
4079
- hamburger.addEventListener('click', function(e) {
4080
- e.stopPropagation();
4081
- toggleMenu();
4082
- });
4083
-
4084
- if (overlay) {
4085
- overlay.addEventListener('click', function() {
4086
- toggleMenu();
4087
- });
4088
- }
4089
-
4090
- // Close menu when clicking on a sidebar link (mobile only)
4091
- if (window.innerWidth <= 768) {
4092
- var sidebarLinks = sidebar.querySelectorAll('a');
4093
- sidebarLinks.forEach(function(link) {
4094
- link.addEventListener('click', function() {
4095
- setTimeout(function() {
4096
- sidebar.classList.remove('mobile-open');
4097
- hamburger.classList.remove('active');
4098
- if (overlay) overlay.classList.remove('active');
4099
- }, 100);
4100
- });
4101
- });
4102
- }
4103
-
4104
- // Close menu on window resize if going to desktop
4105
- window.addEventListener('resize', function() {
4106
- if (window.innerWidth > 768) {
4107
- sidebar.classList.remove('mobile-open');
4108
- hamburger.classList.remove('active');
4109
- if (overlay) overlay.classList.remove('active');
4110
- }
4111
- });
4112
- }
4113
-
4114
- // Initialize when DOM is ready
4115
- if (document.readyState === 'loading') {
4116
- document.addEventListener('DOMContentLoaded', initHamburgerMenu);
4117
- } else {
4118
- initHamburgerMenu();
4119
- }
4120
- })();
4121
-
4122
- </script>
4123
- <script>
4124
- (function() {
4125
- // Clone the page TOC for floating TOC
4126
- function initFloatingTOC() {
4127
- var pageTOC = document.getElementById('page-toc-top');
4128
- var floatingTOCContent = document.getElementById('floating-toc-content');
4129
- var floatingTOC = document.getElementById('floating-toc');
4130
-
4131
- if (!pageTOC || !floatingTOCContent || !floatingTOC) return;
4132
-
4133
- // Clone the TOC structure
4134
- var tocClone = pageTOC.cloneNode(true);
4135
- tocClone.id = 'floating-toc-clone';
4136
- floatingTOCContent.appendChild(tocClone);
4137
-
4138
- // Update all links to use smooth scrolling
4139
- var allTOCLinks = document.querySelectorAll('.page-toc a, .floating-toc-content a');
4140
- allTOCLinks.forEach(function(link) {
4141
- link.addEventListener('click', function(e) {
4142
- var href = this.getAttribute('href');
4143
- if (href && href.startsWith('#')) {
4144
- e.preventDefault();
4145
- var targetId = href.substring(1);
4146
- var targetElement = document.getElementById(targetId);
4147
- if (targetElement) {
4148
- var offset = 20; // Offset from top
4149
-
4150
- // Function to calculate absolute position from document top
4151
- function getAbsoluteTop(element) {
4152
- var top = 0;
4153
- while (element) {
4154
- top += element.offsetTop;
4155
- element = element.offsetParent;
4156
- }
4157
- return top;
4158
- }
4159
-
4160
- var absoluteTop = getAbsoluteTop(targetElement);
4161
- var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
4162
- var offsetPosition = absoluteTop - offset;
4163
-
4164
- // Only scroll if we're not already at the target position
4165
- if (Math.abs(scrollTop - offsetPosition) > 10) {
4166
- window.scrollTo({
4167
- top: Math.max(0, offsetPosition),
4168
- behavior: 'smooth'
4169
- });
4170
- }
4171
-
4172
- // Update URL hash without triggering scroll
4173
- if (history.pushState) {
4174
- history.pushState(null, null, href);
4175
- }
4176
- }
4177
- }
4178
- });
4179
- });
4180
-
4181
- // Handle scroll to show/hide floating TOC
4182
- var tocTop = pageTOC.getBoundingClientRect().top + window.pageYOffset;
4183
- var tocBottom = tocTop + pageTOC.offsetHeight;
4184
-
4185
- function updateFloatingTOC() {
4186
- var scrollY = window.pageYOffset || document.documentElement.scrollTop;
4187
-
4188
- if (scrollY > tocBottom) {
4189
- floatingTOC.classList.add('visible');
4190
- } else {
4191
- floatingTOC.classList.remove('visible');
4192
- }
4193
- }
4194
-
4195
- // Throttle scroll events
4196
- var ticking = false;
4197
- window.addEventListener('scroll', function() {
4198
- if (!ticking) {
4199
- window.requestAnimationFrame(function() {
4200
- updateFloatingTOC();
4201
- ticking = false;
4202
- });
4203
- ticking = true;
4204
- }
4205
- });
4206
-
4207
- // Initial check
4208
- updateFloatingTOC();
4209
- }
4210
-
4211
- // Initialize when DOM is ready
4212
- if (document.readyState === 'loading') {
4213
- document.addEventListener('DOMContentLoaded', initFloatingTOC);
4214
- } else {
4215
- initFloatingTOC();
4216
- }
4217
- })();
4218
- </script>
4219
- <footer class="page-footer"><p>Copyright 2025 Brett Terpstra, All Rights Reserved | MIT License</p></footer></body>
4220
-
4221
- </html>
4222
-