summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-02-18 21:05:58 +0000
committerKarl Berry <karl@freefriends.org>2024-02-18 21:05:58 +0000
commit45d62c355885e905db2a729761eb384ec447e931 (patch)
treea80c1c9bd45c98a38855f2ac39f1ac5233862747 /Master
parentc503d4c5c13af6a3749ec30bfee14cffda84240c (diff)
markdown (18feb24)
git-svn-id: svn://tug.org/texlive/trunk@69962 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/context/third/markdown/examples/context-mkiv.tex6
-rw-r--r--Master/texmf-dist/doc/context/third/markdown/examples/example.md16
-rw-r--r--Master/texmf-dist/doc/generic/markdown/CHANGES.md334
-rw-r--r--Master/texmf-dist/doc/generic/markdown/README.md110
-rw-r--r--Master/texmf-dist/doc/generic/markdown/VERSION2
-rw-r--r--Master/texmf-dist/doc/generic/markdown/markdown.html13481
-rw-r--r--Master/texmf-dist/doc/generic/markdown/markdown.pdfbin1011455 -> 1089321 bytes
-rw-r--r--Master/texmf-dist/doc/latex/markdown/examples/example.md16
-rw-r--r--Master/texmf-dist/doc/latex/markdown/examples/latex-luatex.tex16
-rw-r--r--Master/texmf-dist/doc/latex/markdown/examples/latex-pdftex.tex10
-rw-r--r--Master/texmf-dist/doc/latex/markdown/examples/latex-tex4ht.tex10
-rw-r--r--Master/texmf-dist/doc/latex/markdown/examples/latex-xetex.tex16
-rw-r--r--Master/texmf-dist/doc/optex/markdown/examples/example.md189
-rw-r--r--Master/texmf-dist/doc/optex/markdown/examples/optex.tex379
-rw-r--r--Master/texmf-dist/doc/optex/markdown/examples/scientists.csv4
-rw-r--r--Master/texmf-dist/scripts/markdown/markdown-cli.lua40
-rw-r--r--Master/texmf-dist/source/generic/markdown/docstrip.cfg8
-rw-r--r--Master/texmf-dist/source/generic/markdown/markdown.dtx13188
-rw-r--r--Master/texmf-dist/source/generic/markdown/markdown.ins11
-rw-r--r--Master/texmf-dist/tex/context/third/markdown/t-markdown.tex391
-rw-r--r--Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex279
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex1831
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex321
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex (renamed from Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_tilde.sty)17
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdown.sty1713
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty10
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty6
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty933
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua4
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown.lua4728
30 files changed, 23523 insertions, 14546 deletions
diff --git a/Master/texmf-dist/doc/context/third/markdown/examples/context-mkiv.tex b/Master/texmf-dist/doc/context/third/markdown/examples/context-mkiv.tex
index 4c05059f3a6..8b000e43ed2 100644
--- a/Master/texmf-dist/doc/context/third/markdown/examples/context-mkiv.tex
+++ b/Master/texmf-dist/doc/context/third/markdown/examples/context-mkiv.tex
@@ -58,8 +58,10 @@ kpse.set_program_name("luatex")
\starttext
% Typeset the document `example.md` by letting the Markdown package handle
-% the conversion internally.
-\inputmarkdown{./example.md}
+% the conversion internally. Optionally, we can specify additional options
+% between the square brackets similarly to the command `\setupmarkdown`.
+% Unlike `\setupmarkdown`, the options will only apply for this document.
+\inputmarkdown[smart_ellipses = yes]{./example.md}
% Typeset the document `example.tex` that we prepared separately using the
% Lua command-line interface and that contains a plain TeX representation
diff --git a/Master/texmf-dist/doc/context/third/markdown/examples/example.md b/Master/texmf-dist/doc/context/third/markdown/examples/example.md
index 8819ef5b672..5e5457088ed 100644
--- a/Master/texmf-dist/doc/context/third/markdown/examples/example.md
+++ b/Master/texmf-dist/doc/context/third/markdown/examples/example.md
@@ -41,9 +41,7 @@ This is a table:
This is a bullet list:
-* The first item of a bullet list
-
- that spans several paragraphs,
+* The first item of a bullet list,
* the second item of a bullet list,
@@ -57,9 +55,7 @@ This is a compact bullet list:
This is an ordered list:
-5. The first item of an ordered list
-
- that spans several paragraphs,
+5. The first item of an ordered list,
6. the second item of an ordered list,
@@ -67,9 +63,7 @@ This is an ordered list:
This is a fancy ordered list:
-e) The first item of an ordered list
-
- that spans several paragraphs,
+e) The first item of an ordered list,
f) the second item of an ordered list,
@@ -77,9 +71,7 @@ g) the third item of an ordered list.
This is an ordered list using hash enumerators:
-#. The first item of an ordered list
-
- that spans several paragraphs,
+#. The first item of an ordered list,
#. the second item of an ordered list,
diff --git a/Master/texmf-dist/doc/generic/markdown/CHANGES.md b/Master/texmf-dist/doc/generic/markdown/CHANGES.md
index 4e1e87e5088..e0f893ab21d 100644
--- a/Master/texmf-dist/doc/generic/markdown/CHANGES.md
+++ b/Master/texmf-dist/doc/generic/markdown/CHANGES.md
@@ -1,5 +1,323 @@
# Changes
+## 3.4.1 (2024-02-16)
+
+Fixes:
+
+- Rename option `contentType` to `contentLevel`. (#300, #400, ca98e039)
+- Correctly produce paragraph separators inside block-level elements.
+ (#376, #377, #403, contributed by @lostenderman)
+
+Deprecation:
+
+- Replace all instances of `\markdownInfo`, `\markdownWarning`, and
+ `\markdownError` with l3msg functions and deprecate `\markdownInfo`,
+ `\markdownWarning`, and `\markdownError`. (#383, #398, e3ca682c, 48002f84)
+- Use the `TEXMF_OUTPUT_DIRECTORY` environmental variable to set
+ `\markdownOptionOutputDir` and deprecate `\markdownOptionOutputDir`.
+ (#405, #409, [matrix.org][matrix-405])
+
+ [matrix-405]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$8oUA2Bn3ch3q9K6RU-1EgpO9uQOd_3Mky4YwT325Ib0?via=matrix.org&via=im.f3l.de
+
+Docker:
+
+- Add support for TeX Live 2024 pretest.
+ (#404, #406, e51738ba, #410, 7ef64dd9, a7cff81d, contributed by @jspitz)
+
+## 3.4.0 (2024-01-31)
+
+Development:
+
+- Separate default token renderer prototype definitions to a universal theme
+ `witiko/markdown/defaults`. (#391, #392)
+- Add format-independent options `noDefaults` and `plain`, which control the
+ loading of theme `witiko/markdown/defaults`. (#393, #394)
+- Add `contentLevel` Lua option.
+ (#300, #375, #400, contributed by @lostenderman)
+
+Fixes:
+
+- Make Pandoc syntax extensions `tex_single_backslash_math` and
+ `tex_double_backslash_math` robust against extra spaces at the beginning /
+ end of inline / display math. (#386, #399, contributed by @lostenderman)
+
+Libraries:
+
+- Update `tinyyaml` to v0.4.4. (e2a59ba)
+
+Contributed Software:
+
+- Remove private GitHub repository `contributions/istqb_latex`. (cc21fe2)
+- Add `contributions/37c3-beamer`. (f5bb26b, contributed by @TeXhackse)
+
+Default Renderer Prototypes:
+
+- Do not unnecessarily override math renderer prototypes in LaTeX/ConTeXt.
+ (#387, #396, contributed by @zousiyu1995)
+
+Unit Tests:
+
+- In pull requests, process added and modified testfiles first.
+ (feafe9b9, 9ff530da, 18deae73)
+
+Deprecation:
+
+- Replace all instances of `\markdownInfo`, `\markdownWarning`, and
+ `\markdownError` with l3msg functions and deprecate `\markdownInfo`,
+ `\markdownWarning`, and `\markdownError`. (#383, #398)
+
+Docker:
+
+- Uninstall the distribution Markdown package. (258a73d4)
+
+## 3.3.0 (2023-12-30)
+
+Development:
+
+- Add support for universal (cross-format) themes. (#276, #373)
+
+Fixes:
+
+- Prevent unwanted space tokens before `*ContextEnd` renderers. (#373)
+- Make ConTeXt command `\inputmarkdown` properly process extra options.
+ (#389, #390, contributed by @ibotty)
+
+Documentation:
+
+- Improve the discoverability of the `\markdownInput` macro.
+ (#381, #382, contributed by @solernou)
+- Encourage alternatives to the `hybrid` option in the user manual. (#382)
+
+Speed Improvements:
+
+- Optimize needless catcode switching in package code. (3eb7231)
+
+Default Renderer Prototypes:
+
+- Fix the typesetting of level four headings with attributes for LaTeX document
+ classes without the `\chapter` command such as `article` and level five
+ headings for LaTeX document classes with the `\chapter` command such as
+ `book`. (86eefc0)
+
+## 3.2.1 (2023-11-23)
+
+Fixes:
+
+- Remove the `options.cacheDir` directory if it is empty after conversion.
+ (5cfcea6)
+- Allow tables inside lists. (#368, #371, contributed by @lostenderman,
+ sponsored by ISTQB)
+- Check that shell access is unrestricted before attempting shell escape.
+ (#365, witiko/lt3luabridge#22, latex3/latex3#1339, #372)
+
+Documentation:
+
+- Add a link to a work-in-progress article for TUGboat 45:1 to `README.md`.
+ (1988a0c2, 3b85533d)
+- Fix miscellaneous issues with the technical documentation. (#366, #367)
+- In `README.md`, add a link to a GPT chatbot with background knowledge about
+ the Markdown Package for TeX. (59eb04d)
+
+Docker:
+
+- Include developer tools in the development Docker image. (#374)
+
+## 3.2.0 (2023-10-21)
+
+Development:
+
+- Add support for Pandoc `auto_identifiers` and `gfm_auto_identifiers`
+ syntax extensions.
+ (#237, #238, lostenderman/markdown#153, #315, #354,
+ contributed by @lostenderman)
+- Add support for bulk redefinition of token renderers and token renderer
+ prototypes in the `\markdownSetup` command using enumeration.
+ (#232, #361..#363, [matrix.org][matrix-361])
+
+ [matrix-361]: https://matrix.to/#/!UeAwznpYwwsinVTetR:matrix.org/$k__vWylYp_L9eyZ0lXCPy26GokZ-Y9g5v8Xs9n47twQ?via=matrix.org&via=im.f3l.de
+
+Fixes:
+
+- Make the `import` LaTeX option correctly handle recursive imports.
+ (68c7a2f5, danopolan/istqb_latex#87)
+- Support attributes on multi-line setext headings.
+ (#315, #355, #356, contributed by @lostenderman)
+- Correctly process the combination of Lua options `fancyLists` and
+ `startNumber`. (59fb97e8)
+- Properly parse emphasis at line endings in headings.
+ (#358, #360, contributed by @lostenderman)
+- Fix fancy lists that use roman numerals as markers.
+ (danopolan/istqb_latex#87, #359, #364,
+ contributed by @lostenderman, sponsored by ISTQB)
+
+Documentation:
+
+- Add a link to a preprint from TUGboat 44:3 to `README.md`.
+ (cf6b3d7b, dc57af7)
+- Measure the speed impact of test file batching.
+ (#357, b526fa65, 8c94ffc9, [matrix.org][matrix-357])
+
+ [matrix-357]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$WR3quuO1fyOl6w_KX6YFA4BACBcL-cWUWBpVfpPWDkI?via=matrix.org&via=im.f3l.de
+
+Unit Tests:
+
+- Restore CommonMark testfiles with trailing tabs and spaces.
+ (#348, #353, lostenderman/markdown#2, contributed by @lostenderman)
+- Fail faster during batch bisection. (5177ef6)
+- Speed up tests by running ConTeXt MkIV only once. (61f36e6d)
+- Use `BEGIN document` and `END document` instead of `documentBegin`
+ and `documentEnd` for consistence with other renderers. (0be6be4)
+
+Continuous Integration:
+
+- Do not rebuild existing Docker images when we rerun the
+ continuous integration for the same commit multiple times.
+ (ae390ec, 70c5f2e5)
+
+Default Renderer Prototypes:
+
+- In LaTeX, correctly capitalize fancy list labels. (0a10053f)
+- In LaTeX, properly indent fancy ordered lists when the Lua option
+ `startNumber` is enabled. (6a7649e8)
+
+## 3.1.0 (2023-09-27)
+
+Development:
+
+- Add `\markdownSetup` command to all TeX formats.
+ (#275, #349, [matrix.org][matrix-349])
+- Add an optional argument to the `markdown` LaTeX environment.
+ (#299, #351)
+- Add support for Pandoc `mark` syntax extension.
+ (jgm/lunamark#67, #303, #352, [matrix.org][matrix-352],
+ contributed by @Omikhleia)
+
+ [matrix-349]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$8JXGbDz0viyRyv6ySWQ3344BOhwd4dj5WYeawzEg_tU?via=matrix.org&via=im.f3l.de
+ [matrix-352]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$yVeWB0Yzfz6mgORv5VeG9IEl7a4xLogkAUmdNMSCxEg?via=matrix.org&via=im.f3l.de
+
+Deprecation:
+
+- Deprecate the `markdown*` LaTeX environment.
+ (#299, #351, [matrix.org][matrix-351])
+
+ [matrix-351]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$yVeWB0Yzfz6mgORv5VeG9IEl7a4xLogkAUmdNMSCxEg?via=matrix.org&via=im.f3l.de
+
+Unit Tests:
+
+- Add support for YAML metadata in testfiles.
+ (#345, #347, [matrix.org][matrix-347])
+
+ [matrix-347]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$8JXGbDz0viyRyv6ySWQ3344BOhwd4dj5WYeawzEg_tU?via=matrix.org&via=im.f3l.de
+
+Documentation:
+
+- Add a link to a preprint from CSTUG Bulletin to `README.md`.
+ (2c354f49)
+
+## 3.0.1 (2023-09-10)
+
+Fixes:
+
+- Correctly parse paragraphs with trailing spaces.
+ (danopolan/istqb_latex#77, #345, #347)
+
+## 3.0.0 (2023-08-25)
+
+Development:
+
+- Add support for TeX-like rich paragraphs.
+ (#30, #306, [matrix.org][matrix-306])
+
+ [matrix-306]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$g9ZTEyXP-V_5elJjcqRd-D9QyIfJuTw-TWlZIFoh72c?via=matrix.org&via=im.f3l.de
+
+Fixes:
+
+- Reset current heading level at the end of a markdown document.
+ (1261e6f)
+- Fix out-of-memory issues with CommonMark implementation.
+ (#308, #318, 28650b8)
+- Fix `rawAttribute` option being enabled in Lua by default.
+ (92c9ac2)
+- Make our implementation of attributes compatible with jgm/pandoc.
+ (jgm/lunamark#68, #304, #343, contributed by @Omikhleia)
+
+Documentation:
+
+- Fix the link to @xvrabcov's talk at TUG 2022 in `README.md`.
+ (166c4506)
+- Add a link to @writersglen's talk at TUG 2022 to `README.md`.
+ (f3efcb9)
+- Document setting up catcodes in Lua. (#329, #342)
+
+Unit Tests:
+
+- Batch unit tests to improve speed.
+ (#245, #316, 8bfd0b3, #317, #319..#325, #327, #328, e3b31696,
+ #331, #332, #334, 0a230fa, 90cc428, 3be0013, dbe1808, a0108814)
+- Use self-hosted GitHub runners for tests to improve speed.
+ (#326, #330, #331, a9948a86, 68b6216b, contributed by @TeXhackse,
+ [matrix.org][matrix-331])
+
+ [matrix-331]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$6qKDXlLxsaJnOl0muFX3K7Htj41B-7hL2PmSFTIm6NE?via=matrix.org&via=im.f3l.de
+
+Continuous Integration:
+
+- In draft pull requests, do not build documentation or examples
+ and do not run pkgcheck. (#337, #338, 189bb153)
+- Push temporary Docker images to GitHub Packages.
+ (#340, #341, d15ae88a, 7e42e846)
+
+## 3.0.0-alpha.2 (2023-08-01)
+
+Development:
+
+- Add support for attributes on tables. (#310, #313, 8786408)
+
+Default Renderer Prototypes:
+
+- Correctly handle multiple heading identifiers. (3ae1b0d1)
+- Add alt text to figures. (#312)
+
+Documentation:
+
+- Add a link to TUG 2023 slides and video to the README.
+ (ce6047b8, adb69e2f)
+
+Unit Tests:
+
+- Rewrite the unit testing framework from Bash to Python
+ and implement summarization. (#245, #314)
+
+## 3.0.0-alpha (2023-06-27)
+
+Development:
+
+- Comply with CommonMark 0.30 and increment `grammar_version` to `3`.
+ (contributed by @lostenderman, #29, #210, #212, #226)
+- Add a demo of using the Markdown package in OpTeX.
+ (contributed by @olsak, #215, 109c1b5, #292)
+- Add `singletonCache` Lua option. (#226)
+
+Documentation:
+
+- Add @lostenderman's thesis to `README.md`. (#226, 8a4536e)
+
+Default Renderer Prototypes:
+
+- Do not force line breaks after high-level headings in LaTeX.
+ Allow the text to follow the heading on the same line. (df8562c)
+
+Deprecation:
+
+- Remove deprecated parts of the package. (#309)
+- Remove support for LuaMetaTeX. (#226)
+
+Fixes:
+
+- Allow references in fenced divs. (#307, jgm/lunamark#69)
+- Prevent `eagerCache=false` from causing undefined behavior and make
+ it the new default. (#129)
+
## 2.23.0 (2023-04-27)
Development:
@@ -55,9 +373,12 @@ Development:
parens and brackets. (contributed by @lostenderman, #61,
#235, #236, #270)
- Add support for attributes on links, images, fenced code,
- and inline code spans. (jgm#36, jgm#43, #50, #123, #256, #280)
+ and inline code spans. (jgm/lunamark#36, jgm/lunamark#43,
+ #50, #123, #256, #280, [matrix.org][matrix-256])
- Add `import` LaTeX option. (#107, #286)
+ [matrix-256]: https://matrix.to/#/!pznomuvubVyxElflTe:matrix.org/$mDATROtxOLOGBvH5Nt3o86iysRe1LCfZB-lw4PqjKJk?via=matrix.org&via=im.f3l.de
+
Documentation:
- Unify how Pandoc syntax extensions are named and cited in
@@ -107,9 +428,10 @@ Deprecation:
Development:
- Add support for line blocks.
- (contributed by @Omikhleia and @lostenderman, jgm#41, #209, #248)
+ (contributed by @Omikhleia and @lostenderman, jgm/lunamark#41,
+ #209, #248)
- Add support for attributes on fenced code blocks.
- (contributed by @Omikhleia, jgm#36, #123, #211)
+ (contributed by @Omikhleia, jgm/lunamark#36, #123, #211)
Documentation:
@@ -126,7 +448,8 @@ Fixes:
- Fix input normalization and move it from Lua CLI and plain TeX
layers directly to the `convert()` Lua method. (#246, #253)
- Allow fenced div closing tag to break out of a blockquote.
- (contributed by @Omikhleia, jgm#60, jgm#61, #230, #259)
+ (contributed by @Omikhleia, jgm/lunamark#60, jgm/lunamark#61,
+ #230, #259)
Default Renderer Prototypes:
@@ -194,8 +517,7 @@ Development:
- Rename the `footnotes` and `inlineFootnotes` options to `notes` and
`inlineNotes`.
- Rename the `HorizontalRule` rule to `ThematicBreak` and increment
- `grammar_version` to `2`. This change is not backwards-compatible with the
- `grammar_version` of `1`.
+ `grammar_version` to `2`.
- Add `\markdownEscape` macro that inputs a TeX document in the middle of a
markdown document fragment. (1478f7b)
- Add support for raw attributes. (#173, #202)
diff --git a/Master/texmf-dist/doc/generic/markdown/README.md b/Master/texmf-dist/doc/generic/markdown/README.md
index 217cd6710e7..5a87521f0fc 100644
--- a/Master/texmf-dist/doc/generic/markdown/README.md
+++ b/Master/texmf-dist/doc/generic/markdown/README.md
@@ -4,24 +4,26 @@ Markdown
[![license](https://img.shields.io/github/license/witiko/markdown)](LICENSE)
[![ci](https://github.com/witiko/markdown/actions/workflows/main.yml/badge.svg)][ci]
[![release](https://img.shields.io/github/release/witiko/markdown)][release]
-&emsp;
-[![matrix](https://img.shields.io/matrix/witiko-markdown:matrix.org?label=matrix%20chat)][matrix]
-[![discord](https://img.shields.io/discord/1011667276908474440?label=discord%20chat&color=blueviolet)][discord]
-
- [release]: https://github.com/Witiko/markdown/releases/latest "Releases · Witiko/markdown"
- [ci]: https://github.com/Witiko/markdown/actions "GitHub Actions"
- [matrix]: https://matrix.to/#/#witiko-markdown:matrix.org "The Matrix Chat Space for the Markdown package"
- [discord]: https://discord.gg/8xJsPghzSH "The Discord Chat Space for the Markdown package"
-
-The Markdown package converts [markdown][] markup to TeX commands. The
+[![docker-witiko/markdown](https://img.shields.io/docker/v/witiko/markdown/latest?label=docker)][docker-witiko/markdown]
+[![matrix](https://img.shields.io/matrix/witiko-markdown:matrix.org?label=matrix)][matrix]
+[![discord](https://img.shields.io/discord/1011667276908474440?label=discord&color=blueviolet)][discord]
+[![chatgpt](https://img.shields.io/badge/gpt-9cf)][chatgpt]
+
+ [release]: https://github.com/Witiko/markdown/releases/latest "Releases · Witiko/markdown"
+ [ci]: https://github.com/Witiko/markdown/actions "GitHub Actions"
+ [matrix]: https://matrix.to/#/#witiko-markdown:matrix.org "The Matrix Chat Space for the Markdown package"
+ [discord]: https://discord.gg/8xJsPghzSH "The Discord Chat Space for the Markdown package"
+ [chatgpt]: https://chat.openai.com/g/g-I3K0DweJe-markdown-package-for-tex "ChatGPT - Markdown package for TeX"
+
+The Markdown package converts [CommonMark][] markup to TeX commands. The
functionality is provided both as a Lua module, and as plain TeX, LaTeX, and
ConTeXt macro packages that can be used to directly typeset TeX documents
-containing markdown markup. Unlike other convertors, the Markdown package
-does not require any external programs, and makes it easy to redefine how each
-and every markdown element is rendered. Creative abuse of the markdown syntax
-is encouraged. 😉
+containing markdown markup. Unlike other convertors, the Markdown package does
+not require any external programs, and makes it easy to redefine how each and
+every markdown element is rendered. Creative abuse of the markdown syntax is
+encouraged. 😉
- [markdown]: https://daringfireball.net/projects/markdown/basics "Daring Fireball: Markdown Basics"
+ [commonmark]: https://commonmark.org/ "CommonMark: A strongly defined, highly compatible specification of Markdown"
Your first Markdown document
----------------------------
@@ -56,12 +58,12 @@ Next, run the [LaTeXMK][] tool from
[our official Docker image][docker-witiko/markdown] on `document.tex`:
docker run --rm -v "$PWD"/workdir:/workdir -w /workdir witiko/markdown \
- latexmk -lualatex -silent document.tex
+ latexmk -pdf -shell-escape -silent document.tex
Alternatively, you can install [TeX Live][tex-live] (can take up to several
hours) and use its [LaTeXMK][] tool:
- latexmk -cd -lualatex -silent workdir/document.tex
+ latexmk -cd -pdf -shell-escape -silent workdir/document.tex
A PDF document named `workdir/document.pdf` should be produced and contain the
following output:
@@ -95,6 +97,8 @@ jobs:
- uses: actions/checkout@v2
- run: latexmk -lualatex document.tex
- uses: marvinpinto/action-automatic-releases@latest
+ permissions:
+ contents: write
with:
title: The latest typeset book
automatic_release_tag: latest
@@ -114,7 +118,7 @@ In fact, this is how we automatically produce
Peek under the hood
-------------------
-Remember how we said that the Markdown package converts [markdown][] markup to
+Remember how we said that the Markdown package converts markdown markup to
TeX commands? Let's see what that means and what we can do with this knowledge.
Using a text editor, create an empty text document named `document.md` with
@@ -180,26 +184,32 @@ For further information, consult one of the following:
- [Writing Beamer Slides with Markdown][overleaf-4],
- [Writing Posters with Markdown][overleaf-5], and
- [Using Markdown in LaTeX documents][overleaf-6].
-4. My journal articles published by [TUGboat][]:
+4. Journal articles published by [TUGboat][]:
- [Using Markdown inside TeX documents][tb119],
- [Markdown 2.7.0: Towards lightweight markup in TeX][tb124],
- [Making Markdown into a Microwave Meal][tb129],
- [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131],
- [Markdown 2.15.0: What's New?][tb133],
- - [Markdown 2.17.1: What's New, What's Next?][tb135], and
- - [Attributes in Markdown][tb136].
-5. Journal articles of me and my students published by [CSTUG Bulletin][csbul] (in Czech and Slovak):
+ - [Markdown 2.17.1: What's New, What's Next?][tb135],
+ - [Attributes in Markdown][tb136],
+ - Markdown 3 at TUG 2023: Reflections from the Q&A session ([preprint][tb138]), and
+ - Fast Regression Testing of TeX Packages: The Unreasonable Effectiveness of Batching ([work in progress][tb139]).
+5. Journal articles published by [CSTUG Bulletin][csbul] (in Czech and Slovak):
- [Rendering Markdown inside TeX Documents][10.5300/2016-1-4/78],
- [Markdown 2.8.1: Boldly Unto the Throne of Lightweight Markup in TeX][10.5300/2020-1-2/48],
- [Markdown 2.10.0: LaTeX Themes & Snippets][10.5300/2021-1-4/76],
- - [Direct Typesetting of Various Document Formats in TeX Using the Pandoc Utility][10.5300/2021-1-4/83], and
- - [High-Level Languages for TeX][10.5300/2022-1-4/35].
-6. Talks by me and my students:
- - [Five Years of Markdown in LaTeX: What, Why, How, and Whereto][pv212-fall2020] (in Czech), and
- - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131-video] ([slides][tb131-slides]).
- - [A Gentle Introduction to Markdown for Writers][tb134-video] ([slides][tb134-slides], [example][tb134-example]).
-7. Theses by my students:
+ - [Direct Typesetting of Various Document Formats in TeX Using the Pandoc Utility][10.5300/2021-1-4/83],
+ - [High-Level Languages for TeX][10.5300/2022-1-4/35], and
+ - Markdown 3: What's New, What's Next? ([preprint][10.5300/2023-?-?/??]).
+6. Talks:
+ - [Five Years of Markdown in LaTeX: What, Why, How, and Whereto][pv212-fall2020] (in Czech),
+ - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131-video] ([slides][tb131-slides]),
+ - [A Self-Publisher's Take on Markdown and TeX][tb134-01-video] ([slides][tb134-01-slides]), and
+ - [A Gentle Introduction to Markdown for Writers][tb134-02-video] ([slides][tb134-02-slides], [example][tb134-02-example]), and
+ - [Markdown 3: What's New, What's Next?][tb137-video] ([slides][tb137-slides]).
+7. Theses:
- [Generic TeX Writer for the Pandoc Document Converter][thesis-umhg5]
+ - [An implementation of the CommonMark standard into the Markdown package for TeX][thesis-r7z7l]
[overleaf-1]: https://www.overleaf.com/learn/latex/Articles/How_to_write_in_Markdown_on_Overleaf "How to write in Markdown on Overleaf"
[overleaf-2]: https://www.overleaf.com/learn/latex/Articles/Markdown_into_LaTeX_with_Style "Markdown into LaTeX with Style"
@@ -208,19 +218,25 @@ For further information, consult one of the following:
[overleaf-5]: https://www.overleaf.com/latex/examples/writing-posters-with-markdown/jtbgmmgqrqmh "Writing Posters with Markdown"
[overleaf-6]: https://www.overleaf.com/latex/examples/using-markdown-in-latex-documents/whdrnpcpnwrm "Using Markdown in LaTeX documents"
- [tb119]: https://www.tug.org/TUGboat/tb38-2/tb119novotny.pdf "Using Markdown inside TeX documents"
- [tb124]: https://www.tug.org/TUGboat/tb40-1/tb124novotny-markdown.pdf "Markdown 2.7.0: Towards lightweight markup in TeX"
- [tb129]: https://www.tug.org/TUGboat/tb41-3/tb129novotny-frozen.pdf "Making Markdown into a Microwave Meal"
- [tb131]: https://www.tug.org/TUGboat/tb42-2/tb131novotny-markdown.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
- [tb133]: https://www.tug.org/TUGboat/tb43-1/tb133novotny-markdown.pdf "Markdown 2.15.0: What's New?"
- [tb135]: https://www.overleaf.com/read/pgwrhhskmgfm "Markdown 2.17.1: What's New, What's Next?"
- [tb136]: https://www.overleaf.com/read/dshtsnnmtshs "Attributes in Markdown"
-
- [tb131-slides]: https://tug.org/tug2021/assets/pdf/tug2021-novotny-slides.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
- [tb131-video]: https://youtu.be/THmPkAncMnc "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
- [tb134-slides]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-slides.pdf "A Gentle Introduction to Markdown for Writers"
- [tb134-example]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-example.pdf "A Gentle Introduction to Markdown for Writers"
- [tb134-video]: https://youtu.be/cqbKgjAlNjo?t=2h10m35s "A Gentle Introduction to Markdown for Writers"
+ [tb119]: https://www.tug.org/TUGboat/tb38-2/tb119novotny.pdf "Using Markdown inside TeX documents"
+ [tb124]: https://www.tug.org/TUGboat/tb40-1/tb124novotny-markdown.pdf "Markdown 2.7.0: Towards lightweight markup in TeX"
+ [tb129]: https://www.tug.org/TUGboat/tb41-3/tb129novotny-frozen.pdf "Making Markdown into a Microwave Meal"
+ [tb131]: https://www.tug.org/TUGboat/tb42-2/tb131novotny-markdown.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
+ [tb133]: https://www.tug.org/TUGboat/tb43-1/tb133novotny-markdown.pdf "Markdown 2.15.0: What's New?"
+ [tb135]: https://www.tug.org/TUGboat/tb43-3/tb135novotny-markdown.pdf "Markdown 2.17.1: What's New, What's Next?"
+ [tb136]: https://www.tug.org/TUGboat/tb44-1/tb136novotny-markdown-attr.pdf "Attributes in Markdown"
+ [tb138]: https://www.overleaf.com/read/mjghwhrbgmfj "Markdown 3 at TUG 2023: Reflections from the Q&A session"
+ [tb139]: https://github.com/witiko/fast-regression-testing/releases/download/latest/main.pdf "Fast Regression Testing of TeX Packages: The Unreasonable Effectiveness of Batching"
+
+ [tb131-slides]: https://tug.org/tug2021/assets/pdf/tug2021-novotny-slides.pdf "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
+ [tb131-video]: https://youtu.be/i2GJMnLCZls "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX"
+ [tb134-01-slides]: https://tug.org/tug2022/assets/served/Lloyd_Prentice-TUG2022-prentice-selfpub-slides.pdf "A Self-Publisher's Take on Markdown and TeX"
+ [tb134-01-video]: https://youtu.be/OhwzT3TcLj8 "A Self-Publisher's Take on Markdown and TeX"
+ [tb134-02-slides]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-slides.pdf "A Gentle Introduction to Markdown for Writers"
+ [tb134-02-example]: https://tug.org/tug2022/assets/pdf/Tereza_Vrabcová-TUG2022-example.pdf "A Gentle Introduction to Markdown for Writers"
+ [tb134-02-video]: https://youtu.be/FhN_x9rsR4M "A Gentle Introduction to Markdown for Writers"
+ [tb137-slides]: https://tug.org/tug2023/files/sa-03-novotny-markdown3/novotny-markdown3-slides.pdf "Markdown 3: What's New, What's Next?"
+ [tb137-video]: https://youtu.be/U8XjTOhJkg0 "Markdown 3: What's New, What's Next?"
[10.5300/2016-1-4/78]: https://www.doi.org/10.5300/2016-1-4/78 "Rendering Markdown inside TeX Documents"
[10.5300/2020-1-2/48]: https://www.doi.org/10.5300/2020-1-2/48 "Markdown 2.8.1: Boldly Unto the Throne of Lightweight Markup in TeX"
@@ -228,7 +244,9 @@ For further information, consult one of the following:
[10.5300/2021-1-4/83]: https://www.doi.org/10.5300/2021-1-4/83 "Direct Typesetting of Various Document Formats in TeX Using the Pandoc Utility"
[10.5300/2022-1-4/35]: https://www.doi.org/10.5300/2022-1-4/35 "High-Level Languages for TeX"
- [pv212-fall2020]: https://is.muni.cz/elearning/warp?qurl=%2Fel%2Ffi%2Fpodzim2020%2FPV212%2Findex.qwarp;prejit=5595952
+ [10.5300/2023-?-?/??]: https://github.com/witiko/markdown-3-whats-new-whats-next/releases/download/latest/main.pdf "Markdown 3: What's New, What's Next?"
+
+ [pv212-fall2020]: https://is.muni.cz/elearning/io/?qurl=%2Fel%2Ffi%2Fpodzim2020%2FPV212%2Findex.qwarp;prejit=5595952
[install]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#installation "Markdown Package User Manual"
[liantze]: http://liantze.penguinattack.org/ "Rants from the Lab"
@@ -243,6 +261,7 @@ For further information, consult one of the following:
[techdoc-tex-live]: https://mirrors.ctan.org/macros/generic/markdown/markdown.pdf "A Markdown Interpreter for TeX"
[thesis-umhg5]: https://is.muni.cz/th/umhg5/?lang=en "Generic TeX Writer for the Pandoc Document Converter"
+ [thesis-r7z7l]: https://is.muni.cz/th/r7z7l/?lang=en "An implementation of the CommonMark standard into the Markdown package for TeX"
Acknowledgements
----------------
@@ -252,12 +271,17 @@ Acknowledgements
| [<img width="150" src="https://www.fi.muni.cz/images/fi-logo.png">][fimu] | I gratefully acknowledge the funding from the [Faculty of Informatics][fimu] at the [Masaryk University][mu] in Brno, Czech Republic, for the development of the Markdown package in projects [MUNI/33/12/2015][], [MUNI/33/1784/2020][], [MUNI/33/0776/2021][], [MUNI/33/1654/2022][], and [MUNI/33/1658/2022][]. |
| [<img width="150" src="https://cdn.overleaf.com/img/ol-brand/overleaf_og_logo.png">][overleaf] | Extensive user documentation for the Markdown package was kindly written by [Lian Tze Lim][liantze] and published by [Overleaf][]. |
| [<img width="150" src="https://pbs.twimg.com/profile_images/1004769879319334912/6Bh1UthD.jpg">][omedym] | Support for content slicing (Lua options [`shiftHeadings`][option-shift-headings] and [`slice`][option-slice]) and pipe tables (Lua options [`pipeTables`][option-pipe-tables] and [`tableCaptions`][option-table-captions]) was graciously sponsored by [David Vins][dvins] and [Omedym][]. |
+| [<img width="150" src="https://www.istqb.org/static/istqb-logo-1b043e800a580724ad223567f9ea57c0.png">][istqb] | Fixes for issues [#359][issue-359] and [#368][issue-368] were graciously sponsored by the [International Software Testing Qualifications Board (ISTQB)][istqb]. |
[dvins]: https://github.com/dvins "David Vins"
[fimu]: https://www.fi.muni.cz/index.html.en "Faculty of Informatics, Masaryk University"
+ [ISTQB]: https://www.istqb.org/ "International Software Testing Qualifications Board"
[mu]: https://www.muni.cz/en "Masaryk University"
[Omedym]: https://www.omedym.com/ "Omedym"
+ [issue-359]: https://github.com/witiko/markdown/issues/359 "First item of a fancy list forms a separate list"
+ [issue-368]: https://github.com/witiko/markdown/issues/368 "Tables nested in list items have empty lines"
+
[option-pipe-tables]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#pipe-tables "Markdown Package User Manual"
[option-shift-headings]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#option-shiftheadings "Markdown Package User Manual"
[option-slice]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#slice "Markdown Package User Manual"
diff --git a/Master/texmf-dist/doc/generic/markdown/VERSION b/Master/texmf-dist/doc/generic/markdown/VERSION
index 51e0f673296..941a04710b1 100644
--- a/Master/texmf-dist/doc/generic/markdown/VERSION
+++ b/Master/texmf-dist/doc/generic/markdown/VERSION
@@ -1 +1 @@
-2.23.0-0-g0b22f91 (2023-04-27)
+3.4.1-0-g457226ae (2024-02-16)
diff --git a/Master/texmf-dist/doc/generic/markdown/markdown.html b/Master/texmf-dist/doc/generic/markdown/markdown.html
index 73188146243..a9235283635 100644
--- a/Master/texmf-dist/doc/generic/markdown/markdown.html
+++ b/Master/texmf-dist/doc/generic/markdown/markdown.html
@@ -4,17 +4,27 @@
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <meta name="author" content="Vít Novotný" />
+ <meta name="author" content="Vít Starý Novotný" />
<title>Markdown Package User Manual</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
- span.underline{text-decoration: underline;}
- div.column{display: inline-block; vertical-align: top; width: 50%;}
+ div.columns{display: flex; gap: min(4vw, 1.5em);}
+ div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
- ul.task-list{list-style: none;}
+ /* The extra [class] is a hack that increases specificity enough to
+ override a similar rule in reveal.js */
+ ul.task-list[class]{list-style: none;}
+ ul.task-list li input[type="checkbox"] {
+ font-size: inherit;
+ width: 0.8em;
+ margin: 0 0.8em 0.2em -1.6em;
+ vertical-align: middle;
+ }
+ .display.math{display: block; text-align: center; margin: 0.5rem auto;}
+ /* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
- pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
+ pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
@@ -76,77 +86,92 @@
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
- .display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="markdown.css" />
</head>
<body>
<header id="title-block-header">
<h1 class="title">Markdown Package User Manual</h1>
-<p class="author">Vít Novotný</p>
-<p class="date">2.23.0-0-g0b22f91 2023-04-27</p>
+<p class="author">Vít Starý Novotný</p>
+<p class="date">3.4.1-0-g457226ae 2024-02-16</p>
</header>
<nav id="TOC" role="doc-toc">
<ul>
-<li><a href="#introduction"><span class="toc-section-number">1</span>
-Introduction</a>
+<li><a href="#introduction" id="toc-introduction"><span
+class="toc-section-number">1</span> Introduction</a>
<ul>
-<li><a href="#requirements"><span class="toc-section-number">1.1</span>
-Requirements</a></li>
-<li><a href="#installation"><span class="toc-section-number">1.2</span>
-Installation</a>
+<li><a href="#requirements" id="toc-requirements"><span
+class="toc-section-number">1.1</span> Requirements</a></li>
+<li><a href="#installation" id="toc-installation"><span
+class="toc-section-number">1.2</span> Installation</a>
<ul>
-<li><a href="#local-installation"><span
+<li><a href="#local-installation" id="toc-local-installation"><span
class="toc-section-number">1.2.1</span> Local Installation</a></li>
-<li><a href="#portable-installation"><span
+<li><a href="#portable-installation"
+id="toc-portable-installation"><span
class="toc-section-number">1.2.2</span> Portable Installation</a></li>
</ul></li>
-<li><a href="#first-document"><span
+<li><a href="#first-document" id="toc-first-document"><span
class="toc-section-number">1.3</span> First Document</a>
<ul>
-<li><a href="#using-lua"><span class="toc-section-number">1.3.1</span>
-Using Lua</a></li>
-<li><a href="#using-plain-tex"><span
+<li><a href="#using-lua" id="toc-using-lua"><span
+class="toc-section-number">1.3.1</span> Using Lua</a></li>
+<li><a href="#using-plain-tex" id="toc-using-plain-tex"><span
class="toc-section-number">1.3.2</span> Using Plain <span
class="tex">T<sub>e</sub>X</span></a></li>
-<li><a href="#using-latex"><span class="toc-section-number">1.3.3</span>
-Using <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li>
-<li><a href="#using-context"><span
+<li><a href="#using-latex" id="toc-using-latex"><span
+class="toc-section-number">1.3.3</span> Using <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li>
+<li><a href="#using-context" id="toc-using-context"><span
class="toc-section-number">1.3.4</span> Using Con<span
class="tex">T<sub>e</sub>X</span>t</a></li>
</ul></li>
</ul></li>
-<li><a href="#examples"><span class="toc-section-number">2</span>
-Examples</a>
+<li><a href="#examples" id="toc-examples"><span
+class="toc-section-number">2</span> Examples</a>
<ul>
-<li><a href="#interfaces"><span class="toc-section-number">2.1</span>
-Interfaces</a>
+<li><a href="#interfaces" id="toc-interfaces"><span
+class="toc-section-number">2.1</span> Interfaces</a>
<ul>
-<li><a href="#lua"><span class="toc-section-number">2.1.1</span>
-Lua</a></li>
-<li><a href="#plain-tex"><span class="toc-section-number">2.1.2</span>
-Plain <span class="tex">T<sub>e</sub>X</span></a></li>
-<li><a href="#latex"><span class="toc-section-number">2.1.3</span> <span
+<li><a href="#lua" id="toc-lua"><span
+class="toc-section-number">2.1.1</span> Lua</a></li>
+<li><a href="#plain-tex" id="toc-plain-tex"><span
+class="toc-section-number">2.1.2</span> Plain <span
+class="tex">T<sub>e</sub>X</span></a></li>
+<li><a href="#latex" id="toc-latex"><span
+class="toc-section-number">2.1.3</span> <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li>
-<li><a href="#context"><span class="toc-section-number">2.1.4</span>
-Con<span class="tex">T<sub>e</sub>X</span>t</a></li>
+<li><a href="#context" id="toc-context"><span
+class="toc-section-number">2.1.4</span> Con<span
+class="tex">T<sub>e</sub>X</span>t</a></li>
</ul></li>
-<li><a href="#options"><span class="toc-section-number">2.2</span>
-Options</a>
+<li><a href="#options" id="toc-options"><span
+class="toc-section-number">2.2</span> Options</a>
<ul>
-<li><a href="#lua-1"><span class="toc-section-number">2.2.1</span>
-Lua</a></li>
-<li><a href="#plain-tex-1"><span class="toc-section-number">2.2.2</span>
-Plain <span class="tex">T<sub>e</sub>X</span></a></li>
-<li><a href="#latex-1"><span class="toc-section-number">2.2.3</span>
-<span class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li>
+<li><a href="#lua-1" id="toc-lua-1"><span
+class="toc-section-number">2.2.1</span> Lua</a></li>
+<li><a href="#plain-tex-1" id="toc-plain-tex-1"><span
+class="toc-section-number">2.2.2</span> Plain <span
+class="tex">T<sub>e</sub>X</span></a></li>
+<li><a href="#themes" id="toc-themes"><span
+class="toc-section-number">2.2.3</span> Themes</a></li>
+<li><a href="#snippets" id="toc-snippets"><span
+class="toc-section-number">2.2.4</span> Snippets</a></li>
+<li><a href="#latex-1" id="toc-latex-1"><span
+class="toc-section-number">2.2.5</span> <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span></a></li>
+<li><a href="#latexthemes" id="toc-latexthemes"><span
+class="toc-section-number">2.2.6</span> Themes</a></li>
+<li><a href="#themes-1" id="toc-themes-1"><span
+class="toc-section-number">2.2.7</span> Themes</a></li>
</ul></li>
-<li><a href="#markdown-tokens"><span
+<li><a href="#markdown-tokens" id="toc-markdown-tokens"><span
class="toc-section-number">2.3</span> Markdown Tokens</a>
<ul>
-<li><a href="#texrenderersuser"><span
+<li><a href="#texrenderersuser" id="toc-texrenderersuser"><span
class="toc-section-number">2.3.1</span> Token Renderers</a></li>
-<li><a href="#texrendererprototypes"><span
+<li><a href="#texrendererprototypes"
+id="toc-texrendererprototypes"><span
class="toc-section-number">2.3.2</span> Token Renderer
Prototypes</a></li>
</ul></li>
@@ -158,10 +183,10 @@ Prototypes</a></li>
class="header-section-number">1</span> Introduction</h1>
<p>The <a href="https://ctan.org/pkg/markdown"
title="CTAN: Package markdown">Markdown package</a> converts <a
-href="https://daringfireball.net/projects/markdown/basics"
-title="Daring Fireball: Markdown Basics">markdown</a> markup to <span
-class="tex">T<sub>e</sub>X</span> commands. The functionality is
-provided both as a Lua module and as plain <span
+href="https://commonmark.org/"
+title="CommonMark: A strongly defined, highly compatible specification of Markdown">CommonMark</a>
+markup to <span class="tex">T<sub>e</sub>X</span> commands. The
+functionality is provided both as a Lua module and as plain <span
class="tex">T<sub>e</sub>X</span>, <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span>, and Con<span
class="tex">T<sub>e</sub>X</span>t macro packages that can be used to
@@ -209,25 +234,28 @@ it.</p>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> base</span></code></pre></div>
<p>This should produce the following files:</p>
<ul>
-<li><code>markdown.lua</code>, the Lua module,</li>
-<li><code>libraries/markdown-tinyyaml.lua</code>, an external library
-for reading <abbr>yaml</abbr>,</li>
-<li><code>markdown-cli.lua</code>, the Lua command-line interface,</li>
-<li><code>markdown.tex</code>, the plain <span
-class="tex">T<sub>e</sub>X</span> macro package,</li>
-<li><code>markdown.sty</code>, the <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package,</li>
-<li><code>markdownthemewitiko_dot.sty</code>, the
+<li><code>markdown.lua</code>: The Lua module</li>
+<li><code>libraries/markdown-tinyyaml.lua</code>: An external library
+for reading <abbr>yaml</abbr></li>
+<li><code>markdown-cli.lua</code>: The Lua command-line interface</li>
+<li><code>markdown.tex</code>: The plain <span
+class="tex">T<sub>e</sub>X</span> macro package</li>
+<li><code>markdown.sty</code>: The <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package</li>
+<li><code>markdownthemewitiko_dot.sty</code>: The
<code>witiko/dot</code> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme,</li>
-<li><code>markdownthemewitiko_graphicx_http.sty</code>, the
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme</li>
+<li><code>markdownthemewitiko_graphicx_http.sty</code>: The
<code>witiko/graphicx/http</code> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme,</li>
-<li><code>markdownthemewitiko_tilde.sty</code>, the
-<code>witiko/tilde</code> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme, and</li>
-<li><code>t-markdown.tex</code>, the Con<span
-class="tex">T<sub>e</sub>X</span>t module.</li>
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme</li>
+<li><code>markdownthemewitiko_tilde.tex</code>: The
+<code>witiko/tilde</code> theme</li>
+<li><code>markdownthemewitiko_markdown_defaults.tex</code>,
+<code>markdownthemewitiko_markdown_defaults.sty</code>, and
+<code>t-markdownthemewitiko_markdown_defaults.tex</code>: The
+<code>witiko/markdown/defaults</code> theme</li>
+<li><code>t-markdown.tex</code>: The Con<span
+class="tex">T<sub>e</sub>X</span>t module</li>
</ul>
<h3 data-number="1.2.1" id="local-installation"><span
class="header-section-number">1.2.1</span> Local Installation</h3>
@@ -239,11 +267,14 @@ generally where the individual files should be placed:</p>
<li><code>⟨TEXMF⟩/tex/luatex/markdown/markdown-tinyyaml.lua</code></li>
<li><code>⟨TEXMF⟩/scripts/markdown/markdown-cli.lua</code></li>
<li><code>⟨TEXMF⟩/tex/generic/markdown/markdown.tex</code></li>
+<li><code>⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_tilde.tex</code></li>
+<li><code>⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex</code></li>
<li><code>⟨TEXMF⟩/tex/latex/markdown/markdown.sty</code></li>
<li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_dot.sty</code></li>
<li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty</code></li>
-<li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_tilde.sty</code></li>
+<li><code>⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty</code></li>
<li><code>⟨TEXMF⟩/tex/context/third/markdown/t-markdown.tex</code></li>
+<li><code>⟨TEXMF⟩/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex</code></li>
</ul>
<p>where <code>⟨TEXMF⟩</code> corresponds to a root of your <span
class="tex">T<sub>e</sub>X</span> distribution, such as
@@ -257,11 +288,21 @@ class="header-section-number">1.2.2</span> Portable Installation</h3>
as your <span class="tex">T<sub>e</sub>X</span> document and distribute
them together. This way your document can be portably typeset on legacy
<span class="tex">T<sub>e</sub>X</span> distributions.</p>
-<p>Since Markdown version 2.10.0, the file <code>markdown.tex</code>
-must be placed in a directory named <code>markdown</code> due to <a
-href="https://github.com/witiko/markdown/issues/74"
-title="Does not compile if user names own document markdown.tex">issue
-#74</a>.</p>
+<p>This is where the individual files should be placed:</p>
+<ul>
+<li><code>./markdown.lua</code></li>
+<li><code>./markdown-tinyyaml.lua</code></li>
+<li><code>./markdown-cli.lua</code></li>
+<li><code>./markdown/markdown.tex</code></li>
+<li><code>./markdown.sty</code></li>
+<li><code>./t-markdown.tex</code></li>
+<li><code>./markdownthemewitiko_dot.sty</code></li>
+<li><code>./markdownthemewitiko_graphicx_http.sty</code></li>
+<li><code>./markdownthemewitiko_tilde.tex</code></li>
+<li><code>./markdownthemewitiko_markdown_defaults.tex</code></li>
+<li><code>./markdownthemewitiko_markdown_defaults.sty</code></li>
+<li><code>./t-markdownthemewitiko_markdown_defaults.tex</code></li>
+</ul>
<h2 data-number="1.3" id="first-document"><span
class="header-section-number">1.3</span> First Document</h2>
<p>In this section, we will take the necessary steps to typeset our
@@ -283,18 +324,22 @@ class="header-section-number">1.3.1</span> Using Lua</h3>
<code>document.tex</code> with the following content:</p>
<div class="sourceCode" id="cb4"><pre
class="sourceCode tex"><code class="sourceCode latex"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span>
-<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span>
+<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<h4 data-number="1.3.1.1" id="using-the-lua-module"><span
class="header-section-number">1.3.1.1</span> Using the Lua Module</h4>
<p>Using a text editor, create a text document named
<code>hello.lua</code> with the following content:</p>
<div class="sourceCode" id="cb5"><pre
class="sourceCode lua"><code class="sourceCode lua"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/bin/env texlua</span></span>
-<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> ran_ok<span class="op">,</span> kpse <span class="op">=</span> <span class="fu">pcall</span><span class="op">(</span><span class="fu">require</span><span class="op">,</span> <span class="st">&quot;kpse&quot;</span><span class="op">)</span></span>
-<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> ran_ok <span class="cf">then</span> kpse<span class="op">.</span>set_program_name<span class="op">(</span><span class="st">&quot;luatex&quot;</span><span class="op">)</span> <span class="cf">end</span></span>
-<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> markdown <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">&quot;markdown&quot;</span><span class="op">)</span></span>
-<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> convert <span class="op">=</span> markdown<span class="op">.</span>new<span class="op">()</span></span>
+<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">kpse</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">&quot;kpse&quot;</span><span class="op">)</span></span>
+<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="va">kpse</span><span class="op">.</span>set_program_name<span class="op">(</span><span class="st">&quot;luatex&quot;</span><span class="op">)</span></span>
+<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">markdown</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">&quot;markdown&quot;</span><span class="op">)</span></span>
+<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">convert</span> <span class="op">=</span> <span class="va">markdown</span><span class="op">.</span>new<span class="op">()</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span><span class="op">(</span>convert<span class="op">(</span><span class="st">&quot;Hello *world*!&quot;</span><span class="op">))</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> hello.lua <span class="op">&gt;</span> hello.tex</span>
@@ -344,77 +389,144 @@ class="sourceCode tex"><code class="sourceCode latex"><span id="cb11-1"><a href=
<div class="sourceCode" id="cb12"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
-contain the text “Hello <em>world</em>!” Invoking pdfTeX should have the
-same effect:</p>
+contain the text “Hello <em>world</em>!”</p>
+<p>Instead of LuaTeX, you may also use pdfTeX:</p>
<div class="sourceCode" id="cb13"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<p>This should also produce a PDF document named
+<code>document.pdf</code> with the same content.</p>
+<hr />
+<p>Instead of writing your markdown document between
+<code>\markdownBegin</code> and <code>\markdownEnd</code>, you can also
+include markdown documents using the <code>\markdownInput</code> macro,
+similarly to how you might use the <code>\input</code> TeX primitive to
+include <span class="tex">T<sub>e</sub>X</span> documents.</p>
+<p>Using a text editor, create a text document named
+<code>hello.md</code> with the following content:</p>
+<div class="sourceCode" id="cb14"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
+<p>Create also a text document named <code>document.tex</code> with the
+following content:</p>
+<div class="sourceCode" id="cb15"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hello.md}</span>
+<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX or pdfTeX from the terminal like in the previous
+example. A PDF document named <code>document.pdf</code> should be
+produced and contain the text “Hello <em>world</em>!”</p>
<h3 data-number="1.3.3" id="using-latex"><span
class="header-section-number">1.3.3</span> Using <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h3>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb14"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb16"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb16-5"><a href="#cb16-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb16-6"><a href="#cb16-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb16-7"><a href="#cb16-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb15"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb17"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
-contain the text “Hello <em>world</em>!” Invoking pdfTeX should have the
-same effect:</p>
-<div class="sourceCode" id="cb16"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+contain the text “Hello <em>world</em>!”</p>
+<p>Instead of LuaTeX, you may also use pdfTeX:</p>
+<div class="sourceCode" id="cb18"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<p>This should also produce a PDF document named
+<code>document.pdf</code> with the same content.</p>
+<hr />
+<p>Instead of writing your markdown document between
+<code>\begin{markdown}</code> and <code>\end{markdown}</code>, you can
+also include markdown documents using the <code>\markdownInput</code>
+macro, similarly to how you might use the <code>\input</code> TeX
+primitive to include <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> documents.</p>
+<p>Using a text editor, create a text document named
+<code>hello.md</code> with the following content:</p>
+<div class="sourceCode" id="cb19"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
+<p>Create also a text document named <code>document.tex</code> with the
+following content:</p>
+<div class="sourceCode" id="cb20"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb20-4"><a href="#cb20-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb20-5"><a href="#cb20-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hello.md}</span>
+<span id="cb20-6"><a href="#cb20-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb20-7"><a href="#cb20-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX or pdfTeX from the terminal like in the previous
+example. A PDF document named <code>document.pdf</code> should be
+produced and contain the text “Hello <em>world</em>!”</p>
<hr />
<p>As the next step, try typesetting the example documents distributed
along with the Markdown package:</p>
-<div class="sourceCode" id="cb17"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span>
-<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span>
-<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div>
+<div class="sourceCode" id="cb21"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span>
+<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span>
+<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div>
<p>A PDF document named <code>latex-luatex.pdf</code> should be
produced. Open the text documents <code>latex-luatex.tex</code> and
<code>example.md</code> in a text editor to see how the example
documents are structured. Try changing the documents and typesetting
them as follows:</p>
-<div class="sourceCode" id="cb18"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div>
+<div class="sourceCode" id="cb22"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> latex-luatex.tex</span></code></pre></div>
<p>to see the effect of your changes.</p>
<h3 data-number="1.3.4" id="using-context"><span
class="header-section-number">1.3.4</span> Using Con<span
class="tex">T<sub>e</sub>X</span>t</h3>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb19"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb19-6"><a href="#cb19-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb23"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb23-4"><a href="#cb23-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb23-5"><a href="#cb23-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb23-6"><a href="#cb23-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb20"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb24"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
<hr />
+<p>Instead of writing your markdown document between
+<code>\startmarkdown</code> and <code>\stopmarkdown</code>, you can also
+include markdown documents using the <code>\inputmarkdown</code> macro,
+similarly to how you might use the <code>\input</code> TeX primitive to
+include Con<span class="tex">T<sub>e</sub>X</span>t documents.</p>
+<p>Using a text editor, create a text document named
+<code>hello.md</code> with the following content:</p>
+<div class="sourceCode" id="cb25"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
+<p>Create also a text document named <code>document.tex</code> with the
+following content:</p>
+<div class="sourceCode" id="cb26"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb26-2"><a href="#cb26-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb26-3"><a href="#cb26-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>{hello.md}</span>
+<span id="cb26-4"><a href="#cb26-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal like in the previous example. A
+PDF document named <code>document.pdf</code> should be produced and
+contain the text “Hello <em>world</em>!”</p>
+<hr />
<p>As the next step, try typesetting the example documents distributed
along with the Markdown package:</p>
-<div class="sourceCode" id="cb21"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span>
-<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span>
-<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> context.tex</span></code></pre></div>
+<div class="sourceCode" id="cb27"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="fu">git</span> clone https://github.com/witiko/markdown</span>
+<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> markdown/examples</span>
+<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> context.tex</span></code></pre></div>
<p>A PDF document named <code>context.pdf</code> should be produced.
Open the text documents <code>context.tex</code> and
<code>example.md</code> in a text editor to see how the example
documents are structured. Try changing the documents and typesetting
them as follows:</p>
-<div class="sourceCode" id="cb22"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> context.tex</span></code></pre></div>
+<div class="sourceCode" id="cb28"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> context.tex</span></code></pre></div>
<p>to see the effect of your changes.</p>
<h1 data-number="2" id="examples"><span
class="header-section-number">2</span> Examples</h1>
@@ -457,33 +569,37 @@ parameter is optional; when unspecified, the behaviour will be the same
as if ⟨<em>options</em>⟩ were an empty table.</p>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb23"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb23-3"><a href="#cb23-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> example</span>
-<span id="cb23-4"><a href="#cb23-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb29"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb29-2"><a href="#cb29-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb29-3"><a href="#cb29-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb29-4"><a href="#cb29-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb29-5"><a href="#cb29-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb29-6"><a href="#cb29-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> example</span>
+<span id="cb29-7"><a href="#cb29-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb29-8"><a href="#cb29-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>example.lua</code> with the following content:</p>
-<div class="sourceCode" id="cb24"><pre
-class="sourceCode lua"><code class="sourceCode lua"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/bin/env texlua</span></span>
-<span id="cb24-2"><a href="#cb24-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> ran_ok<span class="op">,</span> kpse <span class="op">=</span> <span class="fu">pcall</span><span class="op">(</span><span class="fu">require</span><span class="op">,</span> <span class="st">&quot;kpse&quot;</span><span class="op">)</span></span>
-<span id="cb24-3"><a href="#cb24-3" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> ran_ok <span class="cf">then</span> kpse<span class="op">.</span>set_program_name<span class="op">(</span><span class="st">&quot;luatex&quot;</span><span class="op">)</span> <span class="cf">end</span></span>
-<span id="cb24-4"><a href="#cb24-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> markdown <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">&quot;markdown&quot;</span><span class="op">)</span></span>
-<span id="cb24-5"><a href="#cb24-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> input<span class="op">,</span> convert_safe<span class="op">,</span> convert_unsafe<span class="op">,</span> paragraph</span>
-<span id="cb24-6"><a href="#cb24-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb24-7"><a href="#cb24-7" aria-hidden="true" tabindex="-1"></a>input <span class="op">=</span> <span class="vs">[[$\sqrt{-1}$ *equals* $i$.]]</span></span>
-<span id="cb24-8"><a href="#cb24-8" aria-hidden="true" tabindex="-1"></a>convert_safe <span class="op">=</span> markdown<span class="op">.</span>new<span class="op">()</span></span>
-<span id="cb24-9"><a href="#cb24-9" aria-hidden="true" tabindex="-1"></a>convert_unsafe <span class="op">=</span> markdown<span class="op">.</span>new<span class="op">({</span>hybrid <span class="op">=</span> <span class="kw">true</span><span class="op">})</span></span>
-<span id="cb24-10"><a href="#cb24-10" aria-hidden="true" tabindex="-1"></a>paragraph <span class="op">=</span> <span class="vs">[[\par]]</span></span>
-<span id="cb24-11"><a href="#cb24-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb24-12"><a href="#cb24-12" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span><span class="op">(</span></span>
-<span id="cb24-13"><a href="#cb24-13" aria-hidden="true" tabindex="-1"></a> convert_safe<span class="op">(</span>input<span class="op">)</span> <span class="op">..</span> paragraph <span class="op">..</span></span>
-<span id="cb24-14"><a href="#cb24-14" aria-hidden="true" tabindex="-1"></a> convert_unsafe<span class="op">(</span>input<span class="op">)</span></span>
-<span id="cb24-15"><a href="#cb24-15" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
+<div class="sourceCode" id="cb30"><pre
+class="sourceCode lua"><code class="sourceCode lua"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/bin/env texlua</span></span>
+<span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">kpse</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">&quot;kpse&quot;</span><span class="op">)</span></span>
+<span id="cb30-3"><a href="#cb30-3" aria-hidden="true" tabindex="-1"></a><span class="va">kpse</span><span class="op">.</span>set_program_name<span class="op">(</span><span class="st">&quot;luatex&quot;</span><span class="op">)</span></span>
+<span id="cb30-4"><a href="#cb30-4" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">markdown</span> <span class="op">=</span> <span class="fu">require</span><span class="op">(</span><span class="st">&quot;markdown&quot;</span><span class="op">)</span></span>
+<span id="cb30-5"><a href="#cb30-5" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">input</span><span class="op">,</span> <span class="va">convert_nomath</span><span class="op">,</span> <span class="va">convert_math</span><span class="op">,</span> <span class="va">paragraph</span></span>
+<span id="cb30-6"><a href="#cb30-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb30-7"><a href="#cb30-7" aria-hidden="true" tabindex="-1"></a><span class="va">input</span> <span class="op">=</span> <span class="vs">[[$\sqrt{-1}$ *equals* $i$.]]</span></span>
+<span id="cb30-8"><a href="#cb30-8" aria-hidden="true" tabindex="-1"></a><span class="va">convert_nomath</span> <span class="op">=</span> <span class="va">markdown</span><span class="op">.</span>new<span class="op">()</span></span>
+<span id="cb30-9"><a href="#cb30-9" aria-hidden="true" tabindex="-1"></a><span class="va">convert_math</span> <span class="op">=</span> <span class="va">markdown</span><span class="op">.</span>new<span class="op">({</span><span class="va">texMathDollars</span> <span class="op">=</span> <span class="kw">true</span><span class="op">})</span></span>
+<span id="cb30-10"><a href="#cb30-10" aria-hidden="true" tabindex="-1"></a><span class="va">paragraph</span> <span class="op">=</span> <span class="vs">[[\par]]</span></span>
+<span id="cb30-11"><a href="#cb30-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb30-12"><a href="#cb30-12" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span><span class="op">(</span></span>
+<span id="cb30-13"><a href="#cb30-13" aria-hidden="true" tabindex="-1"></a> convert_nomath<span class="op">(</span><span class="va">input</span><span class="op">)</span> <span class="op">..</span> <span class="va">paragraph</span> <span class="op">..</span></span>
+<span id="cb30-14"><a href="#cb30-14" aria-hidden="true" tabindex="-1"></a> convert_math<span class="op">(</span><span class="va">input</span><span class="op">)</span></span>
+<span id="cb30-15"><a href="#cb30-15" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb25"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">&gt;</span> example.tex</span>
-<span id="cb25-2"><a href="#cb25-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb31"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">&gt;</span> example.tex</span>
+<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -492,35 +608,35 @@ contain the following text:</p>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
<p>Invoking pdfTeX should have the same effect:</p>
-<div class="sourceCode" id="cb26"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">&gt;</span> example.tex</span>
-<span id="cb26-2"><a href="#cb26-2" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb32"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> example.lua <span class="op">&gt;</span> example.tex</span>
+<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div>
<hr />
<p>Rather than use the <code>texlua</code> interpreter, we can also
access the <code>markdown</code> Lua module directly from our document.
Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb27"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb27-4"><a href="#cb27-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb27-5"><a href="#cb27-5" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span>
-<span id="cb27-6"><a href="#cb27-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb27-7"><a href="#cb27-7" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span>
-<span id="cb27-8"><a href="#cb27-8" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span>
-<span id="cb27-9"><a href="#cb27-9" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span>
-<span id="cb27-10"><a href="#cb27-10" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span>
-<span id="cb27-11"><a href="#cb27-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb27-12"><a href="#cb27-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span>
-<span id="cb27-13"><a href="#cb27-13" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span>
-<span id="cb27-14"><a href="#cb27-14" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</span>
-<span id="cb27-15"><a href="#cb27-15" aria-hidden="true" tabindex="-1"></a> )</span>
-<span id="cb27-16"><a href="#cb27-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb27-17"><a href="#cb27-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb33"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb33-2"><a href="#cb33-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb33-3"><a href="#cb33-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb33-4"><a href="#cb33-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb33-5"><a href="#cb33-5" aria-hidden="true" tabindex="-1"></a> local input, convert_nomath, convert_math, paragraph</span>
+<span id="cb33-6"><a href="#cb33-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb33-7"><a href="#cb33-7" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span>
+<span id="cb33-8"><a href="#cb33-8" aria-hidden="true" tabindex="-1"></a> convert_nomath = markdown.new()</span>
+<span id="cb33-9"><a href="#cb33-9" aria-hidden="true" tabindex="-1"></a> convert_math = markdown.new({texMathDollars = true})</span>
+<span id="cb33-10"><a href="#cb33-10" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span>
+<span id="cb33-11"><a href="#cb33-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb33-12"><a href="#cb33-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span>
+<span id="cb33-13"><a href="#cb33-13" aria-hidden="true" tabindex="-1"></a> convert_nomath(input) .. paragraph ..</span>
+<span id="cb33-14"><a href="#cb33-14" aria-hidden="true" tabindex="-1"></a> convert_math(input)</span>
+<span id="cb33-15"><a href="#cb33-15" aria-hidden="true" tabindex="-1"></a> )</span>
+<span id="cb33-16"><a href="#cb33-16" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb33-17"><a href="#cb33-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb28"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb34"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb34-1"><a href="#cb34-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -544,25 +660,26 @@ Lua programming language.</p>
command-line parameters.</p>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb29"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb29-2"><a href="#cb29-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb29-3"><a href="#cb29-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> safe</span>
-<span id="cb29-4"><a href="#cb29-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb29-5"><a href="#cb29-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb29-6"><a href="#cb29-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb29-7"><a href="#cb29-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> unsafe</span>
-<span id="cb29-8"><a href="#cb29-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb29-9"><a href="#cb29-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb35"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb35-2"><a href="#cb35-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb35-3"><a href="#cb35-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb35-4"><a href="#cb35-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb35-5"><a href="#cb35-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb35-6"><a href="#cb35-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> nomath</span>
+<span id="cb35-7"><a href="#cb35-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb35-8"><a href="#cb35-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> math</span>
+<span id="cb35-9"><a href="#cb35-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb35-10"><a href="#cb35-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>example.md</code> with the following content:</p>
-<div class="sourceCode" id="cb30"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div>
+<div class="sourceCode" id="cb36"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb36-1"><a href="#cb36-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb31"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md safe.tex</span>
-<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> example.md unsafe.tex</span>
-<span id="cb31-3"><a href="#cb31-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb37"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb37-1"><a href="#cb37-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md nomath.tex</span>
+<span id="cb37-2"><a href="#cb37-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ tex_math_dollars=true <span class="at">--</span> example.md math.tex</span>
+<span id="cb37-3"><a href="#cb37-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -580,10 +697,10 @@ contain the following text:</p>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
<p>Invoking pdfTeX should have the same effect:</p>
-<div class="sourceCode" id="cb32"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md safe.tex</span>
-<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> example.md unsafe.tex</span>
-<span id="cb32-3"><a href="#cb32-3" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb38"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb38-1"><a href="#cb38-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> example.md nomath.tex</span>
+<span id="cb38-2"><a href="#cb38-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ tex_math_dollars=true <span class="at">--</span> example.md math.tex</span>
+<span id="cb38-3"><a href="#cb38-3" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div>
<h3 data-number="2.1.2" id="plain-tex"><span
class="header-section-number">2.1.2</span> Plain <span
class="tex">T<sub>e</sub>X</span></h3>
@@ -599,23 +716,23 @@ its own options, but now the options are specified as <span
class="tex">T<sub>e</sub>X</span> commands.</p>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb33"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb33-2"><a href="#cb33-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb33-3"><a href="#cb33-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb33-4"><a href="#cb33-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb33-5"><a href="#cb33-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb33-6"><a href="#cb33-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb33-7"><a href="#cb33-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb33-8"><a href="#cb33-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
-<span id="cb33-9"><a href="#cb33-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb33-10"><a href="#cb33-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb33-11"><a href="#cb33-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb33-12"><a href="#cb33-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb33-13"><a href="#cb33-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb39"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb39-1"><a href="#cb39-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb39-2"><a href="#cb39-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb39-3"><a href="#cb39-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb39-4"><a href="#cb39-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb39-5"><a href="#cb39-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb39-6"><a href="#cb39-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb39-7"><a href="#cb39-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb39-8"><a href="#cb39-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
+<span id="cb39-9"><a href="#cb39-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb39-10"><a href="#cb39-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb39-11"><a href="#cb39-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb39-12"><a href="#cb39-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb39-13"><a href="#cb39-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb34"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb34-1"><a href="#cb34-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb40"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb40-1"><a href="#cb40-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -624,8 +741,8 @@ contain the following text:</p>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
<p>Invoking pdfTeX should have the same effect:</p>
-<div class="sourceCode" id="cb35"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb41"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb41-1"><a href="#cb41-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<h3 data-number="2.1.3" id="latex"><span
class="header-section-number">2.1.3</span> <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h3>
@@ -647,23 +764,23 @@ or as parameters for the <code>markdown*</code> <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> environment.</p>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb36"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb36-1"><a href="#cb36-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb36-2"><a href="#cb36-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb36-3"><a href="#cb36-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb36-4"><a href="#cb36-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb36-5"><a href="#cb36-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb36-6"><a href="#cb36-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb36-7"><a href="#cb36-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb36-8"><a href="#cb36-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb36-9"><a href="#cb36-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hybrid}</span>
-<span id="cb36-10"><a href="#cb36-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb36-11"><a href="#cb36-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb36-12"><a href="#cb36-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb36-13"><a href="#cb36-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb42"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb42-1"><a href="#cb42-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb42-2"><a href="#cb42-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb42-3"><a href="#cb42-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb42-4"><a href="#cb42-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb42-5"><a href="#cb42-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb42-6"><a href="#cb42-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb42-7"><a href="#cb42-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb42-8"><a href="#cb42-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb42-9"><a href="#cb42-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[texMathDollars]</span>
+<span id="cb42-10"><a href="#cb42-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb42-11"><a href="#cb42-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb42-12"><a href="#cb42-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb42-13"><a href="#cb42-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb37"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb37-1"><a href="#cb37-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb43"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb43-1"><a href="#cb43-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -672,8 +789,8 @@ contain the following text:</p>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
<p>Invoking pdfTeX should have the same effect:</p>
-<div class="sourceCode" id="cb38"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb38-1"><a href="#cb38-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb44"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb44-1"><a href="#cb44-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<h3 data-number="2.1.4" id="context"><span
class="header-section-number">2.1.4</span> Con<span
class="tex">T<sub>e</sub>X</span>t</h3>
@@ -690,23 +807,23 @@ same options as the plain <span class="tex">T<sub>e</sub>X</span>
interface.</p>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb39"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb39-1"><a href="#cb39-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb39-2"><a href="#cb39-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb39-3"><a href="#cb39-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb39-4"><a href="#cb39-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb39-5"><a href="#cb39-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb39-6"><a href="#cb39-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb39-7"><a href="#cb39-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb39-8"><a href="#cb39-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
-<span id="cb39-9"><a href="#cb39-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb39-10"><a href="#cb39-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb39-11"><a href="#cb39-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb39-12"><a href="#cb39-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb39-13"><a href="#cb39-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb45"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb45-1"><a href="#cb45-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb45-2"><a href="#cb45-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb45-3"><a href="#cb45-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb45-4"><a href="#cb45-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb45-5"><a href="#cb45-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb45-6"><a href="#cb45-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb45-7"><a href="#cb45-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb45-8"><a href="#cb45-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texmathdollars = yes]</span>
+<span id="cb45-9"><a href="#cb45-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb45-10"><a href="#cb45-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb45-11"><a href="#cb45-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb45-12"><a href="#cb45-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb45-13"><a href="#cb45-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb40"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb40-1"><a href="#cb40-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb46"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb46-1"><a href="#cb46-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -726,8 +843,143 @@ of the Markdown package starting with the low-level Lua interfaces and
all the way up to the <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> and Con<span
class="tex">T<sub>e</sub>X</span>t interfaces.</p>
-<h4 data-number="2.2.1.1" id="option-cachedir"><span
+<h4 data-number="2.2.1.1" id="option-eagercache"><span
class="header-section-number">2.2.1.1</span> Option
+<code>eagerCache</code></h4>
+<dl>
+<dt><code>eagerCache</code> (default value: <code>false</code>)</dt>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>Converted markdown documents will be cached in
+<strong><code>cacheDir</code></strong>. This can be useful for
+post-processing the converted documents and for recovering historical
+versions of the documents from the cache. However, it also produces a
+large number of auxiliary files on the disk and obscures the output of
+the Lua command-line interface when it is used for plumbing.</p>
+<p>This behavior will always be used if the
+<strong><code>finalizeCache</code></strong> option is enabled.</p>
+</dd>
+</dl>
+</dd>
+<dd>
+<dl>
+<dt>false</dt>
+<dd>
+<p>Converted markdown documents will not be cached. This decreases the
+number of auxiliary files that we produce and makes it easier to use the
+Lua command-line interface for plumbing.</p>
+<p>This behavior will only be used when the
+<strong><code>finalizeCache</code></strong> option is disabled.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h5 class="unnumbered" id="lua-cli-example">Lua CLI Example</h5>
+<p>Using a text editor, create a text document named
+<code>hello.md</code> with the following content:</p>
+<div class="sourceCode" id="cb47"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb47-1"><a href="#cb47-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal with the
+<strong><code>eagerCache</code></strong> option disabled:</p>
+<div class="sourceCode" id="cb48"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb48-1"><a href="#cb48-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ eagerCache=false <span class="at">--</span> hello.md hello.tex</span></code></pre></div>
+<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
+CLI script file, such as
+<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
+or <code>C:\Users\</code>⟨<em>Your
+username</em>⟩<code>\texmf\scripts\markdown\markdown-cli.lua</code> on
+Windows systems. Use the command
+<code>kpsewhich -a markdown-cli.lua</code> to locate the Lua CLI script
+file using <a href="https://tug.org/kpathsea/"
+title="Kpathsea - TeX Users Group">Kpathsea</a>.</p>
+<p>A <span class="tex">T<sub>e</sub>X</span> document named
+<code>hello.tex</code> should be produced and contain the following
+code:</p>
+<div class="sourceCode" id="cb49"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb49-1"><a href="#cb49-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div>
+<hr />
+<p>Invoke LuaTeX from the terminal again, this time with the
+<strong><code>eagerCache</code></strong> option enabled:</p>
+<div class="sourceCode" id="cb50"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb50-1"><a href="#cb50-1" aria-hidden="true" tabindex="-1"></a>texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex</span></code></pre></div>
+<p>A <span class="tex">T<sub>e</sub>X</span> document named
+<code>hello.tex</code> should be produced and contain the following
+code:</p>
+<div class="sourceCode" id="cb51"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb51-1"><a href="#cb51-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> ./⟨hash⟩.md.tex<span class="fu">\relax</span></span></code></pre></div>
+<p>Additionally, a <span class="tex">T<sub>e</sub>X</span> document
+named <code>⟨hash⟩.md.tex</code> should be produced and contain the
+following code:</p>
+<div class="sourceCode" id="cb52"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb52-1"><a href="#cb52-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div>
+<h4 data-number="2.2.1.2" id="option-singletoncache"><span
+class="header-section-number">2.2.1.2</span> Option
+<code>singletonCache</code></h4>
+<dl>
+<dt><code>singletonCache</code> (default value: <code>true</code>)</dt>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>Conversion functions produced by the function
+\luamref{new}<code>(options)</code> will be cached in an LRU cache of
+size 1 keyed by <code>options</code>. This is more time- and
+space-efficient than always producing a new conversion function but may
+expose bugs related to the idempotence of conversion functions.</p>
+<p>This has been the default behavior since version 3.0.0 of the
+Markdown package.</p>
+</dd>
+</dl>
+</dd>
+<dd>
+<dl>
+<dt>false</dt>
+<dd>
+<p>Every call to the function \luamref{new}<code>(options)</code> will
+produce a new conversion function that will not be cached. This is
+slower than caching conversion functions and may expose bugs related to
+memory leaks in the creation of conversion functions, see also issue <a
+href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">#226</a>.</p>
+<p>This was the default behavior until version 3.0.0 of the Markdown
+package.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h5 class="unnumbered" id="lua-module-example">Lua Module Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb53"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb53-1"><a href="#cb53-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb53-2"><a href="#cb53-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb53-3"><a href="#cb53-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb53-4"><a href="#cb53-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb53-5"><a href="#cb53-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb53-6"><a href="#cb53-6" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb53-7"><a href="#cb53-7" aria-hidden="true" tabindex="-1"></a> local convert1 = markdown.new({})</span>
+<span id="cb53-8"><a href="#cb53-8" aria-hidden="true" tabindex="-1"></a> local convert2 = markdown.new({singletonCache=false})</span>
+<span id="cb53-9"><a href="#cb53-9" aria-hidden="true" tabindex="-1"></a> local convert3 = markdown.new({singletonCache=true})</span>
+<span id="cb53-10"><a href="#cb53-10" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb53-11"><a href="#cb53-11" aria-hidden="true" tabindex="-1"></a> tex.print(tostring(convert1) .. &quot;, &quot;)</span>
+<span id="cb53-12"><a href="#cb53-12" aria-hidden="true" tabindex="-1"></a> tex.print(tostring(convert2) .. &quot;, &quot;)</span>
+<span id="cb53-13"><a href="#cb53-13" aria-hidden="true" tabindex="-1"></a> tex.print(tostring(convert3))</span>
+<span id="cb53-14"><a href="#cb53-14" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb53-15"><a href="#cb53-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb53-16"><a href="#cb53-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Then, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb54"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb54-1"><a href="#cb54-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>function: 0x1a4a038, function: 0x1a52b18, function: 0x1a4a038</p>
+</blockquote>
+<p>As you can see, the caching causes <code>convert1</code> and
+<code>convert3</code> to be the same conversion function.</p>
+<h4 data-number="2.2.1.3" id="option-cachedir"><span
+class="header-section-number">2.2.1.3</span> Option
<code>cacheDir</code></h4>
<dl>
<dt><code>cacheDir</code> (default value: <code>"."</code>)</dt>
@@ -744,40 +996,48 @@ filesystem (such as <code>/tmp</code> on UN*X systems), which gets
periodically emptied.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-1">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb41"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb41-1"><a href="#cb41-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb41-2"><a href="#cb41-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb41-3"><a href="#cb41-3" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb41-4"><a href="#cb41-4" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({cacheDir = &quot;cache&quot;})</span>
-<span id="cb41-5"><a href="#cb41-5" aria-hidden="true" tabindex="-1"></a> local input = &quot;Hello *world*!&quot;</span>
-<span id="cb41-6"><a href="#cb41-6" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb41-7"><a href="#cb41-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb55"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb55-1"><a href="#cb55-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb55-2"><a href="#cb55-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb55-3"><a href="#cb55-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb55-4"><a href="#cb55-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb55-5"><a href="#cb55-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb55-6"><a href="#cb55-6" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb55-7"><a href="#cb55-7" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({cacheDir = &quot;cache&quot;})</span>
+<span id="cb55-8"><a href="#cb55-8" aria-hidden="true" tabindex="-1"></a> local input = &quot;Hello *world*!&quot;</span>
+<span id="cb55-9"><a href="#cb55-9" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb55-10"><a href="#cb55-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb55-11"><a href="#cb55-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Create an empty directory named <code>cache</code> next to our text
document. Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb42"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb42-1"><a href="#cb42-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb56"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb56-1"><a href="#cb56-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” Several cache files of the
Markdown package will also be produced in the <code>cache</code>
directory as we requested using the <code>cacheDir</code> option.</p>
-<h5 class="unnumbered" id="lua-cli-example">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-1">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb43"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb43-1"><a href="#cb43-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb43-2"><a href="#cb43-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span>
-<span id="cb43-3"><a href="#cb43-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb57"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb57-1"><a href="#cb57-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb57-2"><a href="#cb57-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb57-3"><a href="#cb57-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb57-4"><a href="#cb57-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb57-5"><a href="#cb57-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span>
+<span id="cb57-6"><a href="#cb57-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb57-7"><a href="#cb57-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>hello.md</code> with the following content:</p>
-<div class="sourceCode" id="cb44"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb44-1"><a href="#cb44-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
+<div class="sourceCode" id="cb58"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb58-1"><a href="#cb58-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb45"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb45-1"><a href="#cb45-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ cacheDir=cache <span class="at">--</span> hello.md hello.tex</span>
-<span id="cb45-2"><a href="#cb45-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb59"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb59-1"><a href="#cb59-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ cacheDir=cache <span class="at">--</span> hello.md hello.tex</span>
+<span id="cb59-2"><a href="#cb59-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -796,16 +1056,16 @@ package will also be produced as we requested using the
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb46"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb46-1"><a href="#cb46-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb46-2"><a href="#cb46-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{cache}</span>
-<span id="cb46-3"><a href="#cb46-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb46-4"><a href="#cb46-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb46-5"><a href="#cb46-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb46-6"><a href="#cb46-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb60"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb60-1"><a href="#cb60-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb60-2"><a href="#cb60-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{cache}</span>
+<span id="cb60-3"><a href="#cb60-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb60-4"><a href="#cb60-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb60-5"><a href="#cb60-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb60-6"><a href="#cb60-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb47"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb47-1"><a href="#cb47-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb61"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb61-1"><a href="#cb61-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A directory named
<code>cache</code> containing several cache files of the Markdown
@@ -815,17 +1075,17 @@ package will also be produced as we requested using the
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb48"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb48-1"><a href="#cb48-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb48-2"><a href="#cb48-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[cacheDir=cache]{<span class="ex">markdown</span>}</span>
-<span id="cb48-3"><a href="#cb48-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb48-4"><a href="#cb48-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb48-5"><a href="#cb48-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb48-6"><a href="#cb48-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb48-7"><a href="#cb48-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb62"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb62-1"><a href="#cb62-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb62-2"><a href="#cb62-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[cacheDir=cache]{<span class="ex">markdown</span>}</span>
+<span id="cb62-3"><a href="#cb62-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb62-4"><a href="#cb62-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb62-5"><a href="#cb62-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb62-6"><a href="#cb62-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb62-7"><a href="#cb62-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb49"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb49-1"><a href="#cb49-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb63"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb63-1"><a href="#cb63-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A directory named
<code>cache</code> containing several cache files of the Markdown
@@ -835,31 +1095,31 @@ package will also be produced as we requested using the
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb50"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb50-1"><a href="#cb50-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb50-2"><a href="#cb50-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[cacheDir = cache]</span>
-<span id="cb50-3"><a href="#cb50-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb50-4"><a href="#cb50-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb50-5"><a href="#cb50-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb50-6"><a href="#cb50-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb50-7"><a href="#cb50-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb64"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb64-1"><a href="#cb64-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb64-2"><a href="#cb64-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[cacheDir = cache]</span>
+<span id="cb64-3"><a href="#cb64-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb64-4"><a href="#cb64-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb64-5"><a href="#cb64-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb64-6"><a href="#cb64-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb64-7"><a href="#cb64-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb51"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb51-1"><a href="#cb51-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb65"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb65-1"><a href="#cb65-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A directory named
<code>cache</code> containing several cache files of the Markdown
package will also be produced as we requested using the
<code>cacheDir</code> option.</p>
-<h4 data-number="2.2.1.2" id="option-contentblockslanguagemap"><span
-class="header-section-number">2.2.1.2</span> Option
+<h4 data-number="2.2.1.4" id="option-contentblockslanguagemap"><span
+class="header-section-number">2.2.1.4</span> Option
<code>contentBlocksLanguageMap</code></h4>
<dl>
<dt><code>contentBlocksLanguageMap</code> (default value:
<code>"markdown-languages.json"</code>)</dt>
<dd>
<p>The filename of the <abbr>JSON</abbr> file that maps filename
-extensions to programming language names in the iA Writer content blocks
+extensions to programming language names in the iA Writer content blocks
when the <strong><code>contentBlocks</code></strong> option is
enabled.</p>
</dd>
@@ -874,37 +1134,37 @@ Marie,Curie,1867
Thomas,Edison,1847</code></pre>
<p>Create also a text document named <code>language-map.json</code> with
the following content:</p>
-<div class="sourceCode" id="cb53"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb53-1"><a href="#cb53-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb53-2"><a href="#cb53-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;LaTeX&quot;</span></span>
-<span id="cb53-3"><a href="#cb53-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb67"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb67-1"><a href="#cb67-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb67-2"><a href="#cb67-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;LaTeX&quot;</span></span>
+<span id="cb67-3"><a href="#cb67-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Create also a text document named <code>code.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb54"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb54-1"><a href="#cb54-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb68"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb68-1"><a href="#cb68-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
<p>Create also a text document named <code>part.md</code> with the
following content:</p>
-<div class="sourceCode" id="cb55"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb55-1"><a href="#cb55-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
+<div class="sourceCode" id="cb69"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb69-1"><a href="#cb69-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
<p>Create also a text document named <code>document.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb56"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb56-1"><a href="#cb56-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb56-2"><a href="#cb56-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
-<span id="cb56-3"><a href="#cb56-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb56-4"><a href="#cb56-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb56-5"><a href="#cb56-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = {language-map.json},</span>
-<span id="cb56-6"><a href="#cb56-6" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb56-7"><a href="#cb56-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb56-8"><a href="#cb56-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb56-9"><a href="#cb56-9" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
-<span id="cb56-10"><a href="#cb56-10" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
-<span id="cb56-11"><a href="#cb56-11" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
-<span id="cb56-12"><a href="#cb56-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb56-13"><a href="#cb56-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb70"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb70-1"><a href="#cb70-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb70-2"><a href="#cb70-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
+<span id="cb70-3"><a href="#cb70-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb70-4"><a href="#cb70-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb70-5"><a href="#cb70-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = {language-map.json},</span>
+<span id="cb70-6"><a href="#cb70-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb70-7"><a href="#cb70-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb70-8"><a href="#cb70-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb70-9"><a href="#cb70-9" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
+<span id="cb70-10"><a href="#cb70-10" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
+<span id="cb70-11"><a href="#cb70-11" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
+<span id="cb70-12"><a href="#cb70-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb70-13"><a href="#cb70-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb57"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb57-1"><a href="#cb57-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb71"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb71-1"><a href="#cb71-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -935,8 +1195,8 @@ contain the following text:</p>
</tbody>
</table>
<p>Table 1: An example table</p>
-<div class="sourceCode" id="cb58"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb58-1"><a href="#cb58-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb72"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb72-1"><a href="#cb72-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
<p>This is a <em>transcluded markdown document</em>.</p>
</blockquote>
<h5 class="unnumbered" id="context-example-1">Con<span
@@ -949,39 +1209,39 @@ Marie,Curie,1867
Thomas,Edison,1847</code></pre>
<p>Create also a text document named <code>language-map.json</code> with
the following content:</p>
-<div class="sourceCode" id="cb60"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb60-1"><a href="#cb60-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb60-2"><a href="#cb60-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;ConTeXt&quot;</span></span>
-<span id="cb60-3"><a href="#cb60-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb74"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb74-1"><a href="#cb74-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb74-2"><a href="#cb74-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;ConTeXt&quot;</span></span>
+<span id="cb74-3"><a href="#cb74-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Create also a text document named <code>code.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb61"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb61-1"><a href="#cb61-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb75"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb75-1"><a href="#cb75-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
<p>Create also a text document named <code>part.md</code> with the
following content:</p>
-<div class="sourceCode" id="cb62"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb62-1"><a href="#cb62-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
+<div class="sourceCode" id="cb76"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb76-1"><a href="#cb76-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
<p>Create also a text document named <code>document.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb63"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb63-1"><a href="#cb63-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb63-2"><a href="#cb63-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb63-3"><a href="#cb63-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb63-4"><a href="#cb63-4" aria-hidden="true" tabindex="-1"></a> contentBlocks = yes,</span>
-<span id="cb63-5"><a href="#cb63-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = language-map.json,</span>
-<span id="cb63-6"><a href="#cb63-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb63-7"><a href="#cb63-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span>
-<span id="cb63-8"><a href="#cb63-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span>
-<span id="cb63-9"><a href="#cb63-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb63-10"><a href="#cb63-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb63-11"><a href="#cb63-11" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
-<span id="cb63-12"><a href="#cb63-12" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
-<span id="cb63-13"><a href="#cb63-13" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
-<span id="cb63-14"><a href="#cb63-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb63-15"><a href="#cb63-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb77"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb77-1"><a href="#cb77-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb77-2"><a href="#cb77-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb77-3"><a href="#cb77-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb77-4"><a href="#cb77-4" aria-hidden="true" tabindex="-1"></a> contentBlocks = yes,</span>
+<span id="cb77-5"><a href="#cb77-5" aria-hidden="true" tabindex="-1"></a> contentBlocksLanguageMap = language-map.json,</span>
+<span id="cb77-6"><a href="#cb77-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb77-7"><a href="#cb77-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span>
+<span id="cb77-8"><a href="#cb77-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span>
+<span id="cb77-9"><a href="#cb77-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb77-10"><a href="#cb77-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb77-11"><a href="#cb77-11" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
+<span id="cb77-12"><a href="#cb77-12" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
+<span id="cb77-13"><a href="#cb77-13" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
+<span id="cb77-14"><a href="#cb77-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb77-15"><a href="#cb77-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb64"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb64-1"><a href="#cb64-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb78"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb78-1"><a href="#cb78-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1012,12 +1272,12 @@ contain the following text:</p>
</tbody>
</table>
<p>Table 1: An example table</p>
-<div class="sourceCode" id="cb65"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb65-1"><a href="#cb65-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb79"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb79-1"><a href="#cb79-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
<p>This is a <em>transcluded markdown document</em>.</p>
</blockquote>
-<h4 data-number="2.2.1.3" id="option-debugextensionsfilename"><span
-class="header-section-number">2.2.1.3</span> Option
+<h4 data-number="2.2.1.5" id="option-debugextensionsfilename"><span
+class="header-section-number">2.2.1.5</span> Option
<code>debugExtensionsFileName</code></h4>
<dl>
<dt><code>debugExtensionsFileName</code> (default value:
@@ -1034,8 +1294,8 @@ syntax extensions (see option <strong><code>extensions</code></strong>)
have been applied.</p>
</dd>
</dl>
-<h4 data-number="2.2.1.4" id="option-frozencachefilename"><span
-class="header-section-number">2.2.1.4</span> Option
+<h4 data-number="2.2.1.6" id="option-frozencachefilename"><span
+class="header-section-number">2.2.1.6</span> Option
<code>frozenCacheFileName</code></h4>
<dl>
<dt><code>frozenCacheFileName</code> (default value:
@@ -1055,40 +1315,48 @@ further changes in the order and the content of markdown documents will
not be reflected.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-1">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-2">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb66"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb66-1"><a href="#cb66-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb66-2"><a href="#cb66-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb66-3"><a href="#cb66-3" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb66-4"><a href="#cb66-4" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({finalizeCache = true, frozenCacheFileName = &quot;cache.tex&quot;})</span>
-<span id="cb66-5"><a href="#cb66-5" aria-hidden="true" tabindex="-1"></a> local input = &quot;Hello *world*!&quot;</span>
-<span id="cb66-6"><a href="#cb66-6" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb66-7"><a href="#cb66-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb80"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb80-1"><a href="#cb80-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb80-2"><a href="#cb80-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb80-3"><a href="#cb80-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb80-4"><a href="#cb80-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb80-5"><a href="#cb80-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb80-6"><a href="#cb80-6" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb80-7"><a href="#cb80-7" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({finalizeCache = true, frozenCacheFileName = &quot;cache.tex&quot;})</span>
+<span id="cb80-8"><a href="#cb80-8" aria-hidden="true" tabindex="-1"></a> local input = &quot;Hello *world*!&quot;</span>
+<span id="cb80-9"><a href="#cb80-9" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb80-10"><a href="#cb80-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb80-11"><a href="#cb80-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb67"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb67-1"><a href="#cb67-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb81"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb81-1"><a href="#cb81-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache will also be
produced in the <code>cache.tex</code> output file as we requested using
the <code>finalizeCache</code> and <code>frozenCacheFileName</code>
options.</p>
-<h5 class="unnumbered" id="lua-cli-example-1">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-2">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb68"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb68-1"><a href="#cb68-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb68-2"><a href="#cb68-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span>
-<span id="cb68-3"><a href="#cb68-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb82"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb82-1"><a href="#cb82-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb82-2"><a href="#cb82-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb82-3"><a href="#cb82-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb82-4"><a href="#cb82-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb82-5"><a href="#cb82-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> hello</span>
+<span id="cb82-6"><a href="#cb82-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb82-7"><a href="#cb82-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>hello.md</code> with the following content:</p>
-<div class="sourceCode" id="cb69"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb69-1"><a href="#cb69-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
+<div class="sourceCode" id="cb83"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb83-1"><a href="#cb83-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb70"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb70-1"><a href="#cb70-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ finalizeCache=true frozenCacheFileName=cache.tex <span class="at">--</span> hello.md hello.tex</span>
-<span id="cb70-2"><a href="#cb70-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb84"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb84-1"><a href="#cb84-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ finalizeCache=true frozenCacheFileName=cache.tex <span class="at">--</span> hello.md hello.tex</span>
+<span id="cb84-2"><a href="#cb84-2" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -1107,17 +1375,17 @@ options.</p>
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb71"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb71-1"><a href="#cb71-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb71-2"><a href="#cb71-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span>
-<span id="cb71-3"><a href="#cb71-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span>
-<span id="cb71-4"><a href="#cb71-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb71-5"><a href="#cb71-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb71-6"><a href="#cb71-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb71-7"><a href="#cb71-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb85"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb85-1"><a href="#cb85-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb85-2"><a href="#cb85-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span>
+<span id="cb85-3"><a href="#cb85-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span>
+<span id="cb85-4"><a href="#cb85-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb85-5"><a href="#cb85-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb85-6"><a href="#cb85-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb85-7"><a href="#cb85-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb72"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb72-1"><a href="#cb72-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb86"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb86-1"><a href="#cb86-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache will also be
produced in the <code>cache.tex</code> output file as we requested using
@@ -1125,17 +1393,17 @@ the <code>finalizeCache</code> and <code>frozenCacheFileName</code>
options.</p>
<p>Next, create a new text document <code>frozen-document.tex</code>
with the following content:</p>
-<div class="sourceCode" id="cb73"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb73-1"><a href="#cb73-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb73-2"><a href="#cb73-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span>
-<span id="cb73-3"><a href="#cb73-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span>
-<span id="cb73-4"><a href="#cb73-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb73-5"><a href="#cb73-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
-<span id="cb73-6"><a href="#cb73-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb73-7"><a href="#cb73-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb87"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb87-1"><a href="#cb87-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb87-2"><a href="#cb87-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span>
+<span id="cb87-3"><a href="#cb87-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{cache.tex}</span>
+<span id="cb87-4"><a href="#cb87-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb87-5"><a href="#cb87-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
+<span id="cb87-6"><a href="#cb87-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb87-7"><a href="#cb87-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Last, invoke pdfTeX without shell access from the terminal:</p>
-<div class="sourceCode" id="cb74"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb74-1"><a href="#cb74-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb88"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb88-1"><a href="#cb88-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div>
<p>A PDF document named <code>frozen-document.pdf</code> should be
produced and contain the text “Hello <em>world</em>!” Since we used the
contents of the frozen cache using the
@@ -1147,17 +1415,17 @@ in the content of the markdown document from “Hello <em>world</em>!” to
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb75"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb75-1"><a href="#cb75-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span>
-<span id="cb75-2"><a href="#cb75-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span>
-<span id="cb75-3"><a href="#cb75-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb75-4"><a href="#cb75-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb75-5"><a href="#cb75-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb75-6"><a href="#cb75-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb75-7"><a href="#cb75-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb89"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb89-1"><a href="#cb89-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span>
+<span id="cb89-2"><a href="#cb89-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span>
+<span id="cb89-3"><a href="#cb89-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb89-4"><a href="#cb89-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb89-5"><a href="#cb89-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb89-6"><a href="#cb89-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb89-7"><a href="#cb89-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb76"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb76-1"><a href="#cb76-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb90"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb90-1"><a href="#cb90-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache will also be
produced in the <code>cache.tex</code> output file as we requested using
@@ -1165,17 +1433,17 @@ the <code>finalizecache</code> and <code>frozenCacheFileName</code>
options.</p>
<p>Next, create a new text document <code>frozen-document.tex</code>
with the following content:</p>
-<div class="sourceCode" id="cb77"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb77-1"><a href="#cb77-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span>
-<span id="cb77-2"><a href="#cb77-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span>
-<span id="cb77-3"><a href="#cb77-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb77-4"><a href="#cb77-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb77-5"><a href="#cb77-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
-<span id="cb77-6"><a href="#cb77-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb77-7"><a href="#cb77-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb91"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb91-1"><a href="#cb91-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span>
+<span id="cb91-2"><a href="#cb91-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[frozenCacheFileName=cache.tex]{<span class="ex">markdown</span>}</span>
+<span id="cb91-3"><a href="#cb91-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb91-4"><a href="#cb91-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb91-5"><a href="#cb91-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
+<span id="cb91-6"><a href="#cb91-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb91-7"><a href="#cb91-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Last, invoke pdfTeX without shell access from the terminal:</p>
-<div class="sourceCode" id="cb78"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb78-1"><a href="#cb78-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb92"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb92-1"><a href="#cb92-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> frozen-document.tex</span></code></pre></div>
<p>A PDF document named <code>frozen-document.pdf</code> should be
produced and contain the text “Hello <em>world</em>!” Since we used the
contents of the frozen cache using the <code>frozencache</code> option,
@@ -1187,21 +1455,21 @@ reflected.</p>
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb79"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb79-1"><a href="#cb79-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb79-2"><a href="#cb79-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb79-3"><a href="#cb79-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb79-4"><a href="#cb79-4" aria-hidden="true" tabindex="-1"></a> finalizeCache = yes,</span>
-<span id="cb79-5"><a href="#cb79-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span>
-<span id="cb79-6"><a href="#cb79-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb79-7"><a href="#cb79-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb79-8"><a href="#cb79-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb79-9"><a href="#cb79-9" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb79-10"><a href="#cb79-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb79-11"><a href="#cb79-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb93"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb93-1"><a href="#cb93-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb93-2"><a href="#cb93-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb93-3"><a href="#cb93-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb93-4"><a href="#cb93-4" aria-hidden="true" tabindex="-1"></a> finalizeCache = yes,</span>
+<span id="cb93-5"><a href="#cb93-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span>
+<span id="cb93-6"><a href="#cb93-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb93-7"><a href="#cb93-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb93-8"><a href="#cb93-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb93-9"><a href="#cb93-9" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb93-10"><a href="#cb93-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb93-11"><a href="#cb93-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb80"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb80-1"><a href="#cb80-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb94"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb94-1"><a href="#cb94-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache will also be
produced in the <code>cache.tex</code> output file as we requested using
@@ -1209,21 +1477,21 @@ the <code>finalizeCache</code> and <code>frozenCacheFileName</code>
options.</p>
<p>Next, create a new text document <code>frozen-document.tex</code>
with the following content:</p>
-<div class="sourceCode" id="cb81"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb81-1"><a href="#cb81-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb81-2"><a href="#cb81-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb81-3"><a href="#cb81-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb81-4"><a href="#cb81-4" aria-hidden="true" tabindex="-1"></a> frozenCache = yes,</span>
-<span id="cb81-5"><a href="#cb81-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span>
-<span id="cb81-6"><a href="#cb81-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb81-7"><a href="#cb81-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb81-8"><a href="#cb81-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb81-9"><a href="#cb81-9" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
-<span id="cb81-10"><a href="#cb81-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb81-11"><a href="#cb81-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
-<p>Last, invoke pdfTeX without shell access from the terminal:</p>
-<div class="sourceCode" id="cb82"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb82-1"><a href="#cb82-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> frozen-document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb95"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb95-1"><a href="#cb95-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb95-2"><a href="#cb95-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb95-3"><a href="#cb95-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb95-4"><a href="#cb95-4" aria-hidden="true" tabindex="-1"></a> frozenCache = yes,</span>
+<span id="cb95-5"><a href="#cb95-5" aria-hidden="true" tabindex="-1"></a> frozenCacheFileName = cache.tex,</span>
+<span id="cb95-6"><a href="#cb95-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb95-7"><a href="#cb95-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb95-8"><a href="#cb95-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb95-9"><a href="#cb95-9" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
+<span id="cb95-10"><a href="#cb95-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb95-11"><a href="#cb95-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<p>Last, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb96"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb96-1"><a href="#cb96-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> frozen-document.tex</span></code></pre></div>
<p>A PDF document named <code>frozen-document.pdf</code> should be
produced and contain the text “Hello <em>world</em>!” Since we used the
contents of the frozen cache using the
@@ -1231,8 +1499,35 @@ contents of the frozen cache using the
the document without accessing the shell or invoking Lua, but the change
in the content of the markdown document from “Hello <em>world</em>!” to
“Hi <em>world</em>!” was not reflected.</p>
-<h4 data-number="2.2.1.5" id="option-blankbeforeblockquote"><span
-class="header-section-number">2.2.1.5</span> Option
+<h4 data-number="2.2.1.7" id="option-autoidentifiers"><span
+class="header-section-number">2.2.1.7</span> Option
+<code>autoIdentifiers</code></h4>
+<dl>
+<dt><code>autoIdentifiers</code> (default value:
+<code>false</code>)</dt>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>Enable the Pandoc <a
+href="https://pandoc.org/MANUAL.html#extension-auto_identifiers">auto
+identifiers syntax extension</a>:</p>
+<div class="sourceCode" id="cb97"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb97-1"><a href="#cb97-1" aria-hidden="true" tabindex="-1"></a>The following heading received the identifier <span class="in">`sesame-street`</span>:</span>
+<span id="cb97-2"><a href="#cb97-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb97-3"><a href="#cb97-3" aria-hidden="true" tabindex="-1"></a><span class="fu"># 123 Sesame Street</span></span></code></pre></div>
+</dd>
+<dt>false</dt>
+<dd>
+<p>Disable the Pandoc auto identifiers syntax extension.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<p>See also the option
+<strong><code>gfmAutoIdentifiers</code></strong>.</p>
+<h4 data-number="2.2.1.8" id="option-blankbeforeblockquote"><span
+class="header-section-number">2.2.1.8</span> Option
<code>blankBeforeBlockquote</code></h4>
<dl>
<dt><code>blankBeforeBlockquote</code> (default value:
@@ -1252,30 +1547,34 @@ blockquote.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-2">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-3">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb83"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb83-1"><a href="#cb83-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb83-2"><a href="#cb83-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb83-3"><a href="#cb83-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb83-4"><a href="#cb83-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb83-5"><a href="#cb83-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb83-6"><a href="#cb83-6" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
-<span id="cb83-7"><a href="#cb83-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb83-8"><a href="#cb83-8" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span>
-<span id="cb83-9"><a href="#cb83-9" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
-<span id="cb83-10"><a href="#cb83-10" aria-hidden="true" tabindex="-1"></a> &quot;&gt; A quote.&quot; .. newline</span>
-<span id="cb83-11"><a href="#cb83-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
-<span id="cb83-12"><a href="#cb83-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb83-13"><a href="#cb83-13" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeBlockquote = true})</span>
-<span id="cb83-14"><a href="#cb83-14" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
-<span id="cb83-15"><a href="#cb83-15" aria-hidden="true" tabindex="-1"></a> &quot;&gt; Not a quote.&quot; .. newline</span>
-<span id="cb83-16"><a href="#cb83-16" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb83-17"><a href="#cb83-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb98"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb98-1"><a href="#cb98-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb98-2"><a href="#cb98-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb98-3"><a href="#cb98-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb98-4"><a href="#cb98-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb98-5"><a href="#cb98-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb98-6"><a href="#cb98-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb98-7"><a href="#cb98-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb98-8"><a href="#cb98-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb98-9"><a href="#cb98-9" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
+<span id="cb98-10"><a href="#cb98-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb98-11"><a href="#cb98-11" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span>
+<span id="cb98-12"><a href="#cb98-12" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb98-13"><a href="#cb98-13" aria-hidden="true" tabindex="-1"></a> &quot;&gt; A quote.&quot; .. newline</span>
+<span id="cb98-14"><a href="#cb98-14" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
+<span id="cb98-15"><a href="#cb98-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb98-16"><a href="#cb98-16" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeBlockquote = true})</span>
+<span id="cb98-17"><a href="#cb98-17" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb98-18"><a href="#cb98-18" aria-hidden="true" tabindex="-1"></a> &quot;&gt; Not a quote.&quot; .. newline</span>
+<span id="cb98-19"><a href="#cb98-19" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb98-20"><a href="#cb98-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb98-21"><a href="#cb98-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb84"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb84-1"><a href="#cb84-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb99"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb99-1"><a href="#cb99-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1285,25 +1584,29 @@ contain the following text:</p>
</blockquote>
<p>A paragraph &gt; Not a quote.</p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-2">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-3">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb85"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb85-1"><a href="#cb85-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb85-2"><a href="#cb85-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb85-3"><a href="#cb85-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb85-4"><a href="#cb85-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb85-5"><a href="#cb85-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb100"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb100-1"><a href="#cb100-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb100-2"><a href="#cb100-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb100-3"><a href="#cb100-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb100-4"><a href="#cb100-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb100-5"><a href="#cb100-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb100-6"><a href="#cb100-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb100-7"><a href="#cb100-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb100-8"><a href="#cb100-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb100-9"><a href="#cb100-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb86"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb86-1"><a href="#cb86-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb86-2"><a href="#cb86-2" aria-hidden="true" tabindex="-1"></a><span class="at">&gt; A quote?</span></span></code></pre></div>
+<div class="sourceCode" id="cb101"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb101-1"><a href="#cb101-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb101-2"><a href="#cb101-2" aria-hidden="true" tabindex="-1"></a><span class="at">&gt; A quote?</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb87"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb87-1"><a href="#cb87-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb87-2"><a href="#cb87-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeBlockquote=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb87-3"><a href="#cb87-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb102"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb102-1"><a href="#cb102-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb102-2"><a href="#cb102-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeBlockquote=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb102-3"><a href="#cb102-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -1326,24 +1629,24 @@ contain the following text:</p>
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb88"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb88-1"><a href="#cb88-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb88-2"><a href="#cb88-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb88-3"><a href="#cb88-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb88-4"><a href="#cb88-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb88-5"><a href="#cb88-5" aria-hidden="true" tabindex="-1"></a>&gt; A quote.</span>
-<span id="cb88-6"><a href="#cb88-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb88-7"><a href="#cb88-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb88-8"><a href="#cb88-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeBlockquote</span>{true}</span>
-<span id="cb88-9"><a href="#cb88-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb88-10"><a href="#cb88-10" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb88-11"><a href="#cb88-11" aria-hidden="true" tabindex="-1"></a>&gt; Not a quote.</span>
-<span id="cb88-12"><a href="#cb88-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb88-13"><a href="#cb88-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb88-14"><a href="#cb88-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb103"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb103-1"><a href="#cb103-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb103-2"><a href="#cb103-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb103-3"><a href="#cb103-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb103-4"><a href="#cb103-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb103-5"><a href="#cb103-5" aria-hidden="true" tabindex="-1"></a>&gt; A quote.</span>
+<span id="cb103-6"><a href="#cb103-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb103-7"><a href="#cb103-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb103-8"><a href="#cb103-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeBlockquote</span>{true}</span>
+<span id="cb103-9"><a href="#cb103-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb103-10"><a href="#cb103-10" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb103-11"><a href="#cb103-11" aria-hidden="true" tabindex="-1"></a>&gt; Not a quote.</span>
+<span id="cb103-12"><a href="#cb103-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb103-13"><a href="#cb103-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb103-14"><a href="#cb103-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb89"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb89-1"><a href="#cb89-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb104"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb104-1"><a href="#cb104-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1357,25 +1660,25 @@ contain the following text:</p>
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb90"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb90-1"><a href="#cb90-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb90-2"><a href="#cb90-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb90-3"><a href="#cb90-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb90-4"><a href="#cb90-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb90-5"><a href="#cb90-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb90-6"><a href="#cb90-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb90-7"><a href="#cb90-7" aria-hidden="true" tabindex="-1"></a>&gt; A quote.</span>
-<span id="cb90-8"><a href="#cb90-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb90-9"><a href="#cb90-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb90-10"><a href="#cb90-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeBlockquote}</span>
-<span id="cb90-11"><a href="#cb90-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb90-12"><a href="#cb90-12" aria-hidden="true" tabindex="-1"></a>&gt; Not a quote.</span>
-<span id="cb90-13"><a href="#cb90-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb90-14"><a href="#cb90-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb90-15"><a href="#cb90-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb91"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb91-1"><a href="#cb91-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb105"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb105-1"><a href="#cb105-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb105-2"><a href="#cb105-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb105-3"><a href="#cb105-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb105-4"><a href="#cb105-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb105-5"><a href="#cb105-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb105-6"><a href="#cb105-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb105-7"><a href="#cb105-7" aria-hidden="true" tabindex="-1"></a>&gt; A quote.</span>
+<span id="cb105-8"><a href="#cb105-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb105-9"><a href="#cb105-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb105-10"><a href="#cb105-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeBlockquote]</span>
+<span id="cb105-11"><a href="#cb105-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb105-12"><a href="#cb105-12" aria-hidden="true" tabindex="-1"></a>&gt; Not a quote.</span>
+<span id="cb105-13"><a href="#cb105-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb105-14"><a href="#cb105-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb105-15"><a href="#cb105-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb106"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb106-1"><a href="#cb106-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1389,25 +1692,25 @@ contain the following text:</p>
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb92"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb92-1"><a href="#cb92-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb92-2"><a href="#cb92-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb92-3"><a href="#cb92-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb92-4"><a href="#cb92-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb92-5"><a href="#cb92-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb92-6"><a href="#cb92-6" aria-hidden="true" tabindex="-1"></a>&gt; A quote.</span>
-<span id="cb92-7"><a href="#cb92-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb92-8"><a href="#cb92-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb92-9"><a href="#cb92-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeBlockquote = yes]</span>
-<span id="cb92-10"><a href="#cb92-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb92-11"><a href="#cb92-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb92-12"><a href="#cb92-12" aria-hidden="true" tabindex="-1"></a>&gt; Not a quote.</span>
-<span id="cb92-13"><a href="#cb92-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb92-14"><a href="#cb92-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb92-15"><a href="#cb92-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb107"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb107-1"><a href="#cb107-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb107-2"><a href="#cb107-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb107-3"><a href="#cb107-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb107-4"><a href="#cb107-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb107-5"><a href="#cb107-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb107-6"><a href="#cb107-6" aria-hidden="true" tabindex="-1"></a>&gt; A quote.</span>
+<span id="cb107-7"><a href="#cb107-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb107-8"><a href="#cb107-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb107-9"><a href="#cb107-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeBlockquote = yes]</span>
+<span id="cb107-10"><a href="#cb107-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb107-11"><a href="#cb107-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb107-12"><a href="#cb107-12" aria-hidden="true" tabindex="-1"></a>&gt; Not a quote.</span>
+<span id="cb107-13"><a href="#cb107-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb107-14"><a href="#cb107-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb107-15"><a href="#cb107-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb93"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb93-1"><a href="#cb93-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb108"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb108-1"><a href="#cb108-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1417,8 +1720,8 @@ contain the following text:</p>
</blockquote>
<p>A paragraph &gt; Not a quote.</p>
</blockquote>
-<h4 data-number="2.2.1.6" id="option-blankbeforecodefence"><span
-class="header-section-number">2.2.1.6</span> Option
+<h4 data-number="2.2.1.9" id="option-blankbeforecodefence"><span
+class="header-section-number">2.2.1.9</span> Option
<code>blankBeforeCodeFence</code></h4>
<dl>
<dt><code>blankBeforeCodeFence</code> (default value:
@@ -1438,35 +1741,39 @@ fenced code block.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-3">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-4">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb94"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb94-1"><a href="#cb94-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb94-2"><a href="#cb94-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb94-3"><a href="#cb94-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb94-4"><a href="#cb94-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb94-5"><a href="#cb94-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb94-6"><a href="#cb94-6" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
-<span id="cb94-7"><a href="#cb94-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb94-8"><a href="#cb94-8" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({fencedCode = true})</span>
-<span id="cb94-9"><a href="#cb94-9" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
-<span id="cb94-10"><a href="#cb94-10" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline ..</span>
-<span id="cb94-11"><a href="#cb94-11" aria-hidden="true" tabindex="-1"></a> &quot;A fenced code.&quot; .. newline ..</span>
-<span id="cb94-12"><a href="#cb94-12" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline</span>
-<span id="cb94-13"><a href="#cb94-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
-<span id="cb94-14"><a href="#cb94-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb94-15"><a href="#cb94-15" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({</span>
-<span id="cb94-16"><a href="#cb94-16" aria-hidden="true" tabindex="-1"></a> fencedCode = true, blankBeforeCodeFence = true})</span>
-<span id="cb94-17"><a href="#cb94-17" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
-<span id="cb94-18"><a href="#cb94-18" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline ..</span>
-<span id="cb94-19"><a href="#cb94-19" aria-hidden="true" tabindex="-1"></a> &quot;Not a fenced code.&quot; .. newline ..</span>
-<span id="cb94-20"><a href="#cb94-20" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline</span>
-<span id="cb94-21"><a href="#cb94-21" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb94-22"><a href="#cb94-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb109"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb109-1"><a href="#cb109-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb109-2"><a href="#cb109-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb109-3"><a href="#cb109-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb109-4"><a href="#cb109-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb109-5"><a href="#cb109-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb109-6"><a href="#cb109-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb109-7"><a href="#cb109-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb109-8"><a href="#cb109-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb109-9"><a href="#cb109-9" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
+<span id="cb109-10"><a href="#cb109-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb109-11"><a href="#cb109-11" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({fencedCode = true})</span>
+<span id="cb109-12"><a href="#cb109-12" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb109-13"><a href="#cb109-13" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline ..</span>
+<span id="cb109-14"><a href="#cb109-14" aria-hidden="true" tabindex="-1"></a> &quot;A fenced code.&quot; .. newline ..</span>
+<span id="cb109-15"><a href="#cb109-15" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline</span>
+<span id="cb109-16"><a href="#cb109-16" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
+<span id="cb109-17"><a href="#cb109-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb109-18"><a href="#cb109-18" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({</span>
+<span id="cb109-19"><a href="#cb109-19" aria-hidden="true" tabindex="-1"></a> fencedCode = true, blankBeforeCodeFence = true})</span>
+<span id="cb109-20"><a href="#cb109-20" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb109-21"><a href="#cb109-21" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline ..</span>
+<span id="cb109-22"><a href="#cb109-22" aria-hidden="true" tabindex="-1"></a> &quot;Not a fenced code.&quot; .. newline ..</span>
+<span id="cb109-23"><a href="#cb109-23" aria-hidden="true" tabindex="-1"></a> &quot;```&quot; .. newline</span>
+<span id="cb109-24"><a href="#cb109-24" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb109-25"><a href="#cb109-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb109-26"><a href="#cb109-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb95"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb95-1"><a href="#cb95-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb110"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb110-1"><a href="#cb110-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1474,27 +1781,31 @@ contain the following text:</p>
<pre><code>A fenced code.</code></pre>
<p>A paragraph. <code>Not a fenced code.</code></p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-3">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-4">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb97"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb97-1"><a href="#cb97-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb97-2"><a href="#cb97-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb97-3"><a href="#cb97-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb97-4"><a href="#cb97-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb97-5"><a href="#cb97-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb112"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb112-1"><a href="#cb112-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb112-2"><a href="#cb112-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb112-3"><a href="#cb112-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb112-4"><a href="#cb112-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb112-5"><a href="#cb112-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb112-6"><a href="#cb112-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb112-7"><a href="#cb112-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb112-8"><a href="#cb112-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb112-9"><a href="#cb112-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb98"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb98-1"><a href="#cb98-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb98-2"><a href="#cb98-2" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span>
-<span id="cb98-3"><a href="#cb98-3" aria-hidden="true" tabindex="-1"></a><span class="in">A code fence?</span></span>
-<span id="cb98-4"><a href="#cb98-4" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div>
+<div class="sourceCode" id="cb113"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb113-1"><a href="#cb113-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb113-2"><a href="#cb113-2" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span>
+<span id="cb113-3"><a href="#cb113-3" aria-hidden="true" tabindex="-1"></a><span class="in">A code fence?</span></span>
+<span id="cb113-4"><a href="#cb113-4" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb99"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb99-1"><a href="#cb99-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb99-2"><a href="#cb99-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true blankBeforeCodeFence=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb99-3"><a href="#cb99-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb114"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb114-1"><a href="#cb114-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb114-2"><a href="#cb114-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ fencedCode=true blankBeforeCodeFence=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb114-3"><a href="#cb114-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -1515,29 +1826,29 @@ contain the following text:</p>
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb101"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb101-1"><a href="#cb101-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb101-2"><a href="#cb101-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFencedCode</span>{true}</span>
-<span id="cb101-3"><a href="#cb101-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb101-4"><a href="#cb101-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb101-5"><a href="#cb101-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb101-6"><a href="#cb101-6" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb101-7"><a href="#cb101-7" aria-hidden="true" tabindex="-1"></a>A fenced code.</span>
-<span id="cb101-8"><a href="#cb101-8" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb101-9"><a href="#cb101-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb101-10"><a href="#cb101-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb101-11"><a href="#cb101-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeCodeFence</span>{true}</span>
-<span id="cb101-12"><a href="#cb101-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb101-13"><a href="#cb101-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb101-14"><a href="#cb101-14" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb101-15"><a href="#cb101-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span>
-<span id="cb101-16"><a href="#cb101-16" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb101-17"><a href="#cb101-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb101-18"><a href="#cb101-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb101-19"><a href="#cb101-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb116"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb116-1"><a href="#cb116-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb116-2"><a href="#cb116-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFencedCode</span>{true}</span>
+<span id="cb116-3"><a href="#cb116-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb116-4"><a href="#cb116-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb116-5"><a href="#cb116-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb116-6"><a href="#cb116-6" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb116-7"><a href="#cb116-7" aria-hidden="true" tabindex="-1"></a>A fenced code.</span>
+<span id="cb116-8"><a href="#cb116-8" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb116-9"><a href="#cb116-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb116-10"><a href="#cb116-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb116-11"><a href="#cb116-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeCodeFence</span>{true}</span>
+<span id="cb116-12"><a href="#cb116-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb116-13"><a href="#cb116-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb116-14"><a href="#cb116-14" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb116-15"><a href="#cb116-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span>
+<span id="cb116-16"><a href="#cb116-16" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb116-17"><a href="#cb116-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb116-18"><a href="#cb116-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb116-19"><a href="#cb116-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb102"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb102-1"><a href="#cb102-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb117"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb117-1"><a href="#cb117-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1549,29 +1860,29 @@ contain the following text:</p>
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb104"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb104-1"><a href="#cb104-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb104-2"><a href="#cb104-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb104-3"><a href="#cb104-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb104-4"><a href="#cb104-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb104-5"><a href="#cb104-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb104-6"><a href="#cb104-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb104-7"><a href="#cb104-7" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb104-8"><a href="#cb104-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span>
-<span id="cb104-9"><a href="#cb104-9" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb104-10"><a href="#cb104-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb104-11"><a href="#cb104-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb104-12"><a href="#cb104-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeCodeFence}</span>
-<span id="cb104-13"><a href="#cb104-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb104-14"><a href="#cb104-14" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb104-15"><a href="#cb104-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span>
-<span id="cb104-16"><a href="#cb104-16" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb104-17"><a href="#cb104-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb104-18"><a href="#cb104-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb104-19"><a href="#cb104-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb119"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb119-1"><a href="#cb119-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb119-2"><a href="#cb119-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span>
+<span id="cb119-3"><a href="#cb119-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb119-4"><a href="#cb119-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb119-5"><a href="#cb119-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb119-6"><a href="#cb119-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb119-7"><a href="#cb119-7" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb119-8"><a href="#cb119-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span>
+<span id="cb119-9"><a href="#cb119-9" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb119-10"><a href="#cb119-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb119-11"><a href="#cb119-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb119-12"><a href="#cb119-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeCodeFence]</span>
+<span id="cb119-13"><a href="#cb119-13" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb119-14"><a href="#cb119-14" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb119-15"><a href="#cb119-15" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span>
+<span id="cb119-16"><a href="#cb119-16" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb119-17"><a href="#cb119-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb119-18"><a href="#cb119-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb119-19"><a href="#cb119-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb105"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb105-1"><a href="#cb105-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb120"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb120-1"><a href="#cb120-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1583,30 +1894,30 @@ contain the following text:</p>
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb107"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb107-1"><a href="#cb107-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb107-2"><a href="#cb107-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fencedCode = yes]</span>
-<span id="cb107-3"><a href="#cb107-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb107-4"><a href="#cb107-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb107-5"><a href="#cb107-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb107-6"><a href="#cb107-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb107-7"><a href="#cb107-7" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb107-8"><a href="#cb107-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span>
-<span id="cb107-9"><a href="#cb107-9" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb107-10"><a href="#cb107-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb107-11"><a href="#cb107-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb107-12"><a href="#cb107-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeCodeFence = yes]</span>
-<span id="cb107-13"><a href="#cb107-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb107-14"><a href="#cb107-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb107-15"><a href="#cb107-15" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb107-16"><a href="#cb107-16" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span>
-<span id="cb107-17"><a href="#cb107-17" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb107-18"><a href="#cb107-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb107-19"><a href="#cb107-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb107-20"><a href="#cb107-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb122"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb122-1"><a href="#cb122-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb122-2"><a href="#cb122-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fencedCode = yes]</span>
+<span id="cb122-3"><a href="#cb122-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb122-4"><a href="#cb122-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb122-5"><a href="#cb122-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb122-6"><a href="#cb122-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb122-7"><a href="#cb122-7" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb122-8"><a href="#cb122-8" aria-hidden="true" tabindex="-1"></a>A fenced code.</span>
+<span id="cb122-9"><a href="#cb122-9" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb122-10"><a href="#cb122-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb122-11"><a href="#cb122-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb122-12"><a href="#cb122-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeCodeFence = yes]</span>
+<span id="cb122-13"><a href="#cb122-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb122-14"><a href="#cb122-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb122-15"><a href="#cb122-15" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb122-16"><a href="#cb122-16" aria-hidden="true" tabindex="-1"></a>Not a fenced code.</span>
+<span id="cb122-17"><a href="#cb122-17" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb122-18"><a href="#cb122-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb122-19"><a href="#cb122-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb122-20"><a href="#cb122-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb108"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb108-1"><a href="#cb108-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb123"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb123-1"><a href="#cb123-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1614,8 +1925,8 @@ contain the following text:</p>
<pre><code>A fenced code.</code></pre>
<p>A paragraph. <code>Not a fenced code.</code></p>
</blockquote>
-<h4 data-number="2.2.1.7" id="option-blankbeforedivfence"><span
-class="header-section-number">2.2.1.7</span> Option
+<h4 data-number="2.2.1.10" id="option-blankbeforedivfence"><span
+class="header-section-number">2.2.1.10</span> Option
<code>blankBeforeDivFence</code></h4>
<dl>
<dt><code>blankBeforeDivFence</code> (default value:
@@ -1638,31 +1949,31 @@ div.</p>
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb110"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb110-1"><a href="#cb110-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb110-2"><a href="#cb110-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
-<span id="cb110-3"><a href="#cb110-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb110-4"><a href="#cb110-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb110-5"><a href="#cb110-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb110-6"><a href="#cb110-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb110-7"><a href="#cb110-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb110-8"><a href="#cb110-8" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span>
-<span id="cb110-9"><a href="#cb110-9" aria-hidden="true" tabindex="-1"></a>A fenced div.</span>
-<span id="cb110-10"><a href="#cb110-10" aria-hidden="true" tabindex="-1"></a>:::</span>
-<span id="cb110-11"><a href="#cb110-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb110-12"><a href="#cb110-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb110-13"><a href="#cb110-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeDivFence}</span>
-<span id="cb110-14"><a href="#cb110-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb110-15"><a href="#cb110-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb110-16"><a href="#cb110-16" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span>
-<span id="cb110-17"><a href="#cb110-17" aria-hidden="true" tabindex="-1"></a>Not a fenced div.</span>
-<span id="cb110-18"><a href="#cb110-18" aria-hidden="true" tabindex="-1"></a>:::</span>
-<span id="cb110-19"><a href="#cb110-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb110-20"><a href="#cb110-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb110-21"><a href="#cb110-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb111"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb111-1"><a href="#cb111-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb125"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb125-1"><a href="#cb125-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb125-2"><a href="#cb125-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
+<span id="cb125-3"><a href="#cb125-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb125-4"><a href="#cb125-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb125-5"><a href="#cb125-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb125-6"><a href="#cb125-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb125-7"><a href="#cb125-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb125-8"><a href="#cb125-8" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span>
+<span id="cb125-9"><a href="#cb125-9" aria-hidden="true" tabindex="-1"></a>A fenced div.</span>
+<span id="cb125-10"><a href="#cb125-10" aria-hidden="true" tabindex="-1"></a>:::</span>
+<span id="cb125-11"><a href="#cb125-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb125-12"><a href="#cb125-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb125-13"><a href="#cb125-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeDivFence]</span>
+<span id="cb125-14"><a href="#cb125-14" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb125-15"><a href="#cb125-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb125-16"><a href="#cb125-16" aria-hidden="true" tabindex="-1"></a>::: {.identifier}</span>
+<span id="cb125-17"><a href="#cb125-17" aria-hidden="true" tabindex="-1"></a>Not a fenced div.</span>
+<span id="cb125-18"><a href="#cb125-18" aria-hidden="true" tabindex="-1"></a>:::</span>
+<span id="cb125-19"><a href="#cb125-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb125-20"><a href="#cb125-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb125-21"><a href="#cb125-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb126"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb126-1"><a href="#cb126-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1671,8 +1982,8 @@ contain the following text:</p>
<p>A paragraph.</p>
<p>::: {.identifier} Not a fenced div. :::</p>
</blockquote>
-<h4 data-number="2.2.1.8" id="option-blankbeforeheading"><span
-class="header-section-number">2.2.1.8</span> Option
+<h4 data-number="2.2.1.11" id="option-blankbeforeheading"><span
+class="header-section-number">2.2.1.11</span> Option
<code>blankBeforeHeading</code></h4>
<dl>
<dt><code>blankBeforeHeading</code> (default value:
@@ -1692,33 +2003,37 @@ header.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-4">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-5">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb112"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb112-1"><a href="#cb112-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb112-2"><a href="#cb112-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb112-3"><a href="#cb112-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span>
-<span id="cb112-4"><a href="#cb112-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb112-5"><a href="#cb112-5" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb112-6"><a href="#cb112-6" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb112-7"><a href="#cb112-7" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
-<span id="cb112-8"><a href="#cb112-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb112-9"><a href="#cb112-9" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span>
-<span id="cb112-10"><a href="#cb112-10" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
-<span id="cb112-11"><a href="#cb112-11" aria-hidden="true" tabindex="-1"></a> &quot;A heading.&quot; .. newline ..</span>
-<span id="cb112-12"><a href="#cb112-12" aria-hidden="true" tabindex="-1"></a> &quot;==========&quot; .. newline</span>
-<span id="cb112-13"><a href="#cb112-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
-<span id="cb112-14"><a href="#cb112-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb112-15"><a href="#cb112-15" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeHeading = true})</span>
-<span id="cb112-16"><a href="#cb112-16" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
-<span id="cb112-17"><a href="#cb112-17" aria-hidden="true" tabindex="-1"></a> &quot;Not a heading.&quot; .. newline ..</span>
-<span id="cb112-18"><a href="#cb112-18" aria-hidden="true" tabindex="-1"></a> &quot;==============&quot; .. newline</span>
-<span id="cb112-19"><a href="#cb112-19" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb112-20"><a href="#cb112-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb127"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb127-1"><a href="#cb127-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb127-2"><a href="#cb127-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb127-3"><a href="#cb127-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span>
+<span id="cb127-4"><a href="#cb127-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb127-5"><a href="#cb127-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb127-6"><a href="#cb127-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb127-7"><a href="#cb127-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb127-8"><a href="#cb127-8" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb127-9"><a href="#cb127-9" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb127-10"><a href="#cb127-10" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
+<span id="cb127-11"><a href="#cb127-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb127-12"><a href="#cb127-12" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span>
+<span id="cb127-13"><a href="#cb127-13" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb127-14"><a href="#cb127-14" aria-hidden="true" tabindex="-1"></a> &quot;A heading.&quot; .. newline ..</span>
+<span id="cb127-15"><a href="#cb127-15" aria-hidden="true" tabindex="-1"></a> &quot;==========&quot; .. newline</span>
+<span id="cb127-16"><a href="#cb127-16" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
+<span id="cb127-17"><a href="#cb127-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb127-18"><a href="#cb127-18" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({blankBeforeHeading = true})</span>
+<span id="cb127-19"><a href="#cb127-19" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb127-20"><a href="#cb127-20" aria-hidden="true" tabindex="-1"></a> &quot;Not a heading.&quot; .. newline ..</span>
+<span id="cb127-21"><a href="#cb127-21" aria-hidden="true" tabindex="-1"></a> &quot;==============&quot; .. newline</span>
+<span id="cb127-22"><a href="#cb127-22" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb127-23"><a href="#cb127-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb127-24"><a href="#cb127-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb113"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb113-1"><a href="#cb113-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb128"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb128-1"><a href="#cb128-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1726,26 +2041,30 @@ contain the following text:</p>
<h1 id="a-heading.">A heading.</h1>
<p>A paragraph. Not a heading. ==============</p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-4">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-5">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb114"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb114-1"><a href="#cb114-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb114-2"><a href="#cb114-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb114-3"><a href="#cb114-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb114-4"><a href="#cb114-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb114-5"><a href="#cb114-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb129"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb129-1"><a href="#cb129-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb129-2"><a href="#cb129-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb129-3"><a href="#cb129-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb129-4"><a href="#cb129-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb129-5"><a href="#cb129-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb129-6"><a href="#cb129-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb129-7"><a href="#cb129-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb129-8"><a href="#cb129-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb129-9"><a href="#cb129-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb115"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb115-1"><a href="#cb115-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb115-2"><a href="#cb115-2" aria-hidden="true" tabindex="-1"></a>A heading?</span>
-<span id="cb115-3"><a href="#cb115-3" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span></code></pre></div>
+<div class="sourceCode" id="cb130"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb130-1"><a href="#cb130-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb130-2"><a href="#cb130-2" aria-hidden="true" tabindex="-1"></a>A heading?</span>
+<span id="cb130-3"><a href="#cb130-3" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb116"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb116-1"><a href="#cb116-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb116-2"><a href="#cb116-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeHeading=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb116-3"><a href="#cb116-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb131"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb131-1"><a href="#cb131-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb131-2"><a href="#cb131-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeHeading=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb131-3"><a href="#cb131-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -1766,26 +2085,26 @@ contain the following text:</p>
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb117"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb117-1"><a href="#cb117-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb117-2"><a href="#cb117-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb117-3"><a href="#cb117-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb117-4"><a href="#cb117-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb117-5"><a href="#cb117-5" aria-hidden="true" tabindex="-1"></a>A heading.</span>
-<span id="cb117-6"><a href="#cb117-6" aria-hidden="true" tabindex="-1"></a>==========</span>
-<span id="cb117-7"><a href="#cb117-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb117-8"><a href="#cb117-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb117-9"><a href="#cb117-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeHeading</span>{true}</span>
-<span id="cb117-10"><a href="#cb117-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb117-11"><a href="#cb117-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb117-12"><a href="#cb117-12" aria-hidden="true" tabindex="-1"></a>Not a heading.</span>
-<span id="cb117-13"><a href="#cb117-13" aria-hidden="true" tabindex="-1"></a>==============</span>
-<span id="cb117-14"><a href="#cb117-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb117-15"><a href="#cb117-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb117-16"><a href="#cb117-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb118"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb118-1"><a href="#cb118-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb132"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb132-1"><a href="#cb132-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb132-2"><a href="#cb132-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb132-3"><a href="#cb132-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb132-4"><a href="#cb132-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb132-5"><a href="#cb132-5" aria-hidden="true" tabindex="-1"></a>A heading.</span>
+<span id="cb132-6"><a href="#cb132-6" aria-hidden="true" tabindex="-1"></a>==========</span>
+<span id="cb132-7"><a href="#cb132-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb132-8"><a href="#cb132-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb132-9"><a href="#cb132-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeHeading</span>{true}</span>
+<span id="cb132-10"><a href="#cb132-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb132-11"><a href="#cb132-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb132-12"><a href="#cb132-12" aria-hidden="true" tabindex="-1"></a>Not a heading.</span>
+<span id="cb132-13"><a href="#cb132-13" aria-hidden="true" tabindex="-1"></a>==============</span>
+<span id="cb132-14"><a href="#cb132-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb132-15"><a href="#cb132-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb132-16"><a href="#cb132-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb133"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb133-1"><a href="#cb133-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1797,27 +2116,27 @@ contain the following text:</p>
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb119"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb119-1"><a href="#cb119-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb119-2"><a href="#cb119-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb119-3"><a href="#cb119-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb119-4"><a href="#cb119-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb119-5"><a href="#cb119-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb119-6"><a href="#cb119-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb119-7"><a href="#cb119-7" aria-hidden="true" tabindex="-1"></a>A heading.</span>
-<span id="cb119-8"><a href="#cb119-8" aria-hidden="true" tabindex="-1"></a>==========</span>
-<span id="cb119-9"><a href="#cb119-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb119-10"><a href="#cb119-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb119-11"><a href="#cb119-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{blankBeforeHeading}</span>
-<span id="cb119-12"><a href="#cb119-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb119-13"><a href="#cb119-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span>
-<span id="cb119-14"><a href="#cb119-14" aria-hidden="true" tabindex="-1"></a>==============</span>
-<span id="cb119-15"><a href="#cb119-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb119-16"><a href="#cb119-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb119-17"><a href="#cb119-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb134"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb134-1"><a href="#cb134-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb134-2"><a href="#cb134-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb134-3"><a href="#cb134-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb134-4"><a href="#cb134-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb134-5"><a href="#cb134-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb134-6"><a href="#cb134-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb134-7"><a href="#cb134-7" aria-hidden="true" tabindex="-1"></a>A heading.</span>
+<span id="cb134-8"><a href="#cb134-8" aria-hidden="true" tabindex="-1"></a>==========</span>
+<span id="cb134-9"><a href="#cb134-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb134-10"><a href="#cb134-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb134-11"><a href="#cb134-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeHeading]</span>
+<span id="cb134-12"><a href="#cb134-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb134-13"><a href="#cb134-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span>
+<span id="cb134-14"><a href="#cb134-14" aria-hidden="true" tabindex="-1"></a>==============</span>
+<span id="cb134-15"><a href="#cb134-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb134-16"><a href="#cb134-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb134-17"><a href="#cb134-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb120"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb120-1"><a href="#cb120-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb135"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb135-1"><a href="#cb135-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1829,27 +2148,27 @@ contain the following text:</p>
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb121"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb121-1"><a href="#cb121-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb121-2"><a href="#cb121-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb121-3"><a href="#cb121-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb121-4"><a href="#cb121-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb121-5"><a href="#cb121-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb121-6"><a href="#cb121-6" aria-hidden="true" tabindex="-1"></a>A heading.</span>
-<span id="cb121-7"><a href="#cb121-7" aria-hidden="true" tabindex="-1"></a>==========</span>
-<span id="cb121-8"><a href="#cb121-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb121-9"><a href="#cb121-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb121-10"><a href="#cb121-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeHeading = yes]</span>
-<span id="cb121-11"><a href="#cb121-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb121-12"><a href="#cb121-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
-<span id="cb121-13"><a href="#cb121-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span>
-<span id="cb121-14"><a href="#cb121-14" aria-hidden="true" tabindex="-1"></a>==============</span>
-<span id="cb121-15"><a href="#cb121-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb121-16"><a href="#cb121-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb121-17"><a href="#cb121-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb136"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb136-1"><a href="#cb136-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb136-2"><a href="#cb136-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb136-3"><a href="#cb136-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb136-4"><a href="#cb136-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb136-5"><a href="#cb136-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb136-6"><a href="#cb136-6" aria-hidden="true" tabindex="-1"></a>A heading.</span>
+<span id="cb136-7"><a href="#cb136-7" aria-hidden="true" tabindex="-1"></a>==========</span>
+<span id="cb136-8"><a href="#cb136-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb136-9"><a href="#cb136-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb136-10"><a href="#cb136-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeHeading = yes]</span>
+<span id="cb136-11"><a href="#cb136-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb136-12"><a href="#cb136-12" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb136-13"><a href="#cb136-13" aria-hidden="true" tabindex="-1"></a>Not a heading.</span>
+<span id="cb136-14"><a href="#cb136-14" aria-hidden="true" tabindex="-1"></a>==============</span>
+<span id="cb136-15"><a href="#cb136-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb136-16"><a href="#cb136-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb136-17"><a href="#cb136-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb122"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb122-1"><a href="#cb122-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb137"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb137-1"><a href="#cb137-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1857,8 +2176,202 @@ contain the following text:</p>
<h1 id="a-heading.-3">A heading.</h1>
<p>A paragraph. Not a heading. ==============</p>
</blockquote>
-<h4 data-number="2.2.1.9" id="option-bracketedspans"><span
-class="header-section-number">2.2.1.9</span> Option
+<h4 data-number="2.2.1.12" id="option-blankbeforelist"><span
+class="header-section-number">2.2.1.12</span> Option
+<code>blankBeforeList</code></h4>
+<dl>
+<dt><code>blankBeforeList</code> (default value:
+<code>false</code>)</dt>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>Require a blank line between a paragraph and the following list.</p>
+</dd>
+<dt>false</dt>
+<dd>
+<p>Do not require a blank line between a paragraph and the following
+list.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h5 class="unnumbered" id="lua-module-example-6">Lua Module Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb138"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb138-1"><a href="#cb138-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb138-2"><a href="#cb138-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb138-3"><a href="#cb138-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb138-4"><a href="#cb138-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb138-5"><a href="#cb138-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb138-6"><a href="#cb138-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb138-7"><a href="#cb138-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb138-8"><a href="#cb138-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb138-9"><a href="#cb138-9" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
+<span id="cb138-10"><a href="#cb138-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb138-11"><a href="#cb138-11" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span>
+<span id="cb138-12"><a href="#cb138-12" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb138-13"><a href="#cb138-13" aria-hidden="true" tabindex="-1"></a> &quot;- a list&quot; .. newline</span>
+<span id="cb138-14"><a href="#cb138-14" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
+<span id="cb138-15"><a href="#cb138-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb138-16"><a href="#cb138-16" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({</span>
+<span id="cb138-17"><a href="#cb138-17" aria-hidden="true" tabindex="-1"></a> blankBeforeList = true})</span>
+<span id="cb138-18"><a href="#cb138-18" aria-hidden="true" tabindex="-1"></a> input = &quot;A paragraph.&quot; .. newline ..</span>
+<span id="cb138-19"><a href="#cb138-19" aria-hidden="true" tabindex="-1"></a> &quot;- not a list&quot; .. newline</span>
+<span id="cb138-20"><a href="#cb138-20" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb138-21"><a href="#cb138-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb138-22"><a href="#cb138-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Then, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb139"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb139-1"><a href="#cb139-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>A paragraph.</p>
+<ul>
+<li>a list</li>
+</ul>
+<p>A paragraph. - not a list</p>
+</blockquote>
+<h5 class="unnumbered" id="lua-cli-example-6">Lua CLI Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb140"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb140-1"><a href="#cb140-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb140-2"><a href="#cb140-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb140-3"><a href="#cb140-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb140-4"><a href="#cb140-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb140-5"><a href="#cb140-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb140-6"><a href="#cb140-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb140-7"><a href="#cb140-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb140-8"><a href="#cb140-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb140-9"><a href="#cb140-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Using a text editor, create a text document named
+<code>content.md</code> with the following content:</p>
+<div class="sourceCode" id="cb141"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb141-1"><a href="#cb141-1" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb141-2"><a href="#cb141-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a list?</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb142"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb142-1"><a href="#cb142-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb142-2"><a href="#cb142-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ blankBeforeList=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb142-3"><a href="#cb142-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
+CLI script file, such as
+<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
+or <code>C:\Users\</code>⟨<em>Your
+username</em>⟩<code>\texmf\scripts\markdown\markdown-cli.lua</code> on
+Windows systems. Use the command
+<code>kpsewhich -a markdown-cli.lua</code> to locate the Lua CLI script
+file using <a href="https://tug.org/kpathsea/"
+title="Kpathsea - TeX Users Group">Kpathsea</a>.</p>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>A paragraph.</p>
+<ul>
+<li>a list?</li>
+</ul>
+<p>A paragraph. - a list?</p>
+</blockquote>
+<h5 class="unnumbered" id="plain-tex-example-5">Plain <span
+class="tex">T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb143"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb143-1"><a href="#cb143-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb143-2"><a href="#cb143-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb143-3"><a href="#cb143-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb143-4"><a href="#cb143-4" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb143-5"><a href="#cb143-5" aria-hidden="true" tabindex="-1"></a>- a list</span>
+<span id="cb143-6"><a href="#cb143-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb143-7"><a href="#cb143-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb143-8"><a href="#cb143-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBlankBeforeList</span>{true}</span>
+<span id="cb143-9"><a href="#cb143-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb143-10"><a href="#cb143-10" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb143-11"><a href="#cb143-11" aria-hidden="true" tabindex="-1"></a>- not a list</span>
+<span id="cb143-12"><a href="#cb143-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb143-13"><a href="#cb143-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb143-14"><a href="#cb143-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb144"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb144-1"><a href="#cb144-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>A paragraph.</p>
+<ul>
+<li>a list</li>
+</ul>
+<p>A paragraph. - not a list</p>
+</blockquote>
+<h5 class="unnumbered" id="latex-example-7"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb145"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb145-1"><a href="#cb145-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb145-2"><a href="#cb145-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb145-3"><a href="#cb145-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb145-4"><a href="#cb145-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb145-5"><a href="#cb145-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb145-6"><a href="#cb145-6" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb145-7"><a href="#cb145-7" aria-hidden="true" tabindex="-1"></a>- a list</span>
+<span id="cb145-8"><a href="#cb145-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb145-9"><a href="#cb145-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb145-10"><a href="#cb145-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[blankBeforeList]</span>
+<span id="cb145-11"><a href="#cb145-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb145-12"><a href="#cb145-12" aria-hidden="true" tabindex="-1"></a>- not a list</span>
+<span id="cb145-13"><a href="#cb145-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb145-14"><a href="#cb145-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb145-15"><a href="#cb145-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb146"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb146-1"><a href="#cb146-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>A paragraph.</p>
+<ul>
+<li>a list</li>
+</ul>
+<p>A paragraph. - not a list</p>
+</blockquote>
+<h5 class="unnumbered" id="context-example-6">Con<span
+class="tex">T<sub>e</sub>X</span>t Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb147"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb147-1"><a href="#cb147-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb147-2"><a href="#cb147-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb147-3"><a href="#cb147-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb147-4"><a href="#cb147-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb147-5"><a href="#cb147-5" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb147-6"><a href="#cb147-6" aria-hidden="true" tabindex="-1"></a>- a list</span>
+<span id="cb147-7"><a href="#cb147-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb147-8"><a href="#cb147-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb147-9"><a href="#cb147-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[blankBeforeList = yes]</span>
+<span id="cb147-10"><a href="#cb147-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb147-11"><a href="#cb147-11" aria-hidden="true" tabindex="-1"></a>A paragraph.</span>
+<span id="cb147-12"><a href="#cb147-12" aria-hidden="true" tabindex="-1"></a>- not a list</span>
+<span id="cb147-13"><a href="#cb147-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb147-14"><a href="#cb147-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb147-15"><a href="#cb147-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb148"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb148-1"><a href="#cb148-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>A paragraph.</p>
+<ul>
+<li>a list</li>
+</ul>
+<p>A paragraph. - not a list</p>
+</blockquote>
+<h4 data-number="2.2.1.13" id="option-bracketedspans"><span
+class="header-section-number">2.2.1.13</span> Option
<code>bracketedSpans</code></h4>
<dl>
<dt><code>bracketedSpans</code> (default value: <code>false</code>)</dt>
@@ -1869,8 +2382,8 @@ class="header-section-number">2.2.1.9</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-bracketed_spans">bracketed
span syntax extension</a>:</p>
-<div class="sourceCode" id="cb123"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb123-1"><a href="#cb123-1" aria-hidden="true" tabindex="-1"></a><span class="co">[</span><span class="ot">This is *some text*</span><span class="co">]</span>{.class key=val}</span></code></pre></div>
+<div class="sourceCode" id="cb149"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb149-1"><a href="#cb149-1" aria-hidden="true" tabindex="-1"></a><span class="co">[</span><span class="ot">This is *some text*</span><span class="co">]</span>{.class key=val}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -1883,59 +2396,59 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb123-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-7"><span
+<h5 class="unnumbered" id="latex-example-8"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb124"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb124-1"><a href="#cb124-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb124-2"><a href="#cb124-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span>
-<span id="cb124-3"><a href="#cb124-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb124-4"><a href="#cb124-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb124-5"><a href="#cb124-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb124-6"><a href="#cb124-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb124-7"><a href="#cb124-7" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {</span>
-<span id="cb124-8"><a href="#cb124-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
-<span id="cb124-9"><a href="#cb124-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span>
-<span id="cb124-10"><a href="#cb124-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb124-11"><a href="#cb124-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb124-12"><a href="#cb124-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
-<span id="cb124-13"><a href="#cb124-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span>
-<span id="cb124-14"><a href="#cb124-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span>
-<span id="cb124-15"><a href="#cb124-15" aria-hidden="true" tabindex="-1"></a> { color }</span>
-<span id="cb124-16"><a href="#cb124-16" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb124-17"><a href="#cb124-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span>
-<span id="cb124-18"><a href="#cb124-18" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb124-19"><a href="#cb124-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb124-20"><a href="#cb124-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb124-21"><a href="#cb124-21" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb124-22"><a href="#cb124-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb124-23"><a href="#cb124-23" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {</span>
-<span id="cb124-24"><a href="#cb124-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span>
-<span id="cb124-25"><a href="#cb124-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb124-26"><a href="#cb124-26" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb124-27"><a href="#cb124-27" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb124-28"><a href="#cb124-28" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb124-29"><a href="#cb124-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb124-30"><a href="#cb124-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb124-31"><a href="#cb124-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb124-32"><a href="#cb124-32" aria-hidden="true" tabindex="-1"></a>Here is some [colored text]{color=red}.</span>
-<span id="cb124-33"><a href="#cb124-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb124-34"><a href="#cb124-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb150"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb150-1"><a href="#cb150-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb150-2"><a href="#cb150-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span>
+<span id="cb150-3"><a href="#cb150-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb150-4"><a href="#cb150-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb150-5"><a href="#cb150-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb150-6"><a href="#cb150-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb150-7"><a href="#cb150-7" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {</span>
+<span id="cb150-8"><a href="#cb150-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb150-9"><a href="#cb150-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span>
+<span id="cb150-10"><a href="#cb150-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb150-11"><a href="#cb150-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb150-12"><a href="#cb150-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
+<span id="cb150-13"><a href="#cb150-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span>
+<span id="cb150-14"><a href="#cb150-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span>
+<span id="cb150-15"><a href="#cb150-15" aria-hidden="true" tabindex="-1"></a> { color }</span>
+<span id="cb150-16"><a href="#cb150-16" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb150-17"><a href="#cb150-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span>
+<span id="cb150-18"><a href="#cb150-18" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb150-19"><a href="#cb150-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb150-20"><a href="#cb150-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb150-21"><a href="#cb150-21" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb150-22"><a href="#cb150-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb150-23"><a href="#cb150-23" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {</span>
+<span id="cb150-24"><a href="#cb150-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span>
+<span id="cb150-25"><a href="#cb150-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb150-26"><a href="#cb150-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb150-27"><a href="#cb150-27" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb150-28"><a href="#cb150-28" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb150-29"><a href="#cb150-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb150-30"><a href="#cb150-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb150-31"><a href="#cb150-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb150-32"><a href="#cb150-32" aria-hidden="true" tabindex="-1"></a>Here is some [colored text]{color=red}.</span>
+<span id="cb150-33"><a href="#cb150-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb150-34"><a href="#cb150-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb125"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb125-1"><a href="#cb125-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb151"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb151-1"><a href="#cb151-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Here is some <span style="color: red">colored text</span>.</p>
</blockquote>
-<h4 data-number="2.2.1.10" id="option-breakableblockquotes"><span
-class="header-section-number">2.2.1.10</span> Option
+<h4 data-number="2.2.1.14" id="option-breakableblockquotes"><span
+class="header-section-number">2.2.1.14</span> Option
<code>breakableBlockquotes</code></h4>
<dl>
<dt><code>breakableBlockquotes</code> (default value:
-<code>false</code>)</dt>
+<code>true</code>)</dt>
<dd>
<dl>
<dt>true</dt>
@@ -1949,31 +2462,35 @@ class="header-section-number">2.2.1.10</span> Option
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-5">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-7">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb126"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb126-1"><a href="#cb126-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb126-2"><a href="#cb126-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb126-3"><a href="#cb126-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span>
-<span id="cb126-4"><a href="#cb126-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb126-5"><a href="#cb126-5" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb126-6"><a href="#cb126-6" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb126-7"><a href="#cb126-7" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
-<span id="cb126-8"><a href="#cb126-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb126-9"><a href="#cb126-9" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span>
-<span id="cb126-10"><a href="#cb126-10" aria-hidden="true" tabindex="-1"></a> input = &quot;&gt; A single&quot; .. newline .. newline ..</span>
-<span id="cb126-11"><a href="#cb126-11" aria-hidden="true" tabindex="-1"></a> &quot;&gt; block quote.&quot; .. newline</span>
-<span id="cb126-12"><a href="#cb126-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
-<span id="cb126-13"><a href="#cb126-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb126-14"><a href="#cb126-14" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({breakableBlockquotes = true})</span>
-<span id="cb126-15"><a href="#cb126-15" aria-hidden="true" tabindex="-1"></a> input = &quot;&gt; A block quote.&quot; .. newline .. newline ..</span>
-<span id="cb126-16"><a href="#cb126-16" aria-hidden="true" tabindex="-1"></a> &quot;&gt; Another block quote.&quot; .. newline</span>
-<span id="cb126-17"><a href="#cb126-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb126-18"><a href="#cb126-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb152"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb152-1"><a href="#cb152-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb152-2"><a href="#cb152-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb152-3"><a href="#cb152-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bf</span> #1}<span class="fu">\par</span>}</span>
+<span id="cb152-4"><a href="#cb152-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb152-5"><a href="#cb152-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb152-6"><a href="#cb152-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb152-7"><a href="#cb152-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb152-8"><a href="#cb152-8" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb152-9"><a href="#cb152-9" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb152-10"><a href="#cb152-10" aria-hidden="true" tabindex="-1"></a> local convert, input</span>
+<span id="cb152-11"><a href="#cb152-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb152-12"><a href="#cb152-12" aria-hidden="true" tabindex="-1"></a> convert = markdown.new({breakableBlockquotes = false})</span>
+<span id="cb152-13"><a href="#cb152-13" aria-hidden="true" tabindex="-1"></a> input = &quot;&gt; A single&quot; .. newline .. newline ..</span>
+<span id="cb152-14"><a href="#cb152-14" aria-hidden="true" tabindex="-1"></a> &quot;&gt; block quote.&quot; .. newline</span>
+<span id="cb152-15"><a href="#cb152-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input))</span>
+<span id="cb152-16"><a href="#cb152-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb152-17"><a href="#cb152-17" aria-hidden="true" tabindex="-1"></a> convert = markdown.new()</span>
+<span id="cb152-18"><a href="#cb152-18" aria-hidden="true" tabindex="-1"></a> input = &quot;&gt; A block quote.&quot; .. newline .. newline ..</span>
+<span id="cb152-19"><a href="#cb152-19" aria-hidden="true" tabindex="-1"></a> &quot;&gt; Another block quote.&quot; .. newline</span>
+<span id="cb152-20"><a href="#cb152-20" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb152-21"><a href="#cb152-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb152-22"><a href="#cb152-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb127"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb127-1"><a href="#cb127-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb153"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb153-1"><a href="#cb153-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -1987,26 +2504,30 @@ contain the following text:</p>
<p>Another block quote.</p>
</blockquote>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-5">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-7">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb128"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb128-1"><a href="#cb128-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb128-2"><a href="#cb128-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb128-3"><a href="#cb128-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb128-4"><a href="#cb128-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb128-5"><a href="#cb128-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb154"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb154-1"><a href="#cb154-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb154-2"><a href="#cb154-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb154-3"><a href="#cb154-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb154-4"><a href="#cb154-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb154-5"><a href="#cb154-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb154-6"><a href="#cb154-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb154-7"><a href="#cb154-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb154-8"><a href="#cb154-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb154-9"><a href="#cb154-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb129"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb129-1"><a href="#cb129-1" aria-hidden="true" tabindex="-1"></a><span class="at">&gt; A single block quote</span></span>
-<span id="cb129-2"><a href="#cb129-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb129-3"><a href="#cb129-3" aria-hidden="true" tabindex="-1"></a><span class="at">&gt; or two block quotes?</span></span></code></pre></div>
+<div class="sourceCode" id="cb155"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb155-1"><a href="#cb155-1" aria-hidden="true" tabindex="-1"></a><span class="at">&gt; A single block quote</span></span>
+<span id="cb155-2"><a href="#cb155-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb155-3"><a href="#cb155-3" aria-hidden="true" tabindex="-1"></a><span class="at">&gt; or two block quotes?</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb130"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb130-1"><a href="#cb130-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb130-2"><a href="#cb130-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ breakableBlockquotes=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb130-3"><a href="#cb130-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb156"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb156-1"><a href="#cb156-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ breakableBlockquotes=false <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb156-2"><a href="#cb156-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb156-3"><a href="#cb156-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -2029,30 +2550,31 @@ contain the following text:</p>
<p>or two block quotes?</p>
</blockquote>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-5">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-6">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb131"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb131-1"><a href="#cb131-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb131-2"><a href="#cb131-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb131-3"><a href="#cb131-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb131-4"><a href="#cb131-4" aria-hidden="true" tabindex="-1"></a>&gt; A single</span>
-<span id="cb131-5"><a href="#cb131-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb131-6"><a href="#cb131-6" aria-hidden="true" tabindex="-1"></a>&gt; block quote.</span>
-<span id="cb131-7"><a href="#cb131-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb131-8"><a href="#cb131-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb131-9"><a href="#cb131-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBreakableBlockquotes</span>{true}</span>
-<span id="cb131-10"><a href="#cb131-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb131-11"><a href="#cb131-11" aria-hidden="true" tabindex="-1"></a>&gt; A block quote.</span>
-<span id="cb131-12"><a href="#cb131-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb131-13"><a href="#cb131-13" aria-hidden="true" tabindex="-1"></a>&gt; Another block quote.</span>
-<span id="cb131-14"><a href="#cb131-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb131-15"><a href="#cb131-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb131-16"><a href="#cb131-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb132"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb132-1"><a href="#cb132-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb157"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb157-1"><a href="#cb157-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb157-2"><a href="#cb157-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb157-3"><a href="#cb157-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBreakableBlockquotes</span>{false}</span>
+<span id="cb157-4"><a href="#cb157-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb157-5"><a href="#cb157-5" aria-hidden="true" tabindex="-1"></a>&gt; A single</span>
+<span id="cb157-6"><a href="#cb157-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb157-7"><a href="#cb157-7" aria-hidden="true" tabindex="-1"></a>&gt; block quote.</span>
+<span id="cb157-8"><a href="#cb157-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb157-9"><a href="#cb157-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb157-10"><a href="#cb157-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionBreakableBlockquotes</span>{true}</span>
+<span id="cb157-11"><a href="#cb157-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb157-12"><a href="#cb157-12" aria-hidden="true" tabindex="-1"></a>&gt; A block quote.</span>
+<span id="cb157-13"><a href="#cb157-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb157-14"><a href="#cb157-14" aria-hidden="true" tabindex="-1"></a>&gt; Another block quote.</span>
+<span id="cb157-15"><a href="#cb157-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb157-16"><a href="#cb157-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb157-17"><a href="#cb157-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb158"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb158-1"><a href="#cb158-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2066,31 +2588,31 @@ contain the following text:</p>
<p>Another block quote.</p>
</blockquote>
</blockquote>
-<h5 class="unnumbered" id="latex-example-8"><span
+<h5 class="unnumbered" id="latex-example-9"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb133"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb133-1"><a href="#cb133-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb133-2"><a href="#cb133-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb133-3"><a href="#cb133-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb133-4"><a href="#cb133-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb133-5"><a href="#cb133-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb133-6"><a href="#cb133-6" aria-hidden="true" tabindex="-1"></a>&gt; A single</span>
-<span id="cb133-7"><a href="#cb133-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb133-8"><a href="#cb133-8" aria-hidden="true" tabindex="-1"></a>&gt; block quote.</span>
-<span id="cb133-9"><a href="#cb133-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb133-10"><a href="#cb133-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb133-11"><a href="#cb133-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{breakableBlockquotes}</span>
-<span id="cb133-12"><a href="#cb133-12" aria-hidden="true" tabindex="-1"></a>&gt; A block quote.</span>
-<span id="cb133-13"><a href="#cb133-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb133-14"><a href="#cb133-14" aria-hidden="true" tabindex="-1"></a>&gt; Another block quote.</span>
-<span id="cb133-15"><a href="#cb133-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb133-16"><a href="#cb133-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb133-17"><a href="#cb133-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb159"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb159-1"><a href="#cb159-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb159-2"><a href="#cb159-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb159-3"><a href="#cb159-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb159-4"><a href="#cb159-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb159-5"><a href="#cb159-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[breakableBlockquotes = false]</span>
+<span id="cb159-6"><a href="#cb159-6" aria-hidden="true" tabindex="-1"></a>&gt; A single</span>
+<span id="cb159-7"><a href="#cb159-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb159-8"><a href="#cb159-8" aria-hidden="true" tabindex="-1"></a>&gt; block quote.</span>
+<span id="cb159-9"><a href="#cb159-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb159-10"><a href="#cb159-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb159-11"><a href="#cb159-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb159-12"><a href="#cb159-12" aria-hidden="true" tabindex="-1"></a>&gt; A block quote.</span>
+<span id="cb159-13"><a href="#cb159-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb159-14"><a href="#cb159-14" aria-hidden="true" tabindex="-1"></a>&gt; Another block quote.</span>
+<span id="cb159-15"><a href="#cb159-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb159-16"><a href="#cb159-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb159-17"><a href="#cb159-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb134"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb134-1"><a href="#cb134-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb160"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb160-1"><a href="#cb160-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2104,31 +2626,32 @@ contain the following text:</p>
<p>Another block quote.</p>
</blockquote>
</blockquote>
-<h5 class="unnumbered" id="context-example-6">Con<span
+<h5 class="unnumbered" id="context-example-7">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb135"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb135-1"><a href="#cb135-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb135-2"><a href="#cb135-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb135-3"><a href="#cb135-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb135-4"><a href="#cb135-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb135-5"><a href="#cb135-5" aria-hidden="true" tabindex="-1"></a>&gt; A single</span>
-<span id="cb135-6"><a href="#cb135-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb135-7"><a href="#cb135-7" aria-hidden="true" tabindex="-1"></a>&gt; block quote.</span>
-<span id="cb135-8"><a href="#cb135-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb135-9"><a href="#cb135-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb135-10"><a href="#cb135-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[breakableBlockquotes = yes]</span>
-<span id="cb135-11"><a href="#cb135-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb135-12"><a href="#cb135-12" aria-hidden="true" tabindex="-1"></a>&gt; A block quote.</span>
-<span id="cb135-13"><a href="#cb135-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb135-14"><a href="#cb135-14" aria-hidden="true" tabindex="-1"></a>&gt; Another block quote.</span>
-<span id="cb135-15"><a href="#cb135-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb135-16"><a href="#cb135-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb135-17"><a href="#cb135-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb161"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb161-1"><a href="#cb161-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb161-2"><a href="#cb161-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb161-3"><a href="#cb161-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb161-4"><a href="#cb161-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[breakableBlockquotes = no]</span>
+<span id="cb161-5"><a href="#cb161-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb161-6"><a href="#cb161-6" aria-hidden="true" tabindex="-1"></a>&gt; A single</span>
+<span id="cb161-7"><a href="#cb161-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb161-8"><a href="#cb161-8" aria-hidden="true" tabindex="-1"></a>&gt; block quote.</span>
+<span id="cb161-9"><a href="#cb161-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb161-10"><a href="#cb161-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb161-11"><a href="#cb161-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[breakableBlockquotes = yes]</span>
+<span id="cb161-12"><a href="#cb161-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb161-13"><a href="#cb161-13" aria-hidden="true" tabindex="-1"></a>&gt; A block quote.</span>
+<span id="cb161-14"><a href="#cb161-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb161-15"><a href="#cb161-15" aria-hidden="true" tabindex="-1"></a>&gt; Another block quote.</span>
+<span id="cb161-16"><a href="#cb161-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb161-17"><a href="#cb161-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb161-18"><a href="#cb161-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb136"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb136-1"><a href="#cb136-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb162"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb162-1"><a href="#cb162-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2142,8 +2665,8 @@ contain the following text:</p>
<p>Another block quote.</p>
</blockquote>
</blockquote>
-<h4 data-number="2.2.1.11" id="option-citationnbsps"><span
-class="header-section-number">2.2.1.11</span> Option
+<h4 data-number="2.2.1.15" id="option-citationnbsps"><span
+class="header-section-number">2.2.1.15</span> Option
<code>citationNbsps</code></h4>
<dl>
<dt><code>citationNbsps</code> (default value: <code>true</code>)</dt>
@@ -2164,41 +2687,41 @@ syntax extension.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-9"><span
+<h5 class="unnumbered" id="latex-example-10"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.bib</code> with the following content:</p>
-<div class="sourceCode" id="cb137"><pre
-class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb137-1"><a href="#cb137-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
-<span id="cb137-2"><a href="#cb137-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
-<span id="cb137-3"><a href="#cb137-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = &quot;<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>&quot;,</span>
-<span id="cb137-4"><a href="#cb137-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
-<span id="cb137-5"><a href="#cb137-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
-<span id="cb137-6"><a href="#cb137-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb163"><pre
+class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb163-1"><a href="#cb163-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
+<span id="cb163-2"><a href="#cb163-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
+<span id="cb163-3"><a href="#cb163-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = &quot;<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>&quot;,</span>
+<span id="cb163-4"><a href="#cb163-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
+<span id="cb163-5"><a href="#cb163-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
+<span id="cb163-6"><a href="#cb163-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb138"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb138-1"><a href="#cb138-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb138-2"><a href="#cb138-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
-<span id="cb138-3"><a href="#cb138-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb138-4"><a href="#cb138-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb138-5"><a href="#cb138-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb138-6"><a href="#cb138-6" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span>
-<span id="cb138-7"><a href="#cb138-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb138-8"><a href="#cb138-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb138-9"><a href="#cb138-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{citationNbsps = false}</span>
-<span id="cb138-10"><a href="#cb138-10" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span>
-<span id="cb138-11"><a href="#cb138-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb138-12"><a href="#cb138-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb138-13"><a href="#cb138-13" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span>
-<span id="cb138-14"><a href="#cb138-14" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span>
-<span id="cb138-15"><a href="#cb138-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb164"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb164-1"><a href="#cb164-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb164-2"><a href="#cb164-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
+<span id="cb164-3"><a href="#cb164-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb164-4"><a href="#cb164-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb164-5"><a href="#cb164-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb164-6"><a href="#cb164-6" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span>
+<span id="cb164-7"><a href="#cb164-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb164-8"><a href="#cb164-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb164-9"><a href="#cb164-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[citationNbsps = false]</span>
+<span id="cb164-10"><a href="#cb164-10" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span>
+<span id="cb164-11"><a href="#cb164-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb164-12"><a href="#cb164-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb164-13"><a href="#cb164-13" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span>
+<span id="cb164-14"><a href="#cb164-14" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span>
+<span id="cb164-15"><a href="#cb164-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX and BibTeX from the terminal:</p>
-<div class="sourceCode" id="cb139"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb139-1"><a href="#cb139-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb139-2"><a href="#cb139-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span>
-<span id="cb139-3"><a href="#cb139-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb139-4"><a href="#cb139-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb165"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb165-1"><a href="#cb165-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb165-2"><a href="#cb165-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span>
+<span id="cb165-3"><a href="#cb165-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb165-4"><a href="#cb165-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text, where the middot (<code>·</code>) denotes a
non-breaking space:</p>
@@ -2211,8 +2734,8 @@ href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">1</a>
Donald·Ervin Knuth. <em>The TeXbook, volume A of Computers and
typesetting.</em> Addison-Wesley, 1984.</p>
</blockquote>
-<h4 data-number="2.2.1.12" id="option-citations"><span
-class="header-section-number">2.2.1.12</span> Option
+<h4 data-number="2.2.1.16" id="option-citations"><span
+class="header-section-number">2.2.1.16</span> Option
<code>citations</code></h4>
<dl>
<dt><code>citations</code> (default value: <code>false</code>)</dt>
@@ -2223,20 +2746,20 @@ class="header-section-number">2.2.1.12</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-citations">citation
syntax extension</a>:</p>
-<div class="sourceCode" id="cb140"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb140-1"><a href="#cb140-1" aria-hidden="true" tabindex="-1"></a>Here is a simple parenthetical citation <span class="co">[</span><span class="ot">@doe99</span><span class="co">]</span> and here</span>
-<span id="cb140-2"><a href="#cb140-2" aria-hidden="true" tabindex="-1"></a>is a string of several [see @doe99, pp. 33-35; also</span>
-<span id="cb140-3"><a href="#cb140-3" aria-hidden="true" tabindex="-1"></a>@smith04, chap. 1].</span>
-<span id="cb140-4"><a href="#cb140-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb140-5"><a href="#cb140-5" aria-hidden="true" tabindex="-1"></a>A parenthetical citation can have a <span class="co">[</span><span class="ot">prenote @doe99</span><span class="co">]</span> and</span>
-<span id="cb140-6"><a href="#cb140-6" aria-hidden="true" tabindex="-1"></a>a <span class="co">[</span><span class="ot">@smith04 postnote</span><span class="co">]</span>. The name of the author can be</span>
-<span id="cb140-7"><a href="#cb140-7" aria-hidden="true" tabindex="-1"></a>suppressed by inserting a dash before the name of an</span>
-<span id="cb140-8"><a href="#cb140-8" aria-hidden="true" tabindex="-1"></a>author as follows <span class="co">[</span><span class="ot">-@smith04</span><span class="co">]</span>.</span>
-<span id="cb140-9"><a href="#cb140-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb140-10"><a href="#cb140-10" aria-hidden="true" tabindex="-1"></a>Here is a simple text citation @doe99 and here is</span>
-<span id="cb140-11"><a href="#cb140-11" aria-hidden="true" tabindex="-1"></a>a string of several @doe99 [pp. 33-35; also @smith04,</span>
-<span id="cb140-12"><a href="#cb140-12" aria-hidden="true" tabindex="-1"></a>chap. 1]. Here is one with the name of the author</span>
-<span id="cb140-13"><a href="#cb140-13" aria-hidden="true" tabindex="-1"></a>suppressed -@doe99.</span></code></pre></div>
+<div class="sourceCode" id="cb166"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb166-1"><a href="#cb166-1" aria-hidden="true" tabindex="-1"></a>Here is a simple parenthetical citation <span class="co">[</span><span class="ot">@doe99</span><span class="co">]</span> and here</span>
+<span id="cb166-2"><a href="#cb166-2" aria-hidden="true" tabindex="-1"></a>is a string of several [see @doe99, pp. 33-35; also</span>
+<span id="cb166-3"><a href="#cb166-3" aria-hidden="true" tabindex="-1"></a>@smith04, chap. 1].</span>
+<span id="cb166-4"><a href="#cb166-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb166-5"><a href="#cb166-5" aria-hidden="true" tabindex="-1"></a>A parenthetical citation can have a <span class="co">[</span><span class="ot">prenote @doe99</span><span class="co">]</span> and</span>
+<span id="cb166-6"><a href="#cb166-6" aria-hidden="true" tabindex="-1"></a>a <span class="co">[</span><span class="ot">@smith04 postnote</span><span class="co">]</span>. The name of the author can be</span>
+<span id="cb166-7"><a href="#cb166-7" aria-hidden="true" tabindex="-1"></a>suppressed by inserting a dash before the name of an</span>
+<span id="cb166-8"><a href="#cb166-8" aria-hidden="true" tabindex="-1"></a>author as follows <span class="co">[</span><span class="ot">-@smith04</span><span class="co">]</span>.</span>
+<span id="cb166-9"><a href="#cb166-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb166-10"><a href="#cb166-10" aria-hidden="true" tabindex="-1"></a>Here is a simple text citation @doe99 and here is</span>
+<span id="cb166-11"><a href="#cb166-11" aria-hidden="true" tabindex="-1"></a>a string of several @doe99 [pp. 33-35; also @smith04,</span>
+<span id="cb166-12"><a href="#cb166-12" aria-hidden="true" tabindex="-1"></a>chap. 1]. Here is one with the name of the author</span>
+<span id="cb166-13"><a href="#cb166-13" aria-hidden="true" tabindex="-1"></a>suppressed -@doe99.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -2249,38 +2772,38 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb140-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-10"><span
+<h5 class="unnumbered" id="latex-example-11"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.bib</code> with the following content:</p>
-<div class="sourceCode" id="cb141"><pre
-class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb141-1"><a href="#cb141-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
-<span id="cb141-2"><a href="#cb141-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
-<span id="cb141-3"><a href="#cb141-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = &quot;<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>&quot;,</span>
-<span id="cb141-4"><a href="#cb141-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
-<span id="cb141-5"><a href="#cb141-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
-<span id="cb141-6"><a href="#cb141-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb167"><pre
+class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb167-1"><a href="#cb167-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
+<span id="cb167-2"><a href="#cb167-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
+<span id="cb167-3"><a href="#cb167-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = &quot;<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>&quot;,</span>
+<span id="cb167-4"><a href="#cb167-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
+<span id="cb167-5"><a href="#cb167-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
+<span id="cb167-6"><a href="#cb167-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb142"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb142-1"><a href="#cb142-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb142-2"><a href="#cb142-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[backend=biber]{<span class="ex">biblatex</span>}</span>
-<span id="cb142-3"><a href="#cb142-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\addbibresource</span>{document.bib}</span>
-<span id="cb142-4"><a href="#cb142-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
-<span id="cb142-5"><a href="#cb142-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb142-6"><a href="#cb142-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb142-7"><a href="#cb142-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb142-8"><a href="#cb142-8" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] was written by @knuth:tex.</span>
-<span id="cb142-9"><a href="#cb142-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb142-10"><a href="#cb142-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb142-11"><a href="#cb142-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\printbibliography</span></span>
-<span id="cb142-12"><a href="#cb142-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb168"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb168-1"><a href="#cb168-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb168-2"><a href="#cb168-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[backend=biber]{<span class="ex">biblatex</span>}</span>
+<span id="cb168-3"><a href="#cb168-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\addbibresource</span>{document.bib}</span>
+<span id="cb168-4"><a href="#cb168-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
+<span id="cb168-5"><a href="#cb168-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb168-6"><a href="#cb168-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb168-7"><a href="#cb168-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb168-8"><a href="#cb168-8" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] was written by @knuth:tex.</span>
+<span id="cb168-9"><a href="#cb168-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb168-10"><a href="#cb168-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb168-11"><a href="#cb168-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\printbibliography</span></span>
+<span id="cb168-12"><a href="#cb168-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX and Biber from the terminal:</p>
-<div class="sourceCode" id="cb143"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb143-1"><a href="#cb143-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb143-2"><a href="#cb143-2" aria-hidden="true" tabindex="-1"></a><span class="ex">biber</span> document.bcf</span>
-<span id="cb143-3"><a href="#cb143-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb143-4"><a href="#cb143-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb169"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb169-1"><a href="#cb169-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb169-2"><a href="#cb169-2" aria-hidden="true" tabindex="-1"></a><span class="ex">biber</span> document.bcf</span>
+<span id="cb169-3"><a href="#cb169-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb169-4"><a href="#cb169-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2292,8 +2815,8 @@ href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">1</a>
Donald Ervin Knuth. <em>The <span class="tex">T<sub>e</sub>X</span>book,
volume A of Computers and typesetting.</em> Addison-Wesley, 1984.</p>
</blockquote>
-<h4 data-number="2.2.1.13" id="option-codespans"><span
-class="header-section-number">2.2.1.13</span> Option
+<h4 data-number="2.2.1.17" id="option-codespans"><span
+class="header-section-number">2.2.1.17</span> Option
<code>codeSpans</code></h4>
<dl>
<dt><code>codeSpans</code> (default value: <code>true</code>)</dt>
@@ -2302,9 +2825,9 @@ class="header-section-number">2.2.1.13</span> Option
<dt>true</dt>
<dd>
<p>Enable the code span syntax:</p>
-<div class="sourceCode" id="cb144"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb144-1"><a href="#cb144-1" aria-hidden="true" tabindex="-1"></a>Use the <span class="in">`printf()`</span> function.</span>
-<span id="cb144-2"><a href="#cb144-2" aria-hidden="true" tabindex="-1"></a>`<span class="in">`There is a literal backtick (`</span>) here.``</span></code></pre></div>
+<div class="sourceCode" id="cb170"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb170-1"><a href="#cb170-1" aria-hidden="true" tabindex="-1"></a>Use the <span class="in">`printf()`</span> function.</span>
+<span id="cb170-2"><a href="#cb170-2" aria-hidden="true" tabindex="-1"></a>`<span class="in">`There is a literal backtick (`</span>) here.``</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -2319,31 +2842,35 @@ quotation mark ligatures in texts that do not contain code spans:</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-6">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-8">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb146"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb146-1"><a href="#cb146-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb146-2"><a href="#cb146-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb146-3"><a href="#cb146-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb146-4"><a href="#cb146-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb146-5"><a href="#cb146-5" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
-<span id="cb146-6"><a href="#cb146-6" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb146-7"><a href="#cb146-7" aria-hidden="true" tabindex="-1"></a> &quot;``This is a code span.&#39;&#39; &quot; ..</span>
-<span id="cb146-8"><a href="#cb146-8" aria-hidden="true" tabindex="-1"></a> &quot;``This is no longer a code span.&#39;&#39;&quot;</span>
-<span id="cb146-9"><a href="#cb146-9" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb146-10"><a href="#cb146-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb146-11"><a href="#cb146-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb146-12"><a href="#cb146-12" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb146-13"><a href="#cb146-13" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({codeSpans = false})</span>
-<span id="cb146-14"><a href="#cb146-14" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb146-15"><a href="#cb146-15" aria-hidden="true" tabindex="-1"></a> &quot;``This is a quote.&#39;&#39; &quot; ..</span>
-<span id="cb146-16"><a href="#cb146-16" aria-hidden="true" tabindex="-1"></a> &quot;``This is another quote.&#39;&#39;&quot;</span>
-<span id="cb146-17"><a href="#cb146-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb146-18"><a href="#cb146-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb172"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb172-1"><a href="#cb172-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb172-2"><a href="#cb172-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb172-3"><a href="#cb172-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb172-4"><a href="#cb172-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb172-5"><a href="#cb172-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb172-6"><a href="#cb172-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb172-7"><a href="#cb172-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb172-8"><a href="#cb172-8" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
+<span id="cb172-9"><a href="#cb172-9" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb172-10"><a href="#cb172-10" aria-hidden="true" tabindex="-1"></a> &quot;``This is a code span.&#39;&#39; &quot; ..</span>
+<span id="cb172-11"><a href="#cb172-11" aria-hidden="true" tabindex="-1"></a> &quot;``This is no longer a code span.&#39;&#39;&quot;</span>
+<span id="cb172-12"><a href="#cb172-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb172-13"><a href="#cb172-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb172-14"><a href="#cb172-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb172-15"><a href="#cb172-15" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb172-16"><a href="#cb172-16" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({codeSpans = false})</span>
+<span id="cb172-17"><a href="#cb172-17" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb172-18"><a href="#cb172-18" aria-hidden="true" tabindex="-1"></a> &quot;``This is a quote.&#39;&#39; &quot; ..</span>
+<span id="cb172-19"><a href="#cb172-19" aria-hidden="true" tabindex="-1"></a> &quot;``This is another quote.&#39;&#39;&quot;</span>
+<span id="cb172-20"><a href="#cb172-20" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb172-21"><a href="#cb172-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb172-22"><a href="#cb172-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb147"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb147-1"><a href="#cb147-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb173"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb173-1"><a href="#cb173-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2351,25 +2878,29 @@ contain the following text:</p>
span.’’</p>
<p>“This is a quote.” “This is another quote.”</p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-6">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-8">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb148"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb148-1"><a href="#cb148-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb148-2"><a href="#cb148-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb148-3"><a href="#cb148-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb148-4"><a href="#cb148-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb148-5"><a href="#cb148-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb148-6"><a href="#cb148-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb174"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb174-1"><a href="#cb174-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb174-2"><a href="#cb174-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb174-3"><a href="#cb174-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb174-4"><a href="#cb174-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb174-5"><a href="#cb174-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb174-6"><a href="#cb174-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb174-7"><a href="#cb174-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb174-8"><a href="#cb174-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb174-9"><a href="#cb174-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb174-10"><a href="#cb174-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb149"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb149-1"><a href="#cb149-1" aria-hidden="true" tabindex="-1"></a>``Is this a code span?&#39;&#39; ``Or a quote?&#39;&#39;</span></code></pre></div>
+<div class="sourceCode" id="cb175"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb175-1"><a href="#cb175-1" aria-hidden="true" tabindex="-1"></a>``Is this a code span?&#39;&#39; ``Or a quote?&#39;&#39;</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb150"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb150-1"><a href="#cb150-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ codeSpans=false <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb150-2"><a href="#cb150-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb150-3"><a href="#cb150-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb176"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb176-1"><a href="#cb176-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ codeSpans=false <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb176-2"><a href="#cb176-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb176-3"><a href="#cb176-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -2385,28 +2916,28 @@ contain the following text:</p>
<p>“Is this a code span?” “Or a quote?”</p>
<p><code>Is this a code span?''</code>Or a quote?’’</p>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-6">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-7">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb151"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb151-1"><a href="#cb151-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb151-2"><a href="#cb151-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb151-3"><a href="#cb151-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb151-4"><a href="#cb151-4" aria-hidden="true" tabindex="-1"></a>``This is a code span.&#39;&#39;</span>
-<span id="cb151-5"><a href="#cb151-5" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.&#39;&#39;</span>
-<span id="cb151-6"><a href="#cb151-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb151-7"><a href="#cb151-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb151-8"><a href="#cb151-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCodeSpans</span>{false}</span>
-<span id="cb151-9"><a href="#cb151-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb151-10"><a href="#cb151-10" aria-hidden="true" tabindex="-1"></a>``This is a quote.&#39;&#39;</span>
-<span id="cb151-11"><a href="#cb151-11" aria-hidden="true" tabindex="-1"></a>``This is another quote.&#39;&#39;</span>
-<span id="cb151-12"><a href="#cb151-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb151-13"><a href="#cb151-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb151-14"><a href="#cb151-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb177"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb177-1"><a href="#cb177-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb177-2"><a href="#cb177-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb177-3"><a href="#cb177-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb177-4"><a href="#cb177-4" aria-hidden="true" tabindex="-1"></a>``This is a code span.&#39;&#39;</span>
+<span id="cb177-5"><a href="#cb177-5" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.&#39;&#39;</span>
+<span id="cb177-6"><a href="#cb177-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb177-7"><a href="#cb177-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb177-8"><a href="#cb177-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCodeSpans</span>{false}</span>
+<span id="cb177-9"><a href="#cb177-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb177-10"><a href="#cb177-10" aria-hidden="true" tabindex="-1"></a>``This is a quote.&#39;&#39;</span>
+<span id="cb177-11"><a href="#cb177-11" aria-hidden="true" tabindex="-1"></a>``This is another quote.&#39;&#39;</span>
+<span id="cb177-12"><a href="#cb177-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb177-13"><a href="#cb177-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb177-14"><a href="#cb177-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb152"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb152-1"><a href="#cb152-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb178"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb178-1"><a href="#cb178-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2414,29 +2945,29 @@ contain the following text:</p>
span.’’</p>
<p>“This is a quote.” “This is another quote.”</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-11"><span
+<h5 class="unnumbered" id="latex-example-12"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb153"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb153-1"><a href="#cb153-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb153-2"><a href="#cb153-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb153-3"><a href="#cb153-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb153-4"><a href="#cb153-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb153-5"><a href="#cb153-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb153-6"><a href="#cb153-6" aria-hidden="true" tabindex="-1"></a>``This is a code span.&#39;&#39;</span>
-<span id="cb153-7"><a href="#cb153-7" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.&#39;&#39;</span>
-<span id="cb153-8"><a href="#cb153-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb153-9"><a href="#cb153-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb153-10"><a href="#cb153-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{codeSpans=false}</span>
-<span id="cb153-11"><a href="#cb153-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.&#39;&#39;</span>
-<span id="cb153-12"><a href="#cb153-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.&#39;&#39;</span>
-<span id="cb153-13"><a href="#cb153-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb153-14"><a href="#cb153-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb153-15"><a href="#cb153-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb179"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb179-1"><a href="#cb179-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb179-2"><a href="#cb179-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb179-3"><a href="#cb179-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb179-4"><a href="#cb179-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb179-5"><a href="#cb179-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb179-6"><a href="#cb179-6" aria-hidden="true" tabindex="-1"></a>``This is a code span.&#39;&#39;</span>
+<span id="cb179-7"><a href="#cb179-7" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.&#39;&#39;</span>
+<span id="cb179-8"><a href="#cb179-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb179-9"><a href="#cb179-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb179-10"><a href="#cb179-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[codeSpans=false]</span>
+<span id="cb179-11"><a href="#cb179-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.&#39;&#39;</span>
+<span id="cb179-12"><a href="#cb179-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.&#39;&#39;</span>
+<span id="cb179-13"><a href="#cb179-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb179-14"><a href="#cb179-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb179-15"><a href="#cb179-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb154"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb154-1"><a href="#cb154-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb180"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb180-1"><a href="#cb180-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2444,29 +2975,29 @@ contain the following text:</p>
span.’’</p>
<p>“This is a quote.” “This is another quote.”</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-7">Con<span
+<h5 class="unnumbered" id="context-example-8">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb155"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb155-1"><a href="#cb155-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb155-2"><a href="#cb155-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb155-3"><a href="#cb155-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb155-4"><a href="#cb155-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb155-5"><a href="#cb155-5" aria-hidden="true" tabindex="-1"></a>``This is a code span.&#39;&#39;</span>
-<span id="cb155-6"><a href="#cb155-6" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.&#39;&#39;</span>
-<span id="cb155-7"><a href="#cb155-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb155-8"><a href="#cb155-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb155-9"><a href="#cb155-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[codeSpans = no]</span>
-<span id="cb155-10"><a href="#cb155-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb155-11"><a href="#cb155-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.&#39;&#39;</span>
-<span id="cb155-12"><a href="#cb155-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.&#39;&#39;</span>
-<span id="cb155-13"><a href="#cb155-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb155-14"><a href="#cb155-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb155-15"><a href="#cb155-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb156"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb156-1"><a href="#cb156-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb181"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb181-1"><a href="#cb181-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb181-2"><a href="#cb181-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb181-3"><a href="#cb181-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb181-4"><a href="#cb181-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb181-5"><a href="#cb181-5" aria-hidden="true" tabindex="-1"></a>``This is a code span.&#39;&#39;</span>
+<span id="cb181-6"><a href="#cb181-6" aria-hidden="true" tabindex="-1"></a>``This is no longer a code span.&#39;&#39;</span>
+<span id="cb181-7"><a href="#cb181-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb181-8"><a href="#cb181-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb181-9"><a href="#cb181-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[codeSpans = no]</span>
+<span id="cb181-10"><a href="#cb181-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb181-11"><a href="#cb181-11" aria-hidden="true" tabindex="-1"></a>``This is a quote.&#39;&#39;</span>
+<span id="cb181-12"><a href="#cb181-12" aria-hidden="true" tabindex="-1"></a>``This is another quote.&#39;&#39;</span>
+<span id="cb181-13"><a href="#cb181-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb181-14"><a href="#cb181-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb181-15"><a href="#cb181-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb182"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb182-1"><a href="#cb182-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2474,8 +3005,8 @@ contain the following text:</p>
span.’’</p>
<p>“This is a quote.” “This is another quote.”</p>
</blockquote>
-<h4 data-number="2.2.1.14" id="option-contentblocks"><span
-class="header-section-number">2.2.1.14</span> Option
+<h4 data-number="2.2.1.18" id="option-contentblocks"><span
+class="header-section-number">2.2.1.18</span> Option
<code>contentBlocks</code></h4>
<dl>
<dt><code>contentBlocks</code> (default value: <code>false</code>)</dt>
@@ -2483,14 +3014,14 @@ class="header-section-number">2.2.1.14</span> Option
<dl>
<dt>true</dt>
<dd>
-<p>Enable the iA Writer content blocks syntax extension:</p>
-<div class="sourceCode" id="cb157"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb157-1"><a href="#cb157-1" aria-hidden="true" tabindex="-1"></a>http://example.com/minard.jpg (Napoleon&#39;s</span>
-<span id="cb157-2"><a href="#cb157-2" aria-hidden="true" tabindex="-1"></a> disastrous Russian campaign of 1812)</span>
-<span id="cb157-3"><a href="#cb157-3" aria-hidden="true" tabindex="-1"></a>/Flowchart.png &quot;Engineering Flowchart&quot;</span>
-<span id="cb157-4"><a href="#cb157-4" aria-hidden="true" tabindex="-1"></a>/Savings Account.csv &#39;Recent Transactions&#39;</span>
-<span id="cb157-5"><a href="#cb157-5" aria-hidden="true" tabindex="-1"></a>/Example.swift</span>
-<span id="cb157-6"><a href="#cb157-6" aria-hidden="true" tabindex="-1"></a>/Lorem Ipsum.txt</span></code></pre></div>
+<p>Enable the iA Writer content blocks syntax extension:</p>
+<div class="sourceCode" id="cb183"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb183-1"><a href="#cb183-1" aria-hidden="true" tabindex="-1"></a>http://example.com/minard.jpg (Napoleon&#39;s</span>
+<span id="cb183-2"><a href="#cb183-2" aria-hidden="true" tabindex="-1"></a> disastrous Russian campaign of 1812)</span>
+<span id="cb183-3"><a href="#cb183-3" aria-hidden="true" tabindex="-1"></a>/Flowchart.png &quot;Engineering Flowchart&quot;</span>
+<span id="cb183-4"><a href="#cb183-4" aria-hidden="true" tabindex="-1"></a>/Savings Account.csv &#39;Recent Transactions&#39;</span>
+<span id="cb183-5"><a href="#cb183-5" aria-hidden="true" tabindex="-1"></a>/Example.swift</span>
+<span id="cb183-6"><a href="#cb183-6" aria-hidden="true" tabindex="-1"></a>/Lorem Ipsum.txt</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -2498,12 +3029,12 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb157-1"><a hr
<dl>
<dt>false</dt>
<dd>
-<p>Disable the iA Writer content blocks syntax extension.</p>
+<p>Disable the iA Writer content blocks syntax extension.</p>
</dd>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-12"><span
+<h5 class="unnumbered" id="latex-example-13"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>table.csv</code> with the following content:</p>
@@ -2513,34 +3044,34 @@ Marie,Curie,1867
Thomas,Edison,1847</code></pre>
<p>Create also a text document named
<code>markdown-languages.json</code> with the following content:</p>
-<div class="sourceCode" id="cb159"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb159-1"><a href="#cb159-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb159-2"><a href="#cb159-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;LaTeX&quot;</span></span>
-<span id="cb159-3"><a href="#cb159-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb185"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb185-1"><a href="#cb185-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb185-2"><a href="#cb185-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;LaTeX&quot;</span></span>
+<span id="cb185-3"><a href="#cb185-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Create also a text document named <code>code.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb160"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb160-1"><a href="#cb160-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb186"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb186-1"><a href="#cb186-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
<p>Create also a text document named <code>part.md</code> with the
following content:</p>
-<div class="sourceCode" id="cb161"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb161-1"><a href="#cb161-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
+<div class="sourceCode" id="cb187"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb187-1"><a href="#cb187-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
<p>Create also a text document named <code>document.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb162"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb162-1"><a href="#cb162-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb162-2"><a href="#cb162-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
-<span id="cb162-3"><a href="#cb162-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb162-4"><a href="#cb162-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb162-5"><a href="#cb162-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb162-6"><a href="#cb162-6" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
-<span id="cb162-7"><a href="#cb162-7" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
-<span id="cb162-8"><a href="#cb162-8" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
-<span id="cb162-9"><a href="#cb162-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb162-10"><a href="#cb162-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb188"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb188-1"><a href="#cb188-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb188-2"><a href="#cb188-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
+<span id="cb188-3"><a href="#cb188-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb188-4"><a href="#cb188-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb188-5"><a href="#cb188-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb188-6"><a href="#cb188-6" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
+<span id="cb188-7"><a href="#cb188-7" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
+<span id="cb188-8"><a href="#cb188-8" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
+<span id="cb188-9"><a href="#cb188-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb188-10"><a href="#cb188-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb163"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb163-1"><a href="#cb163-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb189"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb189-1"><a href="#cb189-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2571,11 +3102,11 @@ contain the following text:</p>
</tbody>
</table>
<p>Table 1: An example table</p>
-<div class="sourceCode" id="cb164"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb164-1"><a href="#cb164-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb190"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb190-1"><a href="#cb190-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\LaTeX</span>.</span></code></pre></div>
<p>This is a <em>transcluded markdown document</em>.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-8">Con<span
+<h5 class="unnumbered" id="context-example-9">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>table.csv</code> with the following content:</p>
@@ -2585,35 +3116,35 @@ Marie,Curie,1867
Thomas,Edison,1847</code></pre>
<p>Create also a text document named
<code>markdown-languages.json</code> with the following content:</p>
-<div class="sourceCode" id="cb166"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb166-1"><a href="#cb166-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb166-2"><a href="#cb166-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;ConTeXt&quot;</span></span>
-<span id="cb166-3"><a href="#cb166-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb192"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb192-1"><a href="#cb192-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb192-2"><a href="#cb192-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;tex&quot;</span><span class="op">:</span> <span class="st">&quot;ConTeXt&quot;</span></span>
+<span id="cb192-3"><a href="#cb192-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Create also a text document named <code>code.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb167"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb167-1"><a href="#cb167-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb193"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb193-1"><a href="#cb193-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
<p>Create also a text document named <code>part.md</code> with the
following content:</p>
-<div class="sourceCode" id="cb168"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb168-1"><a href="#cb168-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
+<div class="sourceCode" id="cb194"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb194-1"><a href="#cb194-1" aria-hidden="true" tabindex="-1"></a>This is a *transcluded markdown document*.</span></code></pre></div>
<p>Create also a text document named <code>document.tex</code> with the
following content:</p>
-<div class="sourceCode" id="cb169"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb169-1"><a href="#cb169-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb169-2"><a href="#cb169-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span>
-<span id="cb169-3"><a href="#cb169-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span>
-<span id="cb169-4"><a href="#cb169-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span>
-<span id="cb169-5"><a href="#cb169-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb169-6"><a href="#cb169-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb169-7"><a href="#cb169-7" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
-<span id="cb169-8"><a href="#cb169-8" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
-<span id="cb169-9"><a href="#cb169-9" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
-<span id="cb169-10"><a href="#cb169-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb169-11"><a href="#cb169-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb195"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb195-1"><a href="#cb195-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb195-2"><a href="#cb195-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span>
+<span id="cb195-3"><a href="#cb195-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [ConTeXt]</span>
+<span id="cb195-4"><a href="#cb195-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [ConTeXt] [option=TEX]</span>
+<span id="cb195-5"><a href="#cb195-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb195-6"><a href="#cb195-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb195-7"><a href="#cb195-7" aria-hidden="true" tabindex="-1"></a>/table.csv (An example table)</span>
+<span id="cb195-8"><a href="#cb195-8" aria-hidden="true" tabindex="-1"></a>/code.tex (An example code listing)</span>
+<span id="cb195-9"><a href="#cb195-9" aria-hidden="true" tabindex="-1"></a>/part.md (A file transclusion example)</span>
+<span id="cb195-10"><a href="#cb195-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb195-11"><a href="#cb195-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb170"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb170-1"><a href="#cb170-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb196"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb196-1"><a href="#cb196-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2644,12 +3175,124 @@ contain the following text:</p>
</tbody>
</table>
<p>Table 1: An example table</p>
-<div class="sourceCode" id="cb171"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb171-1"><a href="#cb171-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
+<div class="sourceCode" id="cb197"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb197-1"><a href="#cb197-1" aria-hidden="true" tabindex="-1"></a>This is an example code listing in <span class="fu">\ConTeXt</span>.</span></code></pre></div>
<p>This is a <em>transcluded markdown document</em>.</p>
</blockquote>
-<h4 data-number="2.2.1.15" id="option-debugextensions"><span
-class="header-section-number">2.2.1.15</span> Option
+<h4 data-number="2.2.1.19" id="option-contentlevel"><span
+class="header-section-number">2.2.1.19</span> Option
+<code>contentLevel</code></h4>
+<dl>
+<dt><code>contentLevel</code> (default value: <code>block</code>)</dt>
+<dd>
+<dl>
+<dt>block</dt>
+<dd>
+<p>Treat content as a sequence of blocks.</p>
+<div class="sourceCode" id="cb198"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb198-1"><a href="#cb198-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>this is a list</span>
+<span id="cb198-2"><a href="#cb198-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>it contains two items</span></code></pre></div>
+</dd>
+</dl>
+</dd>
+<dd>
+<dl>
+<dt>inline</dt>
+<dd>
+<p>Treat all content as inline content.</p>
+<div class="sourceCode" id="cb199"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb199-1"><a href="#cb199-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>this is a text</span>
+<span id="cb199-2"><a href="#cb199-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>not a list</span></code></pre></div>
+</dd>
+</dl>
+</dd>
+</dl>
+<h5 class="unnumbered" id="plain-tex-example-8">Plain <span
+class="tex">T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb200"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb200-1"><a href="#cb200-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb200-2"><a href="#cb200-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentLevel</span>{inline}</span>
+<span id="cb200-3"><a href="#cb200-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb200-4"><a href="#cb200-4" aria-hidden="true" tabindex="-1"></a>- this is</span>
+<span id="cb200-5"><a href="#cb200-5" aria-hidden="true" tabindex="-1"></a>- a text</span>
+<span id="cb200-6"><a href="#cb200-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb200-7"><a href="#cb200-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb201"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb201-1"><a href="#cb201-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>- this is - a text</p>
+</blockquote>
+<h5 class="unnumbered" id="latex-example-14"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb202"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb202-1"><a href="#cb202-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb202-2"><a href="#cb202-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb202-3"><a href="#cb202-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb202-4"><a href="#cb202-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb202-5"><a href="#cb202-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb202-6"><a href="#cb202-6" aria-hidden="true" tabindex="-1"></a>- this is</span>
+<span id="cb202-7"><a href="#cb202-7" aria-hidden="true" tabindex="-1"></a>- a list</span>
+<span id="cb202-8"><a href="#cb202-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb202-9"><a href="#cb202-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb202-10"><a href="#cb202-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[contentLevel=inline]</span>
+<span id="cb202-11"><a href="#cb202-11" aria-hidden="true" tabindex="-1"></a>- this is</span>
+<span id="cb202-12"><a href="#cb202-12" aria-hidden="true" tabindex="-1"></a>- a text</span>
+<span id="cb202-13"><a href="#cb202-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb202-14"><a href="#cb202-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb202-15"><a href="#cb202-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb203"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb203-1"><a href="#cb203-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<ul>
+<li>this is</li>
+<li>a list</li>
+</ul>
+<p>- this is - a text</p>
+</blockquote>
+<h5 class="unnumbered" id="context-example-10">Con<span
+class="tex">T<sub>e</sub>X</span>t Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb204"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb204-1"><a href="#cb204-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb204-2"><a href="#cb204-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb204-3"><a href="#cb204-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb204-4"><a href="#cb204-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb204-5"><a href="#cb204-5" aria-hidden="true" tabindex="-1"></a>- this is</span>
+<span id="cb204-6"><a href="#cb204-6" aria-hidden="true" tabindex="-1"></a>- a list</span>
+<span id="cb204-7"><a href="#cb204-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb204-8"><a href="#cb204-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb204-9"><a href="#cb204-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentLevel = inline]</span>
+<span id="cb204-10"><a href="#cb204-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb204-11"><a href="#cb204-11" aria-hidden="true" tabindex="-1"></a>- this is</span>
+<span id="cb204-12"><a href="#cb204-12" aria-hidden="true" tabindex="-1"></a>- a text</span>
+<span id="cb204-13"><a href="#cb204-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb204-14"><a href="#cb204-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb204-15"><a href="#cb204-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb205"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb205-1"><a href="#cb205-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<ul>
+<li>this is</li>
+<li>a list</li>
+</ul>
+<p>- this is - a text</p>
+</blockquote>
+<h4 data-number="2.2.1.20" id="option-debugextensions"><span
+class="header-section-number">2.2.1.20</span> Option
<code>debugExtensions</code></h4>
<dl>
<dt><code>debugExtensions</code> (default value:
@@ -2680,49 +3323,49 @@ grammar of markdown.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-13"><span
+<h5 class="unnumbered" id="latex-example-15"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>strike-through.lua</code> with the following content:</p>
-<div class="sourceCode" id="cb172"><pre
-class="sourceCode lua"><code class="sourceCode lua"><span id="cb172-1"><a href="#cb172-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> strike_through <span class="op">=</span> <span class="op">{</span></span>
-<span id="cb172-2"><a href="#cb172-2" aria-hidden="true" tabindex="-1"></a> api_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span>
-<span id="cb172-3"><a href="#cb172-3" aria-hidden="true" tabindex="-1"></a> grammar_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span>
-<span id="cb172-4"><a href="#cb172-4" aria-hidden="true" tabindex="-1"></a> finalize_grammar <span class="op">=</span> <span class="kw">function</span><span class="op">(</span>reader<span class="op">)</span></span>
-<span id="cb172-5"><a href="#cb172-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> nonspacechar <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> lpeg<span class="op">.</span>S<span class="op">(</span><span class="st">&quot;</span><span class="sc">\t</span><span class="st"> &quot;</span><span class="op">)</span></span>
-<span id="cb172-6"><a href="#cb172-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> doubleslashes <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="st">&quot;//&quot;</span><span class="op">)</span></span>
-<span id="cb172-7"><a href="#cb172-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span>p<span class="op">,</span> starter<span class="op">,</span> ender<span class="op">)</span></span>
-<span id="cb172-8"><a href="#cb172-8" aria-hidden="true" tabindex="-1"></a> ender <span class="op">=</span> lpeg<span class="op">.</span>B<span class="op">(</span>nonspacechar<span class="op">)</span> <span class="op">*</span> ender</span>
-<span id="cb172-9"><a href="#cb172-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span>starter <span class="op">*</span> <span class="op">#</span>nonspacechar</span>
-<span id="cb172-10"><a href="#cb172-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> lpeg<span class="op">.</span>Ct<span class="op">(</span>p <span class="op">*</span> <span class="op">(</span>p <span class="op">-</span> ender<span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> ender<span class="op">)</span></span>
-<span id="cb172-11"><a href="#cb172-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
-<span id="cb172-12"><a href="#cb172-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb172-13"><a href="#cb172-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> read_strike_through <span class="op">=</span> between<span class="op">(</span></span>
-<span id="cb172-14"><a href="#cb172-14" aria-hidden="true" tabindex="-1"></a> lpeg<span class="op">.</span>V<span class="op">(</span><span class="st">&quot;Inline&quot;</span><span class="op">),</span> doubleslashes<span class="op">,</span> doubleslashes</span>
-<span id="cb172-15"><a href="#cb172-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span>s<span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">&quot;</span><span class="sc">\\</span><span class="st">st{&quot;</span><span class="op">,</span> s<span class="op">,</span> <span class="st">&quot;}&quot;</span><span class="op">}</span> <span class="kw">end</span></span>
-<span id="cb172-16"><a href="#cb172-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb172-17"><a href="#cb172-17" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">&quot;Inline after Emph&quot;</span><span class="op">,</span> read_strike_through<span class="op">,</span></span>
-<span id="cb172-18"><a href="#cb172-18" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;StrikeThrough&quot;</span><span class="op">)</span></span>
-<span id="cb172-19"><a href="#cb172-19" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>add_special_character<span class="op">(</span><span class="st">&quot;/&quot;</span><span class="op">)</span></span>
-<span id="cb172-20"><a href="#cb172-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
-<span id="cb172-21"><a href="#cb172-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span>
-<span id="cb172-22"><a href="#cb172-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb172-23"><a href="#cb172-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> strike_through</span></code></pre></div>
+<div class="sourceCode" id="cb206"><pre
+class="sourceCode lua"><code class="sourceCode lua"><span id="cb206-1"><a href="#cb206-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">strike_through</span> <span class="op">=</span> <span class="op">{</span></span>
+<span id="cb206-2"><a href="#cb206-2" aria-hidden="true" tabindex="-1"></a> <span class="va">api_version</span> <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span>
+<span id="cb206-3"><a href="#cb206-3" aria-hidden="true" tabindex="-1"></a> <span class="va">grammar_version</span> <span class="op">=</span> <span class="dv">4</span><span class="op">,</span></span>
+<span id="cb206-4"><a href="#cb206-4" aria-hidden="true" tabindex="-1"></a> <span class="va">finalize_grammar</span> <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">reader</span><span class="op">)</span></span>
+<span id="cb206-5"><a href="#cb206-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">nonspacechar</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> <span class="va">lpeg</span><span class="op">.</span>S<span class="op">(</span><span class="st">&quot;</span><span class="sc">\t</span><span class="st"> &quot;</span><span class="op">)</span></span>
+<span id="cb206-6"><a href="#cb206-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">doubleslashes</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="st">&quot;//&quot;</span><span class="op">)</span></span>
+<span id="cb206-7"><a href="#cb206-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span><span class="va">p</span><span class="op">,</span> <span class="va">starter</span><span class="op">,</span> <span class="va">ender</span><span class="op">)</span></span>
+<span id="cb206-8"><a href="#cb206-8" aria-hidden="true" tabindex="-1"></a> <span class="va">ender</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>B<span class="op">(</span><span class="va">nonspacechar</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span></span>
+<span id="cb206-9"><a href="#cb206-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span><span class="va">starter</span> <span class="op">*</span> <span class="op">#</span><span class="va">nonspacechar</span></span>
+<span id="cb206-10"><a href="#cb206-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> <span class="va">lpeg</span><span class="op">.</span>Ct<span class="op">(</span><span class="va">p</span> <span class="op">*</span> <span class="op">(</span><span class="va">p</span> <span class="op">-</span> <span class="va">ender</span><span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span><span class="op">)</span></span>
+<span id="cb206-11"><a href="#cb206-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
+<span id="cb206-12"><a href="#cb206-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb206-13"><a href="#cb206-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">read_strike_through</span> <span class="op">=</span> between<span class="op">(</span></span>
+<span id="cb206-14"><a href="#cb206-14" aria-hidden="true" tabindex="-1"></a> <span class="va">lpeg</span><span class="op">.</span>V<span class="op">(</span><span class="st">&quot;Inline&quot;</span><span class="op">),</span> <span class="va">doubleslashes</span><span class="op">,</span> <span class="va">doubleslashes</span></span>
+<span id="cb206-15"><a href="#cb206-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span><span class="va">s</span><span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">&quot;</span><span class="sc">\\</span><span class="st">st{&quot;</span><span class="op">,</span> <span class="va">s</span><span class="op">,</span> <span class="st">&quot;}&quot;</span><span class="op">}</span> <span class="kw">end</span></span>
+<span id="cb206-16"><a href="#cb206-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb206-17"><a href="#cb206-17" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">&quot;Inline after LinkAndEmph&quot;</span><span class="op">,</span> <span class="va">read_strike_through</span><span class="op">,</span></span>
+<span id="cb206-18"><a href="#cb206-18" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;StrikeThrough&quot;</span><span class="op">)</span></span>
+<span id="cb206-19"><a href="#cb206-19" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>add_special_character<span class="op">(</span><span class="st">&quot;/&quot;</span><span class="op">)</span></span>
+<span id="cb206-20"><a href="#cb206-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
+<span id="cb206-21"><a href="#cb206-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span>
+<span id="cb206-22"><a href="#cb206-22" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb206-23"><a href="#cb206-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> <span class="va">strike_through</span></span></code></pre></div>
<p>Using a text editor, create also a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb173"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb173-1"><a href="#cb173-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb173-2"><a href="#cb173-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
-<span id="cb173-3"><a href="#cb173-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua,</span>
-<span id="cb173-4"><a href="#cb173-4" aria-hidden="true" tabindex="-1"></a> debugExtensions]{<span class="ex">markdown</span>}</span>
-<span id="cb173-5"><a href="#cb173-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb173-6"><a href="#cb173-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb173-7"><a href="#cb173-7" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span>
-<span id="cb173-8"><a href="#cb173-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb173-9"><a href="#cb173-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb207"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb207-1"><a href="#cb207-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb207-2"><a href="#cb207-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
+<span id="cb207-3"><a href="#cb207-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua,</span>
+<span id="cb207-4"><a href="#cb207-4" aria-hidden="true" tabindex="-1"></a> debugExtensions]{<span class="ex">markdown</span>}</span>
+<span id="cb207-5"><a href="#cb207-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb207-6"><a href="#cb207-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb207-7"><a href="#cb207-7" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span>
+<span id="cb207-8"><a href="#cb207-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb207-9"><a href="#cb207-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb174"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb174-1"><a href="#cb174-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb208"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb208-1"><a href="#cb208-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2731,44 +3374,48 @@ contain the following text:</p>
<p>Furthermore, a JSON document named
<code>document.debug-extensions.json</code> should also be produced and
contain the following text:</p>
-<div class="sourceCode" id="cb175"><pre
-class="sourceCode json"><code class="sourceCode json"><span id="cb175-1"><a href="#cb175-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span>
-<span id="cb175-2"><a href="#cb175-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;Block&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
-<span id="cb175-3"><a href="#cb175-3" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Blockquote&quot;</span><span class="ot">,</span></span>
-<span id="cb175-4"><a href="#cb175-4" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Verbatim&quot;</span><span class="ot">,</span></span>
-<span id="cb175-5"><a href="#cb175-5" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;ThematicBreak&quot;</span><span class="ot">,</span></span>
-<span id="cb175-6"><a href="#cb175-6" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;BulletList&quot;</span><span class="ot">,</span></span>
-<span id="cb175-7"><a href="#cb175-7" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;OrderedList&quot;</span><span class="ot">,</span></span>
-<span id="cb175-8"><a href="#cb175-8" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Heading&quot;</span><span class="ot">,</span></span>
-<span id="cb175-9"><a href="#cb175-9" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;DisplayHtml&quot;</span><span class="ot">,</span></span>
-<span id="cb175-10"><a href="#cb175-10" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Paragraph&quot;</span><span class="ot">,</span></span>
-<span id="cb175-11"><a href="#cb175-11" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Plain&quot;</span></span>
-<span id="cb175-12"><a href="#cb175-12" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span>
-<span id="cb175-13"><a href="#cb175-13" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;Inline&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
-<span id="cb175-14"><a href="#cb175-14" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Str&quot;</span><span class="ot">,</span></span>
-<span id="cb175-15"><a href="#cb175-15" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Space&quot;</span><span class="ot">,</span></span>
-<span id="cb175-16"><a href="#cb175-16" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Endline&quot;</span><span class="ot">,</span></span>
-<span id="cb175-17"><a href="#cb175-17" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;UlOrStarLine&quot;</span><span class="ot">,</span></span>
-<span id="cb175-18"><a href="#cb175-18" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Strong&quot;</span><span class="ot">,</span></span>
-<span id="cb175-19"><a href="#cb175-19" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Emph&quot;</span><span class="ot">,</span></span>
-<span id="cb175-20"><a href="#cb175-20" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;StrikeThrough (user-defined </span><span class="ch">\&quot;</span><span class="st">./strike-through.lua</span><span class="ch">\&quot;</span><span class="st"> syntax extension)&quot;</span><span class="ot">,</span></span>
-<span id="cb175-21"><a href="#cb175-21" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Link&quot;</span><span class="ot">,</span></span>
-<span id="cb175-22"><a href="#cb175-22" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Image&quot;</span><span class="ot">,</span></span>
-<span id="cb175-23"><a href="#cb175-23" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Code&quot;</span><span class="ot">,</span></span>
-<span id="cb175-24"><a href="#cb175-24" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;AutoLinkUrl&quot;</span><span class="ot">,</span></span>
-<span id="cb175-25"><a href="#cb175-25" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;AutoLinkEmail&quot;</span><span class="ot">,</span></span>
-<span id="cb175-26"><a href="#cb175-26" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;AutoLinkRelativeReference&quot;</span><span class="ot">,</span></span>
-<span id="cb175-27"><a href="#cb175-27" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;InlineHtml&quot;</span><span class="ot">,</span></span>
-<span id="cb175-28"><a href="#cb175-28" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;HtmlEntity&quot;</span><span class="ot">,</span></span>
-<span id="cb175-29"><a href="#cb175-29" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;EscapedChar&quot;</span><span class="ot">,</span></span>
-<span id="cb175-30"><a href="#cb175-30" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Smart&quot;</span><span class="ot">,</span></span>
-<span id="cb175-31"><a href="#cb175-31" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Symbol&quot;</span></span>
-<span id="cb175-32"><a href="#cb175-32" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span></span>
-<span id="cb175-33"><a href="#cb175-33" aria-hidden="true" tabindex="-1"></a><span class="fu">}</span></span></code></pre></div>
+<div class="sourceCode" id="cb209"><pre
+class="sourceCode json"><code class="sourceCode json"><span id="cb209-1"><a href="#cb209-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span>
+<span id="cb209-2"><a href="#cb209-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;Block&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
+<span id="cb209-3"><a href="#cb209-3" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Blockquote&quot;</span><span class="ot">,</span></span>
+<span id="cb209-4"><a href="#cb209-4" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Verbatim&quot;</span><span class="ot">,</span></span>
+<span id="cb209-5"><a href="#cb209-5" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;FencedCode (built-in fenced_code syntax extension)&quot;</span><span class="ot">,</span></span>
+<span id="cb209-6"><a href="#cb209-6" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;ThematicBreak&quot;</span><span class="ot">,</span></span>
+<span id="cb209-7"><a href="#cb209-7" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;BulletList&quot;</span><span class="ot">,</span></span>
+<span id="cb209-8"><a href="#cb209-8" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;OrderedList&quot;</span><span class="ot">,</span></span>
+<span id="cb209-9"><a href="#cb209-9" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;DisplayHtml&quot;</span><span class="ot">,</span></span>
+<span id="cb209-10"><a href="#cb209-10" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Heading&quot;</span></span>
+<span id="cb209-11"><a href="#cb209-11" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span>
+<span id="cb209-12"><a href="#cb209-12" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;BlockOrParagraph&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
+<span id="cb209-13"><a href="#cb209-13" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Block&quot;</span><span class="ot">,</span></span>
+<span id="cb209-14"><a href="#cb209-14" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Paragraph&quot;</span><span class="ot">,</span></span>
+<span id="cb209-15"><a href="#cb209-15" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Plain&quot;</span></span>
+<span id="cb209-16"><a href="#cb209-16" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span>
+<span id="cb209-17"><a href="#cb209-17" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;EndlineExceptions&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
+<span id="cb209-18"><a href="#cb209-18" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;EndlineExceptions (built-in fenced_code syntax extension)&quot;</span></span>
+<span id="cb209-19"><a href="#cb209-19" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span><span class="fu">,</span></span>
+<span id="cb209-20"><a href="#cb209-20" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;Inline&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
+<span id="cb209-21"><a href="#cb209-21" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Str&quot;</span><span class="ot">,</span></span>
+<span id="cb209-22"><a href="#cb209-22" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Space&quot;</span><span class="ot">,</span></span>
+<span id="cb209-23"><a href="#cb209-23" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Endline&quot;</span><span class="ot">,</span></span>
+<span id="cb209-24"><a href="#cb209-24" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;EndlineBreak&quot;</span><span class="ot">,</span></span>
+<span id="cb209-25"><a href="#cb209-25" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;LinkAndEmph&quot;</span><span class="ot">,</span></span>
+<span id="cb209-26"><a href="#cb209-26" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;StrikeThrough (user-defined </span><span class="ch">\&quot;</span><span class="st">./strike-through.lua</span><span class="ch">\&quot;</span><span class="st"> syntax extension)&quot;</span><span class="ot">,</span></span>
+<span id="cb209-27"><a href="#cb209-27" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Code&quot;</span><span class="ot">,</span></span>
+<span id="cb209-28"><a href="#cb209-28" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;AutoLinkUrl&quot;</span><span class="ot">,</span></span>
+<span id="cb209-29"><a href="#cb209-29" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;AutoLinkEmail&quot;</span><span class="ot">,</span></span>
+<span id="cb209-30"><a href="#cb209-30" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;AutoLinkRelativeReference&quot;</span><span class="ot">,</span></span>
+<span id="cb209-31"><a href="#cb209-31" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;InlineHtml&quot;</span><span class="ot">,</span></span>
+<span id="cb209-32"><a href="#cb209-32" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;HtmlEntity&quot;</span><span class="ot">,</span></span>
+<span id="cb209-33"><a href="#cb209-33" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;EscapedChar&quot;</span><span class="ot">,</span></span>
+<span id="cb209-34"><a href="#cb209-34" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Smart&quot;</span><span class="ot">,</span></span>
+<span id="cb209-35"><a href="#cb209-35" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;Symbol&quot;</span></span>
+<span id="cb209-36"><a href="#cb209-36" aria-hidden="true" tabindex="-1"></a> <span class="ot">]</span></span>
+<span id="cb209-37"><a href="#cb209-37" aria-hidden="true" tabindex="-1"></a><span class="fu">}</span></span></code></pre></div>
<p>This output shows us that our user-defined syntax extension has been
correctly inserted to the grammar of markdown.</p>
-<h4 data-number="2.2.1.16" id="option-definitionlists"><span
-class="header-section-number">2.2.1.16</span> Option
+<h4 data-number="2.2.1.21" id="option-definitionlists"><span
+class="header-section-number">2.2.1.21</span> Option
<code>definitionLists</code></h4>
<dl>
<dt><code>definitionLists</code> (default value:
@@ -2778,18 +3425,18 @@ class="header-section-number">2.2.1.16</span> Option
<dt>true</dt>
<dd>
<p>Enable the pandoc definition list syntax extension:</p>
-<div class="sourceCode" id="cb176"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb176-1"><a href="#cb176-1" aria-hidden="true" tabindex="-1"></a>Term 1</span>
-<span id="cb176-2"><a href="#cb176-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb176-3"><a href="#cb176-3" aria-hidden="true" tabindex="-1"></a>: Definition 1</span>
-<span id="cb176-4"><a href="#cb176-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb176-5"><a href="#cb176-5" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span>
-<span id="cb176-6"><a href="#cb176-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb176-7"><a href="#cb176-7" aria-hidden="true" tabindex="-1"></a>: Definition 2</span>
-<span id="cb176-8"><a href="#cb176-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb176-9"><a href="#cb176-9" aria-hidden="true" tabindex="-1"></a><span class="in"> { some code, part of Definition 2 }</span></span>
-<span id="cb176-10"><a href="#cb176-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb176-11"><a href="#cb176-11" aria-hidden="true" tabindex="-1"></a><span class="in"> Third paragraph of definition 2.</span></span></code></pre></div>
+<div class="sourceCode" id="cb210"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb210-1"><a href="#cb210-1" aria-hidden="true" tabindex="-1"></a>Term 1</span>
+<span id="cb210-2"><a href="#cb210-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb210-3"><a href="#cb210-3" aria-hidden="true" tabindex="-1"></a>: Definition 1</span>
+<span id="cb210-4"><a href="#cb210-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb210-5"><a href="#cb210-5" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span>
+<span id="cb210-6"><a href="#cb210-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb210-7"><a href="#cb210-7" aria-hidden="true" tabindex="-1"></a>: Definition 2</span>
+<span id="cb210-8"><a href="#cb210-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb210-9"><a href="#cb210-9" aria-hidden="true" tabindex="-1"></a><span class="in"> { some code, part of Definition 2 }</span></span>
+<span id="cb210-10"><a href="#cb210-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb210-11"><a href="#cb210-11" aria-hidden="true" tabindex="-1"></a><span class="in"> Third paragraph of definition 2.</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -2802,31 +3449,31 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb176-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-14"><span
+<h5 class="unnumbered" id="latex-example-16"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb177"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb177-1"><a href="#cb177-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb177-2"><a href="#cb177-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists]{<span class="ex">markdown</span>}</span>
-<span id="cb177-3"><a href="#cb177-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb177-4"><a href="#cb177-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb177-5"><a href="#cb177-5" aria-hidden="true" tabindex="-1"></a>Term 1</span>
-<span id="cb177-6"><a href="#cb177-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb177-7"><a href="#cb177-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span>
-<span id="cb177-8"><a href="#cb177-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb177-9"><a href="#cb177-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span>
-<span id="cb177-10"><a href="#cb177-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb177-11"><a href="#cb177-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span>
-<span id="cb177-12"><a href="#cb177-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb177-13"><a href="#cb177-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span>
-<span id="cb177-14"><a href="#cb177-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb177-15"><a href="#cb177-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span>
-<span id="cb177-16"><a href="#cb177-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb177-17"><a href="#cb177-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb211"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb211-1"><a href="#cb211-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb211-2"><a href="#cb211-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists]{<span class="ex">markdown</span>}</span>
+<span id="cb211-3"><a href="#cb211-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb211-4"><a href="#cb211-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb211-5"><a href="#cb211-5" aria-hidden="true" tabindex="-1"></a>Term 1</span>
+<span id="cb211-6"><a href="#cb211-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb211-7"><a href="#cb211-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span>
+<span id="cb211-8"><a href="#cb211-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb211-9"><a href="#cb211-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span>
+<span id="cb211-10"><a href="#cb211-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb211-11"><a href="#cb211-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span>
+<span id="cb211-12"><a href="#cb211-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb211-13"><a href="#cb211-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span>
+<span id="cb211-14"><a href="#cb211-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb211-15"><a href="#cb211-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span>
+<span id="cb211-16"><a href="#cb211-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb211-17"><a href="#cb211-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb178"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb178-1"><a href="#cb178-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb212"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb212-1"><a href="#cb212-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2843,31 +3490,31 @@ contain the following text:</p>
</dd>
</dl>
</blockquote>
-<h5 class="unnumbered" id="context-example-9">Con<span
+<h5 class="unnumbered" id="context-example-11">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb180"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb180-1"><a href="#cb180-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb180-2"><a href="#cb180-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[definitionLists = yes]</span>
-<span id="cb180-3"><a href="#cb180-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb180-4"><a href="#cb180-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb180-5"><a href="#cb180-5" aria-hidden="true" tabindex="-1"></a>Term 1</span>
-<span id="cb180-6"><a href="#cb180-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb180-7"><a href="#cb180-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span>
-<span id="cb180-8"><a href="#cb180-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb180-9"><a href="#cb180-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span>
-<span id="cb180-10"><a href="#cb180-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb180-11"><a href="#cb180-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span>
-<span id="cb180-12"><a href="#cb180-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb180-13"><a href="#cb180-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span>
-<span id="cb180-14"><a href="#cb180-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb180-15"><a href="#cb180-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span>
-<span id="cb180-16"><a href="#cb180-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb180-17"><a href="#cb180-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb214"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb214-1"><a href="#cb214-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb214-2"><a href="#cb214-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[definitionLists = yes]</span>
+<span id="cb214-3"><a href="#cb214-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb214-4"><a href="#cb214-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb214-5"><a href="#cb214-5" aria-hidden="true" tabindex="-1"></a>Term 1</span>
+<span id="cb214-6"><a href="#cb214-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb214-7"><a href="#cb214-7" aria-hidden="true" tabindex="-1"></a>: Definition 1</span>
+<span id="cb214-8"><a href="#cb214-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb214-9"><a href="#cb214-9" aria-hidden="true" tabindex="-1"></a>Term 2 with *inline markup*</span>
+<span id="cb214-10"><a href="#cb214-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb214-11"><a href="#cb214-11" aria-hidden="true" tabindex="-1"></a>: Definition 2</span>
+<span id="cb214-12"><a href="#cb214-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb214-13"><a href="#cb214-13" aria-hidden="true" tabindex="-1"></a> { some code, part of Definition 2 }</span>
+<span id="cb214-14"><a href="#cb214-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb214-15"><a href="#cb214-15" aria-hidden="true" tabindex="-1"></a> Third paragraph of definition 2.</span>
+<span id="cb214-16"><a href="#cb214-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb214-17"><a href="#cb214-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb181"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb181-1"><a href="#cb181-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb215"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb215-1"><a href="#cb215-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -2884,81 +3531,8 @@ contain the following text:</p>
</dd>
</dl>
</blockquote>
-<h4 data-number="2.2.1.17" id="option-eagercache"><span
-class="header-section-number">2.2.1.17</span> Option
-<code>eagerCache</code></h4>
-<dl>
-<dt><code>eagerCache</code> (default value: <code>true</code>)</dt>
-<dd>
-<dl>
-<dt>true</dt>
-<dd>
-<p>Converted markdown documents will be cached in
-<strong><code>cacheDir</code></strong>. This can be useful for
-post-processing the converted documents and for recovering historical
-versions of the documents from the cache. However, it also produces a
-large number of auxiliary files on the disk and obscures the output of
-the Lua command-line interface when it is used for plumbing.</p>
-<p>This behavior will always be used if the
-<strong><code>finalizeCache</code></strong> option is enabled.</p>
-</dd>
-</dl>
-</dd>
-<dd>
-<dl>
-<dt>false</dt>
-<dd>
-<p>Converted markdown documents will not be cached. This decreases the
-number of auxiliary files that we produce and makes it easier to use the
-Lua command-line interface for plumbing.</p>
-<p>This behavior will only be used when the
-<strong><code>finalizeCache</code></strong> option is disabled.
-Recursive nesting of markdown document fragments is undefined behavior
-when <strong><code>eagerCache</code></strong> is disabled.</p>
-</dd>
-</dl>
-</dd>
-</dl>
-<h5 class="unnumbered" id="lua-module-example-7">Lua Module Example</h5>
-<p>Using a text editor, create a text document named
-<code>hello.md</code> with the following content:</p>
-<div class="sourceCode" id="cb183"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb183-1"><a href="#cb183-1" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal with the
-<strong><code>eagerCache</code></strong> option disabled:</p>
-<div class="sourceCode" id="cb184"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb184-1"><a href="#cb184-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ eagerCache=false <span class="at">--</span> hello.md hello.tex</span></code></pre></div>
-<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
-CLI script file, such as
-<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
-or <code>C:\Users\</code>⟨<em>Your
-username</em>⟩<code>\texmf\scripts\markdown\markdown-cli.lua</code> on
-Windows systems. Use the command
-<code>kpsewhich -a markdown-cli.lua</code> to locate the Lua CLI script
-file using <a href="https://tug.org/kpathsea/"
-title="Kpathsea - TeX Users Group">Kpathsea</a>.</p>
-<p>A <span class="tex">T<sub>e</sub>X</span> document named
-<code>hello.tex</code> should be produced and contain the following
-code:</p>
-<div class="sourceCode" id="cb185"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb185-1"><a href="#cb185-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div>
-<hr />
-<p>Invoke LuaTeX from the terminal again, this time with the
-<strong><code>eagerCache</code></strong> option enabled:</p>
-<div class="sourceCode" id="cb186"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb186-1"><a href="#cb186-1" aria-hidden="true" tabindex="-1"></a>texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex</span></code></pre></div>
-<p>A <span class="tex">T<sub>e</sub>X</span> document named
-<code>hello.tex</code> should be produced and contain the following
-code:</p>
-<div class="sourceCode" id="cb187"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb187-1"><a href="#cb187-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> ./⟨hash⟩.md.tex<span class="fu">\relax</span></span></code></pre></div>
-<p>Additionally, a <span class="tex">T<sub>e</sub>X</span> document
-named <code>⟨hash⟩.md.tex</code> should be produced and contain the
-following code:</p>
-<div class="sourceCode" id="cb188"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb188-1"><a href="#cb188-1" aria-hidden="true" tabindex="-1"></a>Hello <span class="fu">\markdownRendererEmphasis</span>{world}!<span class="fu">\relax</span></span></code></pre></div>
-<h4 data-number="2.2.1.18" id="option-expectjekylldata"><span
-class="header-section-number">2.2.1.18</span> Option
+<h4 data-number="2.2.1.22" id="option-expectjekylldata"><span
+class="header-section-number">2.2.1.22</span> Option
<code>expectJekyllData</code></h4>
<dl>
<dt><code>expectJekyllData</code> (default value:
@@ -2972,26 +3546,26 @@ then a markdown document may begin with <abbr>yaml</abbr> metadata if
and only if the metadata begin with the end-of-directives marker
(<code>---</code>) and they end with either the end-of-directives or the
end-of-document marker (<code>...</code>):</p>
-<div class="sourceCode" id="cb189"><pre
-class="sourceCode latex"><code class="sourceCode latex"><span id="cb189-1"><a href="#cb189-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb189-2"><a href="#cb189-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb189-3"><a href="#cb189-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb189-4"><a href="#cb189-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb189-5"><a href="#cb189-5" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb189-6"><a href="#cb189-6" aria-hidden="true" tabindex="-1"></a>- this</span>
-<span id="cb189-7"><a href="#cb189-7" aria-hidden="true" tabindex="-1"></a>- is</span>
-<span id="cb189-8"><a href="#cb189-8" aria-hidden="true" tabindex="-1"></a>- YAML</span>
-<span id="cb189-9"><a href="#cb189-9" aria-hidden="true" tabindex="-1"></a>...</span>
-<span id="cb189-10"><a href="#cb189-10" aria-hidden="true" tabindex="-1"></a>- followed</span>
-<span id="cb189-11"><a href="#cb189-11" aria-hidden="true" tabindex="-1"></a>- by</span>
-<span id="cb189-12"><a href="#cb189-12" aria-hidden="true" tabindex="-1"></a>- Markdown</span>
-<span id="cb189-13"><a href="#cb189-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb189-14"><a href="#cb189-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb189-15"><a href="#cb189-15" aria-hidden="true" tabindex="-1"></a>- this</span>
-<span id="cb189-16"><a href="#cb189-16" aria-hidden="true" tabindex="-1"></a>- is</span>
-<span id="cb189-17"><a href="#cb189-17" aria-hidden="true" tabindex="-1"></a>- Markdown</span>
-<span id="cb189-18"><a href="#cb189-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb189-19"><a href="#cb189-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb217"><pre
+class="sourceCode latex"><code class="sourceCode latex"><span id="cb217-1"><a href="#cb217-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb217-2"><a href="#cb217-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb217-3"><a href="#cb217-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb217-4"><a href="#cb217-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb217-5"><a href="#cb217-5" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb217-6"><a href="#cb217-6" aria-hidden="true" tabindex="-1"></a>- this</span>
+<span id="cb217-7"><a href="#cb217-7" aria-hidden="true" tabindex="-1"></a>- is</span>
+<span id="cb217-8"><a href="#cb217-8" aria-hidden="true" tabindex="-1"></a>- YAML</span>
+<span id="cb217-9"><a href="#cb217-9" aria-hidden="true" tabindex="-1"></a>...</span>
+<span id="cb217-10"><a href="#cb217-10" aria-hidden="true" tabindex="-1"></a>- followed</span>
+<span id="cb217-11"><a href="#cb217-11" aria-hidden="true" tabindex="-1"></a>- by</span>
+<span id="cb217-12"><a href="#cb217-12" aria-hidden="true" tabindex="-1"></a>- Markdown</span>
+<span id="cb217-13"><a href="#cb217-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb217-14"><a href="#cb217-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb217-15"><a href="#cb217-15" aria-hidden="true" tabindex="-1"></a>- this</span>
+<span id="cb217-16"><a href="#cb217-16" aria-hidden="true" tabindex="-1"></a>- is</span>
+<span id="cb217-17"><a href="#cb217-17" aria-hidden="true" tabindex="-1"></a>- Markdown</span>
+<span id="cb217-18"><a href="#cb217-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb217-19"><a href="#cb217-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -3002,63 +3576,63 @@ class="sourceCode latex"><code class="sourceCode latex"><span id="cb189-1"><a hr
<p>When the <strong><code>jekyllData</code></strong> option is enabled,
then a markdown document may begin directly with <abbr>yaml</abbr>
metadata and may contain nothing but <abbr>yaml</abbr> metadata.</p>
-<div class="sourceCode" id="cb190"><pre
-class="sourceCode latex"><code class="sourceCode latex"><span id="cb190-1"><a href="#cb190-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb190-2"><a href="#cb190-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData, expectJekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb190-3"><a href="#cb190-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb190-4"><a href="#cb190-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb190-5"><a href="#cb190-5" aria-hidden="true" tabindex="-1"></a>- this</span>
-<span id="cb190-6"><a href="#cb190-6" aria-hidden="true" tabindex="-1"></a>- is</span>
-<span id="cb190-7"><a href="#cb190-7" aria-hidden="true" tabindex="-1"></a>- YAML</span>
-<span id="cb190-8"><a href="#cb190-8" aria-hidden="true" tabindex="-1"></a>...</span>
-<span id="cb190-9"><a href="#cb190-9" aria-hidden="true" tabindex="-1"></a>- followed</span>
-<span id="cb190-10"><a href="#cb190-10" aria-hidden="true" tabindex="-1"></a>- by</span>
-<span id="cb190-11"><a href="#cb190-11" aria-hidden="true" tabindex="-1"></a>- Markdown</span>
-<span id="cb190-12"><a href="#cb190-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb190-13"><a href="#cb190-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb190-14"><a href="#cb190-14" aria-hidden="true" tabindex="-1"></a>- this</span>
-<span id="cb190-15"><a href="#cb190-15" aria-hidden="true" tabindex="-1"></a>- is</span>
-<span id="cb190-16"><a href="#cb190-16" aria-hidden="true" tabindex="-1"></a>- YAML</span>
-<span id="cb190-17"><a href="#cb190-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb190-18"><a href="#cb190-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb218"><pre
+class="sourceCode latex"><code class="sourceCode latex"><span id="cb218-1"><a href="#cb218-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb218-2"><a href="#cb218-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData, expectJekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb218-3"><a href="#cb218-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb218-4"><a href="#cb218-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb218-5"><a href="#cb218-5" aria-hidden="true" tabindex="-1"></a>- this</span>
+<span id="cb218-6"><a href="#cb218-6" aria-hidden="true" tabindex="-1"></a>- is</span>
+<span id="cb218-7"><a href="#cb218-7" aria-hidden="true" tabindex="-1"></a>- YAML</span>
+<span id="cb218-8"><a href="#cb218-8" aria-hidden="true" tabindex="-1"></a>...</span>
+<span id="cb218-9"><a href="#cb218-9" aria-hidden="true" tabindex="-1"></a>- followed</span>
+<span id="cb218-10"><a href="#cb218-10" aria-hidden="true" tabindex="-1"></a>- by</span>
+<span id="cb218-11"><a href="#cb218-11" aria-hidden="true" tabindex="-1"></a>- Markdown</span>
+<span id="cb218-12"><a href="#cb218-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb218-13"><a href="#cb218-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb218-14"><a href="#cb218-14" aria-hidden="true" tabindex="-1"></a>- this</span>
+<span id="cb218-15"><a href="#cb218-15" aria-hidden="true" tabindex="-1"></a>- is</span>
+<span id="cb218-16"><a href="#cb218-16" aria-hidden="true" tabindex="-1"></a>- YAML</span>
+<span id="cb218-17"><a href="#cb218-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb218-18"><a href="#cb218-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
</dd>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-15"><span
+<h5 class="unnumbered" id="latex-example-17"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>jane-doe.yml</code> with the following content:</p>
-<div class="sourceCode" id="cb191"><pre
-class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb191-1"><a href="#cb191-1" aria-hidden="true" tabindex="-1"></a><span class="fu">name</span><span class="kw">:</span><span class="at"> Jane Doe</span></span>
-<span id="cb191-2"><a href="#cb191-2" aria-hidden="true" tabindex="-1"></a><span class="fu">age</span><span class="kw">:</span><span class="at"> </span><span class="dv">99</span></span></code></pre></div>
+<div class="sourceCode" id="cb219"><pre
+class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb219-1"><a href="#cb219-1" aria-hidden="true" tabindex="-1"></a><span class="fu">name</span><span class="kw">:</span><span class="at"> Jane Doe</span></span>
+<span id="cb219-2"><a href="#cb219-2" aria-hidden="true" tabindex="-1"></a><span class="fu">age</span><span class="kw">:</span><span class="at"> </span><span class="dv">99</span></span></code></pre></div>
<p>Using a text editor, create also a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb192"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb192-1"><a href="#cb192-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb192-2"><a href="#cb192-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb192-3"><a href="#cb192-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb192-4"><a href="#cb192-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
-<span id="cb192-5"><a href="#cb192-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
-<span id="cb192-6"><a href="#cb192-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
-<span id="cb192-7"><a href="#cb192-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb192-8"><a href="#cb192-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb192-9"><a href="#cb192-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
-<span id="cb192-10"><a href="#cb192-10" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb192-11"><a href="#cb192-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb192-12"><a href="#cb192-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb192-13"><a href="#cb192-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[expectJekyllData]{jane-doe.yml}</span>
-<span id="cb192-14"><a href="#cb192-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb220"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb220-1"><a href="#cb220-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb220-2"><a href="#cb220-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb220-3"><a href="#cb220-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb220-4"><a href="#cb220-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
+<span id="cb220-5"><a href="#cb220-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
+<span id="cb220-6"><a href="#cb220-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
+<span id="cb220-7"><a href="#cb220-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb220-8"><a href="#cb220-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb220-9"><a href="#cb220-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
+<span id="cb220-10"><a href="#cb220-10" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb220-11"><a href="#cb220-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb220-12"><a href="#cb220-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb220-13"><a href="#cb220-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[expectJekyllData]{jane-doe.yml}</span>
+<span id="cb220-14"><a href="#cb220-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb193"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb193-1"><a href="#cb193-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb221"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb221-1"><a href="#cb221-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h4 data-number="2.2.1.19" id="option-extensions"><span
-class="header-section-number">2.2.1.19</span> Option
+<h4 data-number="2.2.1.23" id="option-extensions"><span
+class="header-section-number">2.2.1.23</span> Option
<code>extensions</code></h4>
<dl>
<dt><code>extensions</code> (default value: <code>{}</code>)</dt>
@@ -3070,55 +3644,55 @@ working directory but also in the <span
class="tex">T<sub>e</sub>X</span> directory structure.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-16"><span
+<h5 class="unnumbered" id="latex-example-18"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>strike-through.lua</code> with the following content:</p>
-<div class="sourceCode" id="cb194"><pre
-class="sourceCode lua"><code class="sourceCode lua"><span id="cb194-1"><a href="#cb194-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> strike_through <span class="op">=</span> <span class="op">{</span></span>
-<span id="cb194-2"><a href="#cb194-2" aria-hidden="true" tabindex="-1"></a> api_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span>
-<span id="cb194-3"><a href="#cb194-3" aria-hidden="true" tabindex="-1"></a> grammar_version <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span>
-<span id="cb194-4"><a href="#cb194-4" aria-hidden="true" tabindex="-1"></a> finalize_grammar <span class="op">=</span> <span class="kw">function</span><span class="op">(</span>reader<span class="op">)</span></span>
-<span id="cb194-5"><a href="#cb194-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> nonspacechar <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> lpeg<span class="op">.</span>S<span class="op">(</span><span class="st">&quot;</span><span class="sc">\t</span><span class="st"> &quot;</span><span class="op">)</span></span>
-<span id="cb194-6"><a href="#cb194-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> doubleslashes <span class="op">=</span> lpeg<span class="op">.</span>P<span class="op">(</span><span class="st">&quot;//&quot;</span><span class="op">)</span></span>
-<span id="cb194-7"><a href="#cb194-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span>p<span class="op">,</span> starter<span class="op">,</span> ender<span class="op">)</span></span>
-<span id="cb194-8"><a href="#cb194-8" aria-hidden="true" tabindex="-1"></a> ender <span class="op">=</span> lpeg<span class="op">.</span>B<span class="op">(</span>nonspacechar<span class="op">)</span> <span class="op">*</span> ender</span>
-<span id="cb194-9"><a href="#cb194-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span>starter <span class="op">*</span> <span class="op">#</span>nonspacechar</span>
-<span id="cb194-10"><a href="#cb194-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> lpeg<span class="op">.</span>Ct<span class="op">(</span>p <span class="op">*</span> <span class="op">(</span>p <span class="op">-</span> ender<span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> ender<span class="op">)</span></span>
-<span id="cb194-11"><a href="#cb194-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
-<span id="cb194-12"><a href="#cb194-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb194-13"><a href="#cb194-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> read_strike_through <span class="op">=</span> between<span class="op">(</span></span>
-<span id="cb194-14"><a href="#cb194-14" aria-hidden="true" tabindex="-1"></a> lpeg<span class="op">.</span>V<span class="op">(</span><span class="st">&quot;Inline&quot;</span><span class="op">),</span> doubleslashes<span class="op">,</span> doubleslashes</span>
-<span id="cb194-15"><a href="#cb194-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span>s<span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">&quot;</span><span class="sc">\\</span><span class="st">st{&quot;</span><span class="op">,</span> s<span class="op">,</span> <span class="st">&quot;}&quot;</span><span class="op">}</span> <span class="kw">end</span></span>
-<span id="cb194-16"><a href="#cb194-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb194-17"><a href="#cb194-17" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">&quot;Inline after Emph&quot;</span><span class="op">,</span> read_strike_through<span class="op">,</span></span>
-<span id="cb194-18"><a href="#cb194-18" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;StrikeThrough&quot;</span><span class="op">)</span></span>
-<span id="cb194-19"><a href="#cb194-19" aria-hidden="true" tabindex="-1"></a> reader<span class="op">.</span>add_special_character<span class="op">(</span><span class="st">&quot;/&quot;</span><span class="op">)</span></span>
-<span id="cb194-20"><a href="#cb194-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
-<span id="cb194-21"><a href="#cb194-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span>
-<span id="cb194-22"><a href="#cb194-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb194-23"><a href="#cb194-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> strike_through</span></code></pre></div>
+<div class="sourceCode" id="cb222"><pre
+class="sourceCode lua"><code class="sourceCode lua"><span id="cb222-1"><a href="#cb222-1" aria-hidden="true" tabindex="-1"></a><span class="kw">local</span> <span class="va">strike_through</span> <span class="op">=</span> <span class="op">{</span></span>
+<span id="cb222-2"><a href="#cb222-2" aria-hidden="true" tabindex="-1"></a> <span class="va">api_version</span> <span class="op">=</span> <span class="dv">2</span><span class="op">,</span></span>
+<span id="cb222-3"><a href="#cb222-3" aria-hidden="true" tabindex="-1"></a> <span class="va">grammar_version</span> <span class="op">=</span> <span class="dv">4</span><span class="op">,</span></span>
+<span id="cb222-4"><a href="#cb222-4" aria-hidden="true" tabindex="-1"></a> <span class="va">finalize_grammar</span> <span class="op">=</span> <span class="kw">function</span><span class="op">(</span><span class="va">reader</span><span class="op">)</span></span>
+<span id="cb222-5"><a href="#cb222-5" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">nonspacechar</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="dv">1</span><span class="op">)</span> <span class="op">-</span> <span class="va">lpeg</span><span class="op">.</span>S<span class="op">(</span><span class="st">&quot;</span><span class="sc">\t</span><span class="st"> &quot;</span><span class="op">)</span></span>
+<span id="cb222-6"><a href="#cb222-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">doubleslashes</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>P<span class="op">(</span><span class="st">&quot;//&quot;</span><span class="op">)</span></span>
+<span id="cb222-7"><a href="#cb222-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="kw">function</span> between<span class="op">(</span><span class="va">p</span><span class="op">,</span> <span class="va">starter</span><span class="op">,</span> <span class="va">ender</span><span class="op">)</span></span>
+<span id="cb222-8"><a href="#cb222-8" aria-hidden="true" tabindex="-1"></a> <span class="va">ender</span> <span class="op">=</span> <span class="va">lpeg</span><span class="op">.</span>B<span class="op">(</span><span class="va">nonspacechar</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span></span>
+<span id="cb222-9"><a href="#cb222-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="op">(</span><span class="va">starter</span> <span class="op">*</span> <span class="op">#</span><span class="va">nonspacechar</span></span>
+<span id="cb222-10"><a href="#cb222-10" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span> <span class="va">lpeg</span><span class="op">.</span>Ct<span class="op">(</span><span class="va">p</span> <span class="op">*</span> <span class="op">(</span><span class="va">p</span> <span class="op">-</span> <span class="va">ender</span><span class="op">)^</span><span class="dv">0</span><span class="op">)</span> <span class="op">*</span> <span class="va">ender</span><span class="op">)</span></span>
+<span id="cb222-11"><a href="#cb222-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
+<span id="cb222-12"><a href="#cb222-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb222-13"><a href="#cb222-13" aria-hidden="true" tabindex="-1"></a> <span class="kw">local</span> <span class="va">read_strike_through</span> <span class="op">=</span> between<span class="op">(</span></span>
+<span id="cb222-14"><a href="#cb222-14" aria-hidden="true" tabindex="-1"></a> <span class="va">lpeg</span><span class="op">.</span>V<span class="op">(</span><span class="st">&quot;Inline&quot;</span><span class="op">),</span> <span class="va">doubleslashes</span><span class="op">,</span> <span class="va">doubleslashes</span></span>
+<span id="cb222-15"><a href="#cb222-15" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span> <span class="op">/</span> <span class="kw">function</span><span class="op">(</span><span class="va">s</span><span class="op">)</span> <span class="cf">return</span> <span class="op">{</span><span class="st">&quot;</span><span class="sc">\\</span><span class="st">st{&quot;</span><span class="op">,</span> <span class="va">s</span><span class="op">,</span> <span class="st">&quot;}&quot;</span><span class="op">}</span> <span class="kw">end</span></span>
+<span id="cb222-16"><a href="#cb222-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb222-17"><a href="#cb222-17" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>insert_pattern<span class="op">(</span><span class="st">&quot;Inline after LinkAndEmph&quot;</span><span class="op">,</span> <span class="va">read_strike_through</span><span class="op">,</span></span>
+<span id="cb222-18"><a href="#cb222-18" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;StrikeThrough&quot;</span><span class="op">)</span></span>
+<span id="cb222-19"><a href="#cb222-19" aria-hidden="true" tabindex="-1"></a> <span class="va">reader</span><span class="op">.</span>add_special_character<span class="op">(</span><span class="st">&quot;/&quot;</span><span class="op">)</span></span>
+<span id="cb222-20"><a href="#cb222-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">end</span></span>
+<span id="cb222-21"><a href="#cb222-21" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span>
+<span id="cb222-22"><a href="#cb222-22" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb222-23"><a href="#cb222-23" aria-hidden="true" tabindex="-1"></a><span class="cf">return</span> <span class="va">strike_through</span></span></code></pre></div>
<p>Using a text editor, create also a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb195"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb195-1"><a href="#cb195-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb195-2"><a href="#cb195-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
-<span id="cb195-3"><a href="#cb195-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua]{<span class="ex">markdown</span>}</span>
-<span id="cb195-4"><a href="#cb195-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb195-5"><a href="#cb195-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb195-6"><a href="#cb195-6" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span>
-<span id="cb195-7"><a href="#cb195-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb195-8"><a href="#cb195-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb223"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb223-1"><a href="#cb223-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb223-2"><a href="#cb223-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
+<span id="cb223-3"><a href="#cb223-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[extension = strike-through.lua]{<span class="ex">markdown</span>}</span>
+<span id="cb223-4"><a href="#cb223-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb223-5"><a href="#cb223-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb223-6"><a href="#cb223-6" aria-hidden="true" tabindex="-1"></a>This is //a lunar roving vehicle// strike-through text.</span>
+<span id="cb223-7"><a href="#cb223-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb223-8"><a href="#cb223-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb196"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb196-1"><a href="#cb196-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb224"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb224-1"><a href="#cb224-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <del>a lunar roving vehicle</del> strike-through text.</p>
</blockquote>
-<h4 data-number="2.2.1.20" id="option-fancylists"><span
-class="header-section-number">2.2.1.20</span> Option
+<h4 data-number="2.2.1.24" id="option-fancylists"><span
+class="header-section-number">2.2.1.24</span> Option
<code>fancyLists</code></h4>
<dl>
<dt><code>fancyLists</code> (default value: <code>false</code>)</dt>
@@ -3129,10 +3703,10 @@ class="header-section-number">2.2.1.20</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#org-fancy-lists">fancy list syntax
extension</a>:</p>
-<div class="sourceCode" id="cb197"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb197-1"><a href="#cb197-1" aria-hidden="true" tabindex="-1"></a>a) first item</span>
-<span id="cb197-2"><a href="#cb197-2" aria-hidden="true" tabindex="-1"></a>b) second item</span>
-<span id="cb197-3"><a href="#cb197-3" aria-hidden="true" tabindex="-1"></a>c) third item</span></code></pre></div>
+<div class="sourceCode" id="cb225"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb225-1"><a href="#cb225-1" aria-hidden="true" tabindex="-1"></a>a) first item</span>
+<span id="cb225-2"><a href="#cb225-2" aria-hidden="true" tabindex="-1"></a>b) second item</span>
+<span id="cb225-3"><a href="#cb225-3" aria-hidden="true" tabindex="-1"></a>c) third item</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -3145,24 +3719,24 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb197-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-17"><span
+<h5 class="unnumbered" id="latex-example-19"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb198"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb198-1"><a href="#cb198-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb198-2"><a href="#cb198-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
-<span id="cb198-3"><a href="#cb198-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fancyLists]{<span class="ex">markdown</span>}</span>
-<span id="cb198-4"><a href="#cb198-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb198-5"><a href="#cb198-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb198-6"><a href="#cb198-6" aria-hidden="true" tabindex="-1"></a>a) first item</span>
-<span id="cb198-7"><a href="#cb198-7" aria-hidden="true" tabindex="-1"></a>b) second item</span>
-<span id="cb198-8"><a href="#cb198-8" aria-hidden="true" tabindex="-1"></a>c) third item</span>
-<span id="cb198-9"><a href="#cb198-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb198-10"><a href="#cb198-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb226"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb226-1"><a href="#cb226-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb226-2"><a href="#cb226-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
+<span id="cb226-3"><a href="#cb226-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fancyLists]{<span class="ex">markdown</span>}</span>
+<span id="cb226-4"><a href="#cb226-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb226-5"><a href="#cb226-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb226-6"><a href="#cb226-6" aria-hidden="true" tabindex="-1"></a>a) first item</span>
+<span id="cb226-7"><a href="#cb226-7" aria-hidden="true" tabindex="-1"></a>b) second item</span>
+<span id="cb226-8"><a href="#cb226-8" aria-hidden="true" tabindex="-1"></a>c) third item</span>
+<span id="cb226-9"><a href="#cb226-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb226-10"><a href="#cb226-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb199"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb199-1"><a href="#cb199-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb227"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb227-1"><a href="#cb227-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -3172,23 +3746,23 @@ contain the following text:</p>
<li>third item</li>
</ol>
</blockquote>
-<h5 class="unnumbered" id="context-example-10">Con<span
+<h5 class="unnumbered" id="context-example-12">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb200"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb200-1"><a href="#cb200-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb200-2"><a href="#cb200-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fancyLists = yes]</span>
-<span id="cb200-3"><a href="#cb200-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb200-4"><a href="#cb200-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb200-5"><a href="#cb200-5" aria-hidden="true" tabindex="-1"></a>a) first item</span>
-<span id="cb200-6"><a href="#cb200-6" aria-hidden="true" tabindex="-1"></a>b) second item</span>
-<span id="cb200-7"><a href="#cb200-7" aria-hidden="true" tabindex="-1"></a>c) third item</span>
-<span id="cb200-8"><a href="#cb200-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb200-9"><a href="#cb200-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb228"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb228-1"><a href="#cb228-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb228-2"><a href="#cb228-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fancyLists = yes]</span>
+<span id="cb228-3"><a href="#cb228-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb228-4"><a href="#cb228-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb228-5"><a href="#cb228-5" aria-hidden="true" tabindex="-1"></a>a) first item</span>
+<span id="cb228-6"><a href="#cb228-6" aria-hidden="true" tabindex="-1"></a>b) second item</span>
+<span id="cb228-7"><a href="#cb228-7" aria-hidden="true" tabindex="-1"></a>c) third item</span>
+<span id="cb228-8"><a href="#cb228-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb228-9"><a href="#cb228-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb201"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb201-1"><a href="#cb201-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb229"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb229-1"><a href="#cb229-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -3198,33 +3772,33 @@ contain the following text:</p>
<li>third item</li>
</ol>
</blockquote>
-<h4 data-number="2.2.1.21" id="option-fencedcode"><span
-class="header-section-number">2.2.1.21</span> Option
+<h4 data-number="2.2.1.25" id="option-fencedcode"><span
+class="header-section-number">2.2.1.25</span> Option
<code>fencedCode</code></h4>
<dl>
-<dt><code>fencedCode</code> (default value: <code>false</code>)</dt>
+<dt><code>fencedCode</code> (default value: <code>true</code>)</dt>
<dd>
<dl>
<dt>true</dt>
<dd>
<p>Enable the commonmark fenced code block extension:</p>
-<div class="sourceCode" id="cb202"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb202-1"><a href="#cb202-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~ js</span></span>
-<span id="cb202-2"><a href="#cb202-2" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
-<span id="cb202-3"><a href="#cb202-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
-<span id="cb202-4"><a href="#cb202-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb202-5"><a href="#cb202-5" aria-hidden="true" tabindex="-1"></a><span class="op">~~~~~~</span></span>
-<span id="cb202-6"><a href="#cb202-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb202-7"><a href="#cb202-7" aria-hidden="true" tabindex="-1"></a> <span class="vs">``` html</span></span>
-<span id="cb202-8"><a href="#cb202-8" aria-hidden="true" tabindex="-1"></a><span class="vs"> &lt;pre&gt;</span></span>
-<span id="cb202-9"><a href="#cb202-9" aria-hidden="true" tabindex="-1"></a><span class="vs"> &lt;code&gt;</span></span>
-<span id="cb202-10"><a href="#cb202-10" aria-hidden="true" tabindex="-1"></a><span class="vs"> // Some comments</span></span>
-<span id="cb202-11"><a href="#cb202-11" aria-hidden="true" tabindex="-1"></a><span class="vs"> line 1 of code</span></span>
-<span id="cb202-12"><a href="#cb202-12" aria-hidden="true" tabindex="-1"></a><span class="vs"> line 2 of code</span></span>
-<span id="cb202-13"><a href="#cb202-13" aria-hidden="true" tabindex="-1"></a><span class="vs"> line 3 of code</span></span>
-<span id="cb202-14"><a href="#cb202-14" aria-hidden="true" tabindex="-1"></a><span class="vs"> &lt;/code&gt;</span></span>
-<span id="cb202-15"><a href="#cb202-15" aria-hidden="true" tabindex="-1"></a><span class="vs"> &lt;/pre&gt;</span></span>
-<span id="cb202-16"><a href="#cb202-16" aria-hidden="true" tabindex="-1"></a><span class="vs"> ```</span></span></code></pre></div>
+<div class="sourceCode" id="cb230"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb230-1"><a href="#cb230-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~ js</span></span>
+<span id="cb230-2"><a href="#cb230-2" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
+<span id="cb230-3"><a href="#cb230-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
+<span id="cb230-4"><a href="#cb230-4" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb230-5"><a href="#cb230-5" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~~~</span></span>
+<span id="cb230-6"><a href="#cb230-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb230-7"><a href="#cb230-7" aria-hidden="true" tabindex="-1"></a> <span class="in">``` html</span></span>
+<span id="cb230-8"><a href="#cb230-8" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;</span><span class="kw">pre</span><span class="dt">&gt;</span></span>
+<span id="cb230-9"><a href="#cb230-9" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;</span><span class="kw">code</span><span class="dt">&gt;</span></span>
+<span id="cb230-10"><a href="#cb230-10" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
+<span id="cb230-11"><a href="#cb230-11" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
+<span id="cb230-12"><a href="#cb230-12" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
+<span id="cb230-13"><a href="#cb230-13" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
+<span id="cb230-14"><a href="#cb230-14" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;/</span><span class="kw">code</span><span class="dt">&gt;</span></span>
+<span id="cb230-15"><a href="#cb230-15" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;/</span><span class="kw">pre</span><span class="dt">&gt;</span></span>
+<span id="cb230-16"><a href="#cb230-16" aria-hidden="true" tabindex="-1"></a> <span class="in">```</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -3237,106 +3811,105 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb202-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-18"><span
+<h5 class="unnumbered" id="latex-example-20"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb203"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb203-1"><a href="#cb203-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb203-2"><a href="#cb203-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
-<span id="cb203-3"><a href="#cb203-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb203-4"><a href="#cb203-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb203-5"><a href="#cb203-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb203-6"><a href="#cb203-6" aria-hidden="true" tabindex="-1"></a>~~~ js</span>
-<span id="cb203-7"><a href="#cb203-7" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
-<span id="cb203-8"><a href="#cb203-8" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
-<span id="cb203-9"><a href="#cb203-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb203-10"><a href="#cb203-10" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
-<span id="cb203-11"><a href="#cb203-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb203-12"><a href="#cb203-12" aria-hidden="true" tabindex="-1"></a> ``` html</span>
-<span id="cb203-13"><a href="#cb203-13" aria-hidden="true" tabindex="-1"></a> &lt;pre&gt;</span>
-<span id="cb203-14"><a href="#cb203-14" aria-hidden="true" tabindex="-1"></a> &lt;code&gt;</span>
-<span id="cb203-15"><a href="#cb203-15" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
-<span id="cb203-16"><a href="#cb203-16" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
-<span id="cb203-17"><a href="#cb203-17" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
-<span id="cb203-18"><a href="#cb203-18" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
-<span id="cb203-19"><a href="#cb203-19" aria-hidden="true" tabindex="-1"></a> &lt;/code&gt;</span>
-<span id="cb203-20"><a href="#cb203-20" aria-hidden="true" tabindex="-1"></a> &lt;/pre&gt;</span>
-<span id="cb203-21"><a href="#cb203-21" aria-hidden="true" tabindex="-1"></a> ```</span>
-<span id="cb203-22"><a href="#cb203-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb203-23"><a href="#cb203-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb231"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb231-1"><a href="#cb231-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb231-2"><a href="#cb231-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
+<span id="cb231-3"><a href="#cb231-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb231-4"><a href="#cb231-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb231-5"><a href="#cb231-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb231-6"><a href="#cb231-6" aria-hidden="true" tabindex="-1"></a>~~~ js</span>
+<span id="cb231-7"><a href="#cb231-7" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
+<span id="cb231-8"><a href="#cb231-8" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
+<span id="cb231-9"><a href="#cb231-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb231-10"><a href="#cb231-10" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
+<span id="cb231-11"><a href="#cb231-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb231-12"><a href="#cb231-12" aria-hidden="true" tabindex="-1"></a> ``` html</span>
+<span id="cb231-13"><a href="#cb231-13" aria-hidden="true" tabindex="-1"></a> &lt;pre&gt;</span>
+<span id="cb231-14"><a href="#cb231-14" aria-hidden="true" tabindex="-1"></a> &lt;code&gt;</span>
+<span id="cb231-15"><a href="#cb231-15" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
+<span id="cb231-16"><a href="#cb231-16" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
+<span id="cb231-17"><a href="#cb231-17" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
+<span id="cb231-18"><a href="#cb231-18" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
+<span id="cb231-19"><a href="#cb231-19" aria-hidden="true" tabindex="-1"></a> &lt;/code&gt;</span>
+<span id="cb231-20"><a href="#cb231-20" aria-hidden="true" tabindex="-1"></a> &lt;/pre&gt;</span>
+<span id="cb231-21"><a href="#cb231-21" aria-hidden="true" tabindex="-1"></a> ```</span>
+<span id="cb231-22"><a href="#cb231-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb231-23"><a href="#cb231-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb204"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb204-1"><a href="#cb204-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb232"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb232-1"><a href="#cb232-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
-<div class="sourceCode" id="cb205"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb205-1"><a href="#cb205-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
-<span id="cb205-2"><a href="#cb205-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
-<span id="cb205-3"><a href="#cb205-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
-<div class="sourceCode" id="cb206"><pre
-class="sourceCode html"><code class="sourceCode html"><span id="cb206-1"><a href="#cb206-1" aria-hidden="true" tabindex="-1"></a><span class="kw">&lt;pre&gt;</span></span>
-<span id="cb206-2"><a href="#cb206-2" aria-hidden="true" tabindex="-1"></a> <span class="kw">&lt;code&gt;</span></span>
-<span id="cb206-3"><a href="#cb206-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
-<span id="cb206-4"><a href="#cb206-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
-<span id="cb206-5"><a href="#cb206-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
-<span id="cb206-6"><a href="#cb206-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
-<span id="cb206-7"><a href="#cb206-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">&lt;/code&gt;</span></span>
-<span id="cb206-8"><a href="#cb206-8" aria-hidden="true" tabindex="-1"></a><span class="kw">&lt;/pre&gt;</span></span></code></pre></div>
+<div class="sourceCode" id="cb233"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb233-1"><a href="#cb233-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
+<span id="cb233-2"><a href="#cb233-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
+<span id="cb233-3"><a href="#cb233-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb234"><pre
+class="sourceCode html"><code class="sourceCode html"><span id="cb234-1"><a href="#cb234-1" aria-hidden="true" tabindex="-1"></a><span class="dt">&lt;</span><span class="kw">pre</span><span class="dt">&gt;</span></span>
+<span id="cb234-2"><a href="#cb234-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;</span><span class="kw">code</span><span class="dt">&gt;</span></span>
+<span id="cb234-3"><a href="#cb234-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
+<span id="cb234-4"><a href="#cb234-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
+<span id="cb234-5"><a href="#cb234-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
+<span id="cb234-6"><a href="#cb234-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
+<span id="cb234-7"><a href="#cb234-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;/</span><span class="kw">code</span><span class="dt">&gt;</span></span>
+<span id="cb234-8"><a href="#cb234-8" aria-hidden="true" tabindex="-1"></a><span class="dt">&lt;/</span><span class="kw">pre</span><span class="dt">&gt;</span></span></code></pre></div>
</blockquote>
-<h5 class="unnumbered" id="context-example-11">Con<span
+<h5 class="unnumbered" id="context-example-13">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb207"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb207-1"><a href="#cb207-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb207-2"><a href="#cb207-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[fencedCode = yes]</span>
-<span id="cb207-3"><a href="#cb207-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [js]</span>
-<span id="cb207-4"><a href="#cb207-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [html]</span>
-<span id="cb207-5"><a href="#cb207-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [html] [option=XML]</span>
-<span id="cb207-6"><a href="#cb207-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb207-7"><a href="#cb207-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb207-8"><a href="#cb207-8" aria-hidden="true" tabindex="-1"></a>~~~ js</span>
-<span id="cb207-9"><a href="#cb207-9" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
-<span id="cb207-10"><a href="#cb207-10" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
-<span id="cb207-11"><a href="#cb207-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb207-12"><a href="#cb207-12" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
-<span id="cb207-13"><a href="#cb207-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb207-14"><a href="#cb207-14" aria-hidden="true" tabindex="-1"></a> ``` html</span>
-<span id="cb207-15"><a href="#cb207-15" aria-hidden="true" tabindex="-1"></a> &lt;pre&gt;</span>
-<span id="cb207-16"><a href="#cb207-16" aria-hidden="true" tabindex="-1"></a> &lt;code&gt;</span>
-<span id="cb207-17"><a href="#cb207-17" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
-<span id="cb207-18"><a href="#cb207-18" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
-<span id="cb207-19"><a href="#cb207-19" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
-<span id="cb207-20"><a href="#cb207-20" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
-<span id="cb207-21"><a href="#cb207-21" aria-hidden="true" tabindex="-1"></a> &lt;/code&gt;</span>
-<span id="cb207-22"><a href="#cb207-22" aria-hidden="true" tabindex="-1"></a> &lt;/pre&gt;</span>
-<span id="cb207-23"><a href="#cb207-23" aria-hidden="true" tabindex="-1"></a> ```</span>
-<span id="cb207-24"><a href="#cb207-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb207-25"><a href="#cb207-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb235"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb235-1"><a href="#cb235-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb235-2"><a href="#cb235-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [js]</span>
+<span id="cb235-3"><a href="#cb235-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\definetyping</span> [html]</span>
+<span id="cb235-4"><a href="#cb235-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setuptyping</span> [html] [option=XML]</span>
+<span id="cb235-5"><a href="#cb235-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb235-6"><a href="#cb235-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb235-7"><a href="#cb235-7" aria-hidden="true" tabindex="-1"></a>~~~ js</span>
+<span id="cb235-8"><a href="#cb235-8" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
+<span id="cb235-9"><a href="#cb235-9" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
+<span id="cb235-10"><a href="#cb235-10" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb235-11"><a href="#cb235-11" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
+<span id="cb235-12"><a href="#cb235-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb235-13"><a href="#cb235-13" aria-hidden="true" tabindex="-1"></a> ``` html</span>
+<span id="cb235-14"><a href="#cb235-14" aria-hidden="true" tabindex="-1"></a> &lt;pre&gt;</span>
+<span id="cb235-15"><a href="#cb235-15" aria-hidden="true" tabindex="-1"></a> &lt;code&gt;</span>
+<span id="cb235-16"><a href="#cb235-16" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
+<span id="cb235-17"><a href="#cb235-17" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
+<span id="cb235-18"><a href="#cb235-18" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
+<span id="cb235-19"><a href="#cb235-19" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
+<span id="cb235-20"><a href="#cb235-20" aria-hidden="true" tabindex="-1"></a> &lt;/code&gt;</span>
+<span id="cb235-21"><a href="#cb235-21" aria-hidden="true" tabindex="-1"></a> &lt;/pre&gt;</span>
+<span id="cb235-22"><a href="#cb235-22" aria-hidden="true" tabindex="-1"></a> ```</span>
+<span id="cb235-23"><a href="#cb235-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb235-24"><a href="#cb235-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb208"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb208-1"><a href="#cb208-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb236"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb236-1"><a href="#cb236-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
-<div class="sourceCode" id="cb209"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb209-1"><a href="#cb209-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
-<span id="cb209-2"><a href="#cb209-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
-<span id="cb209-3"><a href="#cb209-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
-<div class="sourceCode" id="cb210"><pre
-class="sourceCode html"><code class="sourceCode html"><span id="cb210-1"><a href="#cb210-1" aria-hidden="true" tabindex="-1"></a><span class="kw">&lt;pre&gt;</span></span>
-<span id="cb210-2"><a href="#cb210-2" aria-hidden="true" tabindex="-1"></a> <span class="kw">&lt;code&gt;</span></span>
-<span id="cb210-3"><a href="#cb210-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
-<span id="cb210-4"><a href="#cb210-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
-<span id="cb210-5"><a href="#cb210-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
-<span id="cb210-6"><a href="#cb210-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
-<span id="cb210-7"><a href="#cb210-7" aria-hidden="true" tabindex="-1"></a> <span class="kw">&lt;/code&gt;</span></span>
-<span id="cb210-8"><a href="#cb210-8" aria-hidden="true" tabindex="-1"></a><span class="kw">&lt;/pre&gt;</span></span></code></pre></div>
-</blockquote>
-<h4 data-number="2.2.1.22" id="option-fencedcodeattributes"><span
-class="header-section-number">2.2.1.22</span> Option
+<div class="sourceCode" id="cb237"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb237-1"><a href="#cb237-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
+<span id="cb237-2"><a href="#cb237-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
+<span id="cb237-3"><a href="#cb237-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb238"><pre
+class="sourceCode html"><code class="sourceCode html"><span id="cb238-1"><a href="#cb238-1" aria-hidden="true" tabindex="-1"></a><span class="dt">&lt;</span><span class="kw">pre</span><span class="dt">&gt;</span></span>
+<span id="cb238-2"><a href="#cb238-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;</span><span class="kw">code</span><span class="dt">&gt;</span></span>
+<span id="cb238-3"><a href="#cb238-3" aria-hidden="true" tabindex="-1"></a> // Some comments</span>
+<span id="cb238-4"><a href="#cb238-4" aria-hidden="true" tabindex="-1"></a> line 1 of code</span>
+<span id="cb238-5"><a href="#cb238-5" aria-hidden="true" tabindex="-1"></a> line 2 of code</span>
+<span id="cb238-6"><a href="#cb238-6" aria-hidden="true" tabindex="-1"></a> line 3 of code</span>
+<span id="cb238-7"><a href="#cb238-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">&lt;/</span><span class="kw">code</span><span class="dt">&gt;</span></span>
+<span id="cb238-8"><a href="#cb238-8" aria-hidden="true" tabindex="-1"></a><span class="dt">&lt;/</span><span class="kw">pre</span><span class="dt">&gt;</span></span></code></pre></div>
+</blockquote>
+<h4 data-number="2.2.1.26" id="option-fencedcodeattributes"><span
+class="header-section-number">2.2.1.26</span> Option
<code>fencedCodeAttributes</code></h4>
<dl>
<dt><code>fencedCodeAttributes</code> (default value:
@@ -3348,12 +3921,12 @@ class="header-section-number">2.2.1.22</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-fenced_code_attributes">fenced
code attribute syntax extension</a>:</p>
-<div class="sourceCode" id="cb211"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb211-1"><a href="#cb211-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~ {#mycode .haskell .numberLines startFrom=100}</span></span>
-<span id="cb211-2"><a href="#cb211-2" aria-hidden="true" tabindex="-1"></a><span class="in">qsort [] = []</span></span>
-<span id="cb211-3"><a href="#cb211-3" aria-hidden="true" tabindex="-1"></a><span class="in">qsort (x:xs) = qsort (filter (&lt; x) xs) ++ [x] ++</span></span>
-<span id="cb211-4"><a href="#cb211-4" aria-hidden="true" tabindex="-1"></a><span class="in"> qsort (filter (&gt;= x) xs)</span></span>
-<span id="cb211-5"><a href="#cb211-5" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</span></span></code></pre></div>
+<div class="sourceCode" id="cb239"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb239-1"><a href="#cb239-1" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~ {#mycode .haskell .numberLines startFrom=100}</span></span>
+<span id="cb239-2"><a href="#cb239-2" aria-hidden="true" tabindex="-1"></a><span class="in">qsort [] = []</span></span>
+<span id="cb239-3"><a href="#cb239-3" aria-hidden="true" tabindex="-1"></a><span class="in">qsort (x:xs) = qsort (filter (&lt; x) xs) ++ [x] ++</span></span>
+<span id="cb239-4"><a href="#cb239-4" aria-hidden="true" tabindex="-1"></a><span class="in"> qsort (filter (&gt;= x) xs)</span></span>
+<span id="cb239-5"><a href="#cb239-5" aria-hidden="true" tabindex="-1"></a><span class="in">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -3366,52 +3939,54 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb211-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-19"><span
+<h5 class="unnumbered" id="latex-example-21"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb212"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb212-1"><a href="#cb212-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb212-2"><a href="#cb212-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span>
-<span id="cb212-3"><a href="#cb212-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb212-4"><a href="#cb212-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
-<span id="cb212-5"><a href="#cb212-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb212-6"><a href="#cb212-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb212-7"><a href="#cb212-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span>
-<span id="cb212-8"><a href="#cb212-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb212-9"><a href="#cb212-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb212-10"><a href="#cb212-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb212-11"><a href="#cb212-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
-<span id="cb212-12"><a href="#cb212-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span>
-<span id="cb212-13"><a href="#cb212-13" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb212-14"><a href="#cb212-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb212-15"><a href="#cb212-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb212-16"><a href="#cb212-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb212-17"><a href="#cb212-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span>
-<span id="cb212-18"><a href="#cb212-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb212-19"><a href="#cb212-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb212-20"><a href="#cb212-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb212-21"><a href="#cb212-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb212-22"><a href="#cb212-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb212-23"><a href="#cb212-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb212-24"><a href="#cb212-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span>
-<span id="cb212-25"><a href="#cb212-25" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
-<span id="cb212-26"><a href="#cb212-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
-<span id="cb212-27"><a href="#cb212-27" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb212-28"><a href="#cb212-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
-<span id="cb212-29"><a href="#cb212-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb212-30"><a href="#cb212-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb213"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb213-1"><a href="#cb213-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
-<p>A PDF document named <code>document.pdf</code> should be produced and
-contain the following text:</p>
-<blockquote>
-<p>``` js {.linenos} 1. if (a &gt; 3) { 2. moveShip(5 * gravity, DOWN);
-3. } ``````</p>
-</blockquote>
-<h4 data-number="2.2.1.23" id="fenced-divs"><span
-class="header-section-number">2.2.1.23</span> Option
+<div class="sourceCode" id="cb240"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb240-1"><a href="#cb240-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb240-2"><a href="#cb240-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span>
+<span id="cb240-3"><a href="#cb240-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb240-4"><a href="#cb240-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
+<span id="cb240-5"><a href="#cb240-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb240-6"><a href="#cb240-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb240-7"><a href="#cb240-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span>
+<span id="cb240-8"><a href="#cb240-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb240-9"><a href="#cb240-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb240-10"><a href="#cb240-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb240-11"><a href="#cb240-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
+<span id="cb240-12"><a href="#cb240-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span>
+<span id="cb240-13"><a href="#cb240-13" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb240-14"><a href="#cb240-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb240-15"><a href="#cb240-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb240-16"><a href="#cb240-16" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb240-17"><a href="#cb240-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span>
+<span id="cb240-18"><a href="#cb240-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb240-19"><a href="#cb240-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb240-20"><a href="#cb240-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb240-21"><a href="#cb240-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb240-22"><a href="#cb240-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb240-23"><a href="#cb240-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb240-24"><a href="#cb240-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span>
+<span id="cb240-25"><a href="#cb240-25" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
+<span id="cb240-26"><a href="#cb240-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
+<span id="cb240-27"><a href="#cb240-27" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb240-28"><a href="#cb240-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
+<span id="cb240-29"><a href="#cb240-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb240-30"><a href="#cb240-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb241"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb241-1"><a href="#cb241-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<div class="sourceCode" id="cb242"><pre
+class="sourceCode js linenos"><code class="sourceCode javascript"><span id="cb242-1"><a href="#cb242-1" aria-hidden="true" tabindex="-1"></a><span class="fl">1.</span> <span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
+<span id="cb242-2"><a href="#cb242-2" aria-hidden="true" tabindex="-1"></a><span class="fl">2.</span> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
+<span id="cb242-3"><a href="#cb242-3" aria-hidden="true" tabindex="-1"></a><span class="fl">3.</span> }</span></code></pre></div>
+</blockquote>
+<h4 data-number="2.2.1.27" id="fenced-divs"><span
+class="header-section-number">2.2.1.27</span> Option
<code>fencedDivs</code></h4>
<dl>
<dt><code>fencedDivs</code> (default value: <code>false</code>)</dt>
@@ -3422,12 +3997,12 @@ class="header-section-number">2.2.1.23</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-fenced_divs">fenced div
syntax extension</a>:</p>
-<div class="sourceCode" id="cb214"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb214-1"><a href="#cb214-1" aria-hidden="true" tabindex="-1"></a>::::: {#special .sidebar}</span>
-<span id="cb214-2"><a href="#cb214-2" aria-hidden="true" tabindex="-1"></a>Here is a paragraph.</span>
-<span id="cb214-3"><a href="#cb214-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb214-4"><a href="#cb214-4" aria-hidden="true" tabindex="-1"></a>And another.</span>
-<span id="cb214-5"><a href="#cb214-5" aria-hidden="true" tabindex="-1"></a>:::::</span></code></pre></div>
+<div class="sourceCode" id="cb243"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb243-1"><a href="#cb243-1" aria-hidden="true" tabindex="-1"></a>::::: {#special .sidebar}</span>
+<span id="cb243-2"><a href="#cb243-2" aria-hidden="true" tabindex="-1"></a>Here is a paragraph.</span>
+<span id="cb243-3"><a href="#cb243-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb243-4"><a href="#cb243-4" aria-hidden="true" tabindex="-1"></a>And another.</span>
+<span id="cb243-5"><a href="#cb243-5" aria-hidden="true" tabindex="-1"></a>:::::</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -3440,34 +4015,34 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb214-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-20"><span
+<h5 class="unnumbered" id="latex-example-22"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb215"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb215-1"><a href="#cb215-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb215-2"><a href="#cb215-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
-<span id="cb215-3"><a href="#cb215-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb215-4"><a href="#cb215-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}{slice=special}</span>
-<span id="cb215-5"><a href="#cb215-5" aria-hidden="true" tabindex="-1"></a>Here is a regular paragraph.</span>
-<span id="cb215-6"><a href="#cb215-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb215-7"><a href="#cb215-7" aria-hidden="true" tabindex="-1"></a>::::: {#special}</span>
-<span id="cb215-8"><a href="#cb215-8" aria-hidden="true" tabindex="-1"></a>Here is a special paragraph.</span>
-<span id="cb215-9"><a href="#cb215-9" aria-hidden="true" tabindex="-1"></a>:::::</span>
-<span id="cb215-10"><a href="#cb215-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb215-11"><a href="#cb215-11" aria-hidden="true" tabindex="-1"></a>And here is another regular paragraph.</span>
-<span id="cb215-12"><a href="#cb215-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb215-13"><a href="#cb215-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb244"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb244-1"><a href="#cb244-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb244-2"><a href="#cb244-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
+<span id="cb244-3"><a href="#cb244-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb244-4"><a href="#cb244-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}{slice=special}</span>
+<span id="cb244-5"><a href="#cb244-5" aria-hidden="true" tabindex="-1"></a>Here is a regular paragraph.</span>
+<span id="cb244-6"><a href="#cb244-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb244-7"><a href="#cb244-7" aria-hidden="true" tabindex="-1"></a>::::: {#special}</span>
+<span id="cb244-8"><a href="#cb244-8" aria-hidden="true" tabindex="-1"></a>Here is a special paragraph.</span>
+<span id="cb244-9"><a href="#cb244-9" aria-hidden="true" tabindex="-1"></a>:::::</span>
+<span id="cb244-10"><a href="#cb244-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb244-11"><a href="#cb244-11" aria-hidden="true" tabindex="-1"></a>And here is another regular paragraph.</span>
+<span id="cb244-12"><a href="#cb244-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb244-13"><a href="#cb244-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb216"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb216-1"><a href="#cb216-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb245"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb245-1"><a href="#cb245-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Here is a special paragraph.</p>
</blockquote>
-<h4 data-number="2.2.1.24" id="option-finalizecache"><span
-class="header-section-number">2.2.1.24</span> Option
+<h4 data-number="2.2.1.28" id="option-finalizecache"><span
+class="header-section-number">2.2.1.28</span> Option
<code>finalizeCache</code></h4>
<dl>
<dt><code>finalizeCache</code> (default value: <code>false</code>)</dt>
@@ -3486,35 +4061,35 @@ further changes in the order and the content of markdown documents will
not be reflected.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-7">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-9">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb217"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb217-1"><a href="#cb217-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb217-2"><a href="#cb217-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span>
-<span id="cb217-3"><a href="#cb217-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb217-4"><a href="#cb217-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb217-5"><a href="#cb217-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb217-6"><a href="#cb217-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb246"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb246-1"><a href="#cb246-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb246-2"><a href="#cb246-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span>
+<span id="cb246-3"><a href="#cb246-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb246-4"><a href="#cb246-4" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb246-5"><a href="#cb246-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb246-6"><a href="#cb246-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb218"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb218-1"><a href="#cb218-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb247"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb247-1"><a href="#cb247-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache will also be
produced as we requested using the <code>finalizeCache</code>
option.</p>
<p>Next, change the content of <code>document.tex</code> as follows:</p>
-<div class="sourceCode" id="cb219"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb219-1"><a href="#cb219-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb219-2"><a href="#cb219-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span>
-<span id="cb219-3"><a href="#cb219-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb219-4"><a href="#cb219-4" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
-<span id="cb219-5"><a href="#cb219-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb219-6"><a href="#cb219-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb248"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb248-1"><a href="#cb248-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb248-2"><a href="#cb248-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCache</span>{true}</span>
+<span id="cb248-3"><a href="#cb248-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb248-4"><a href="#cb248-4" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
+<span id="cb248-5"><a href="#cb248-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb248-6"><a href="#cb248-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Last, invoke pdfTeX without shell access from the terminal:</p>
-<div class="sourceCode" id="cb220"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb220-1"><a href="#cb220-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb249"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb249-1"><a href="#cb249-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div>
<p>A new PDF document named <code>document.pdf</code> should be produced
and contain the same text “Hello <em>world</em>!” Since we used the
contents of the frozen cache using the
@@ -3522,37 +4097,37 @@ contents of the frozen cache using the
the document without accessing the shell or invoking Lua, but the change
in the content of the markdown document from “Hello <em>world</em>!” to
“Hi <em>world</em>!” was not reflected.</p>
-<h5 class="unnumbered" id="latex-example-21"><span
+<h5 class="unnumbered" id="latex-example-23"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb221"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb221-1"><a href="#cb221-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span>
-<span id="cb221-2"><a href="#cb221-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb221-3"><a href="#cb221-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb221-4"><a href="#cb221-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb221-5"><a href="#cb221-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb221-6"><a href="#cb221-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb221-7"><a href="#cb221-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb250"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb250-1"><a href="#cb250-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[finalizecache]{<span class="ex">article</span>}</span>
+<span id="cb250-2"><a href="#cb250-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb250-3"><a href="#cb250-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb250-4"><a href="#cb250-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb250-5"><a href="#cb250-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb250-6"><a href="#cb250-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb250-7"><a href="#cb250-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb222"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb222-1"><a href="#cb222-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb251"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb251-1"><a href="#cb251-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache will also be
produced as we requested using the <code>finalizecache</code>
option.</p>
<p>Next, change the content of <code>document.tex</code> as follows:</p>
-<div class="sourceCode" id="cb223"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb223-1"><a href="#cb223-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span>
-<span id="cb223-2"><a href="#cb223-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb223-3"><a href="#cb223-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb223-4"><a href="#cb223-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb223-5"><a href="#cb223-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
-<span id="cb223-6"><a href="#cb223-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb223-7"><a href="#cb223-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb252"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb252-1"><a href="#cb252-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>[frozencache]{<span class="ex">article</span>}</span>
+<span id="cb252-2"><a href="#cb252-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb252-3"><a href="#cb252-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb252-4"><a href="#cb252-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb252-5"><a href="#cb252-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
+<span id="cb252-6"><a href="#cb252-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb252-7"><a href="#cb252-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Last, invoke pdfTeX without shell access from the terminal:</p>
-<div class="sourceCode" id="cb224"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb224-1"><a href="#cb224-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb253"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb253-1"><a href="#cb253-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdflatex</span> <span class="at">-no-shell-escape</span> document.tex</span></code></pre></div>
<p>A new PDF document named <code>document.pdf</code> should be produced
and contain the same text “Hello <em>world</em>!” Since we used the
contents of the frozen cache using the
@@ -3560,37 +4135,37 @@ contents of the frozen cache using the
the document without accessing the shell or invoking Lua, but the change
in the content of the markdown document from “Hello <em>world</em>!” to
“Hi <em>world</em>!” was not reflected.</p>
-<h5 class="unnumbered" id="context-example-12">Con<span
+<h5 class="unnumbered" id="context-example-14">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb225"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb225-1"><a href="#cb225-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb225-2"><a href="#cb225-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[finalizeCache = yes]</span>
-<span id="cb225-3"><a href="#cb225-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb225-4"><a href="#cb225-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb225-5"><a href="#cb225-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb225-6"><a href="#cb225-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb225-7"><a href="#cb225-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb254"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb254-1"><a href="#cb254-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb254-2"><a href="#cb254-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[finalizeCache = yes]</span>
+<span id="cb254-3"><a href="#cb254-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb254-4"><a href="#cb254-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb254-5"><a href="#cb254-5" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb254-6"><a href="#cb254-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb254-7"><a href="#cb254-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb226"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb226-1"><a href="#cb226-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb255"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb255-1"><a href="#cb255-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache will also be
produced in the <code>cache.tex</code> output file as we requested using
the <code>finalizeCache</code> option.</p>
<p>Next, change the content of <code>document.tex</code> as follows:</p>
-<div class="sourceCode" id="cb227"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb227-1"><a href="#cb227-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb227-2"><a href="#cb227-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[frozenCache = yes]</span>
-<span id="cb227-3"><a href="#cb227-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb227-4"><a href="#cb227-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb227-5"><a href="#cb227-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
-<span id="cb227-6"><a href="#cb227-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb227-7"><a href="#cb227-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
-<p>Last, invoke pdfTeX without shell access from the terminal:</p>
-<div class="sourceCode" id="cb228"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb228-1"><a href="#cb228-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb256"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb256-1"><a href="#cb256-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb256-2"><a href="#cb256-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[frozenCache = yes]</span>
+<span id="cb256-3"><a href="#cb256-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb256-4"><a href="#cb256-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb256-5"><a href="#cb256-5" aria-hidden="true" tabindex="-1"></a>Hi *world*!</span>
+<span id="cb256-6"><a href="#cb256-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb256-7"><a href="#cb256-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<p>Last, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb257"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb257-1"><a href="#cb257-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A new PDF document named <code>document.pdf</code> should be produced
and contain the same text “Hello <em>world</em>!” Since we used the
contents of the frozen cache using the
@@ -3598,8 +4173,8 @@ contents of the frozen cache using the
the document without accessing the shell or invoking Lua, but the change
in the content of the markdown document from “Hello <em>world</em>!” to
“Hi <em>world</em>!” was not reflected.</p>
-<h4 data-number="2.2.1.25" id="option-frozencachecounter"><span
-class="header-section-number">2.2.1.25</span> Option
+<h4 data-number="2.2.1.29" id="option-frozencachecounter"><span
+class="header-section-number">2.2.1.29</span> Option
<code>frozenCacheCounter</code></h4>
<dl>
<dt><code>frozenCacheCounter</code> (default value: <code>0</code>)</dt>
@@ -3615,86 +4190,60 @@ class="tex">T<sub>e</sub>X</span> macro
markdown document number ⟨<em>number</em>⟩.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-8">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-9">Lua Module Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb229"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb229-1"><a href="#cb229-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb229-2"><a href="#cb229-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb229-3"><a href="#cb229-3" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb229-4"><a href="#cb229-4" aria-hidden="true" tabindex="-1"></a> local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0})</span>
-<span id="cb229-5"><a href="#cb229-5" aria-hidden="true" tabindex="-1"></a> local firstInput = &quot;Hello&quot;</span>
-<span id="cb229-6"><a href="#cb229-6" aria-hidden="true" tabindex="-1"></a> local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1})</span>
-<span id="cb229-7"><a href="#cb229-7" aria-hidden="true" tabindex="-1"></a> local secondInput = &quot;*world*!&quot;</span>
-<span id="cb229-8"><a href="#cb229-8" aria-hidden="true" tabindex="-1"></a> tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) }</span>
-<span id="cb229-9"><a href="#cb229-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb258"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb258-1"><a href="#cb258-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb258-2"><a href="#cb258-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb258-3"><a href="#cb258-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb258-4"><a href="#cb258-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb258-5"><a href="#cb258-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb258-6"><a href="#cb258-6" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb258-7"><a href="#cb258-7" aria-hidden="true" tabindex="-1"></a> local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0})</span>
+<span id="cb258-8"><a href="#cb258-8" aria-hidden="true" tabindex="-1"></a> local firstInput = &quot;Hello&quot;</span>
+<span id="cb258-9"><a href="#cb258-9" aria-hidden="true" tabindex="-1"></a> local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1})</span>
+<span id="cb258-10"><a href="#cb258-10" aria-hidden="true" tabindex="-1"></a> local secondInput = &quot;*world*!&quot;</span>
+<span id="cb258-11"><a href="#cb258-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) }</span>
+<span id="cb258-12"><a href="#cb258-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb258-13"><a href="#cb258-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb230"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb230-1"><a href="#cb230-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb259"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb259-1"><a href="#cb259-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!” A frozen cache with two entries
will also be produced as we requested using the
<code>frozenCacheCounter</code> option.</p>
-<h4 data-number="2.2.1.26" id="option-hardlinebreaks"><span
-class="header-section-number">2.2.1.26</span> Option
-<code>hardLineBreaks</code></h4>
+<h4 data-number="2.2.1.30" id="option-gfmautoidentifiers"><span
+class="header-section-number">2.2.1.30</span> Option
+<code>gfmAutoIdentifiers</code></h4>
<dl>
-<dt><code>hardLineBreaks</code> (default value: <code>false</code>)</dt>
+<dt><code>gfmAutoIdentifiers</code> (default value:
+<code>false</code>)</dt>
<dd>
<dl>
<dt>true</dt>
<dd>
-<p>Interpret all newlines within a paragraph as hard line breaks instead
-of spaces.</p>
-</dd>
-</dl>
+<p>Enable the Pandoc <a
+href="https://pandoc.org/MANUAL.html#extension-gfm_auto_identifiers">GitHub-flavored
+auto identifiers syntax extension</a>:</p>
+<div class="sourceCode" id="cb260"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb260-1"><a href="#cb260-1" aria-hidden="true" tabindex="-1"></a>The following heading received the identifier <span class="in">`123-sesame-street`</span>:</span>
+<span id="cb260-2"><a href="#cb260-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb260-3"><a href="#cb260-3" aria-hidden="true" tabindex="-1"></a><span class="fu"># 123 Sesame Street</span></span></code></pre></div>
</dd>
-<dd>
-<dl>
<dt>false</dt>
<dd>
-<p>Interpret all newlines within a paragraph as spaces.</p>
+<p>Disable the Pandoc GitHub-flavored auto identifiers syntax
+extension.</p>
</dd>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-22"><span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
-<p>Using a text editor, create a text document named
-<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb231"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb231-1"><a href="#cb231-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb231-2"><a href="#cb231-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb231-3"><a href="#cb231-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb231-4"><a href="#cb231-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb231-5"><a href="#cb231-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb231-6"><a href="#cb231-6" aria-hidden="true" tabindex="-1"></a>&#39;Twas brillig, and the slithy toves</span>
-<span id="cb231-7"><a href="#cb231-7" aria-hidden="true" tabindex="-1"></a>Did gyre and gimble in the wabe;</span>
-<span id="cb231-8"><a href="#cb231-8" aria-hidden="true" tabindex="-1"></a>All mimsy were the borogoves,</span>
-<span id="cb231-9"><a href="#cb231-9" aria-hidden="true" tabindex="-1"></a>And the mome raths outgrabe.</span>
-<span id="cb231-10"><a href="#cb231-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb231-11"><a href="#cb231-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb231-12"><a href="#cb231-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hardLineBreaks}</span>
-<span id="cb231-13"><a href="#cb231-13" aria-hidden="true" tabindex="-1"></a>&#39;Twas brillig, and the slithy toves</span>
-<span id="cb231-14"><a href="#cb231-14" aria-hidden="true" tabindex="-1"></a>Did gyre and gimble in the wabe;</span>
-<span id="cb231-15"><a href="#cb231-15" aria-hidden="true" tabindex="-1"></a>All mimsy were the borogoves,</span>
-<span id="cb231-16"><a href="#cb231-16" aria-hidden="true" tabindex="-1"></a>And the mome raths outgrabe.</span>
-<span id="cb231-17"><a href="#cb231-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb231-18"><a href="#cb231-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb231-19"><a href="#cb231-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb232"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb232-1"><a href="#cb232-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
-<p>A PDF document named <code>document.pdf</code> should be produced and
-contain the following text:</p>
-<blockquote>
-<p>’Twas brillig, and the slithy toves Did gyre and gimble in the wabe;
-All mimsy were the borogoves, And the mome raths outgrabe.</p>
-<p>’Twas brillig, and the slithy toves Did gyre and gimble in the wabe;
-All mimsy were the borogoves, And the mome raths outgrabe.</p>
-</blockquote>
-<h4 data-number="2.2.1.27" id="option-hashenumerators"><span
-class="header-section-number">2.2.1.27</span> Option
+<p>See also the option
+<strong><code>autoIdentifiers</code></strong>.</p>
+<h4 data-number="2.2.1.31" id="option-hashenumerators"><span
+class="header-section-number">2.2.1.31</span> Option
<code>hashEnumerators</code></h4>
<dl>
<dt><code>hashEnumerators</code> (default value:
@@ -3705,10 +4254,10 @@ class="header-section-number">2.2.1.27</span> Option
<dd>
<p>Enable the use of hash symbols (<code>#</code>) as ordered item list
markers:</p>
-<div class="sourceCode" id="cb233"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb233-1"><a href="#cb233-1" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
-<span id="cb233-2"><a href="#cb233-2" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
-<span id="cb233-3"><a href="#cb233-3" aria-hidden="true" tabindex="-1"></a>#. Parish</span></code></pre></div>
+<div class="sourceCode" id="cb261"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb261-1"><a href="#cb261-1" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
+<span id="cb261-2"><a href="#cb261-2" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
+<span id="cb261-3"><a href="#cb261-3" aria-hidden="true" tabindex="-1"></a>#. Parish</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -3722,31 +4271,31 @@ markers.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-23"><span
+<h5 class="unnumbered" id="latex-example-24"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb234"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb234-1"><a href="#cb234-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb234-2"><a href="#cb234-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb234-3"><a href="#cb234-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb234-4"><a href="#cb234-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb234-5"><a href="#cb234-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb234-6"><a href="#cb234-6" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
-<span id="cb234-7"><a href="#cb234-7" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
-<span id="cb234-8"><a href="#cb234-8" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
-<span id="cb234-9"><a href="#cb234-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb234-10"><a href="#cb234-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb234-11"><a href="#cb234-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hashEnumerators}</span>
-<span id="cb234-12"><a href="#cb234-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
-<span id="cb234-13"><a href="#cb234-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
-<span id="cb234-14"><a href="#cb234-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
-<span id="cb234-15"><a href="#cb234-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb234-16"><a href="#cb234-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb234-17"><a href="#cb234-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb262"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb262-1"><a href="#cb262-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb262-2"><a href="#cb262-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb262-3"><a href="#cb262-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb262-4"><a href="#cb262-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb262-5"><a href="#cb262-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb262-6"><a href="#cb262-6" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
+<span id="cb262-7"><a href="#cb262-7" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
+<span id="cb262-8"><a href="#cb262-8" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
+<span id="cb262-9"><a href="#cb262-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb262-10"><a href="#cb262-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb262-11"><a href="#cb262-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hashEnumerators]</span>
+<span id="cb262-12"><a href="#cb262-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
+<span id="cb262-13"><a href="#cb262-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
+<span id="cb262-14"><a href="#cb262-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
+<span id="cb262-15"><a href="#cb262-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb262-16"><a href="#cb262-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb262-17"><a href="#cb262-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb235"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb235-1"><a href="#cb235-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb263"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb263-1"><a href="#cb263-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -3759,31 +4308,31 @@ contain the following text:</p>
<li>Parish</li>
</ol>
</blockquote>
-<h5 class="unnumbered" id="context-example-13">Con<span
+<h5 class="unnumbered" id="context-example-15">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb236"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb236-1"><a href="#cb236-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb236-2"><a href="#cb236-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb236-3"><a href="#cb236-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb236-4"><a href="#cb236-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb236-5"><a href="#cb236-5" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
-<span id="cb236-6"><a href="#cb236-6" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
-<span id="cb236-7"><a href="#cb236-7" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
-<span id="cb236-8"><a href="#cb236-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb236-9"><a href="#cb236-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb236-10"><a href="#cb236-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hashEnumerators = yes]</span>
-<span id="cb236-11"><a href="#cb236-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb236-12"><a href="#cb236-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
-<span id="cb236-13"><a href="#cb236-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
-<span id="cb236-14"><a href="#cb236-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
-<span id="cb236-15"><a href="#cb236-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb236-16"><a href="#cb236-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb236-17"><a href="#cb236-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb264"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb264-1"><a href="#cb264-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb264-2"><a href="#cb264-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb264-3"><a href="#cb264-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb264-4"><a href="#cb264-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb264-5"><a href="#cb264-5" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
+<span id="cb264-6"><a href="#cb264-6" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
+<span id="cb264-7"><a href="#cb264-7" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
+<span id="cb264-8"><a href="#cb264-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb264-9"><a href="#cb264-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb264-10"><a href="#cb264-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hashEnumerators = yes]</span>
+<span id="cb264-11"><a href="#cb264-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb264-12"><a href="#cb264-12" aria-hidden="true" tabindex="-1"></a>#. Bird</span>
+<span id="cb264-13"><a href="#cb264-13" aria-hidden="true" tabindex="-1"></a>#. McHale</span>
+<span id="cb264-14"><a href="#cb264-14" aria-hidden="true" tabindex="-1"></a>#. Parish</span>
+<span id="cb264-15"><a href="#cb264-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb264-16"><a href="#cb264-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb264-17"><a href="#cb264-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb237"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb237-1"><a href="#cb237-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb265"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb265-1"><a href="#cb265-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -3796,8 +4345,8 @@ contain the following text:</p>
<li>Parish</li>
</ol>
</blockquote>
-<h4 data-number="2.2.1.28" id="header-attributes"><span
-class="header-section-number">2.2.1.28</span> Option
+<h4 data-number="2.2.1.32" id="header-attributes"><span
+class="header-section-number">2.2.1.32</span> Option
<code>headerAttributes</code></h4>
<dl>
<dt><code>headerAttributes</code> (default value:
@@ -3807,13 +4356,13 @@ class="header-section-number">2.2.1.28</span> Option
<dt>true</dt>
<dd>
<p>Enable the assignment of HTML attributes to headings:</p>
-<div class="sourceCode" id="cb238"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb238-1"><a href="#cb238-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># My first heading {#foo}</span></span>
-<span id="cb238-2"><a href="#cb238-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb238-3"><a href="#cb238-3" aria-hidden="true" tabindex="-1"></a><span class="fu">## My second heading ## {#bar .baz}</span></span>
-<span id="cb238-4"><a href="#cb238-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb238-5"><a href="#cb238-5" aria-hidden="true" tabindex="-1"></a>Yet another heading {key=value}</span>
-<span id="cb238-6"><a href="#cb238-6" aria-hidden="true" tabindex="-1"></a><span class="fu">===================</span></span></code></pre></div>
+<div class="sourceCode" id="cb266"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb266-1"><a href="#cb266-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># My first heading {#foo}</span></span>
+<span id="cb266-2"><a href="#cb266-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb266-3"><a href="#cb266-3" aria-hidden="true" tabindex="-1"></a><span class="fu">## My second heading ## {#bar .baz}</span></span>
+<span id="cb266-4"><a href="#cb266-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb266-5"><a href="#cb266-5" aria-hidden="true" tabindex="-1"></a>Yet another heading {key=value}</span>
+<span id="cb266-6"><a href="#cb266-6" aria-hidden="true" tabindex="-1"></a><span class="fu">===================</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -3826,11 +4375,11 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb238-1"><a hr
</dl>
</dd>
</dl>
-<h4 data-number="2.2.1.29" id="option-html"><span
-class="header-section-number">2.2.1.29</span> Option
+<h4 data-number="2.2.1.33" id="option-html"><span
+class="header-section-number">2.2.1.33</span> Option
<code>html</code></h4>
<dl>
-<dt><code>html</code> (default value: <code>false</code>)</dt>
+<dt><code>html</code> (default value: <code>true</code>)</dt>
<dd>
<dl>
<dt>true</dt>
@@ -3853,36 +4402,41 @@ will be rendered as plain text.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-9">Lua Module Example</h5>
+<h5 class="unnumbered" id="lua-module-example-10">Lua Module
+Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb239"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb239-1"><a href="#cb239-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb239-2"><a href="#cb239-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb239-3"><a href="#cb239-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb239-4"><a href="#cb239-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb239-5"><a href="#cb239-5" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
-<span id="cb239-6"><a href="#cb239-6" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb239-7"><a href="#cb239-7" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb239-8"><a href="#cb239-8" aria-hidden="true" tabindex="-1"></a> &quot;&lt;div&gt;*There is no block tag support.*&lt;/div&gt;&quot; .. newline ..</span>
-<span id="cb239-9"><a href="#cb239-9" aria-hidden="true" tabindex="-1"></a> &quot;*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*&quot; .. newline ..</span>
-<span id="cb239-10"><a href="#cb239-10" aria-hidden="true" tabindex="-1"></a> &quot;_There is no &lt;!-- comment --&gt; support._&quot; .. newline ..</span>
-<span id="cb239-11"><a href="#cb239-11" aria-hidden="true" tabindex="-1"></a> &quot;_There is no &lt;? HTML instruction ?&gt; support._&quot;</span>
-<span id="cb239-12"><a href="#cb239-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb239-13"><a href="#cb239-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb239-14"><a href="#cb239-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb239-15"><a href="#cb239-15" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb239-16"><a href="#cb239-16" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({html = true})</span>
-<span id="cb239-17"><a href="#cb239-17" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb239-18"><a href="#cb239-18" aria-hidden="true" tabindex="-1"></a> &quot;&lt;div&gt;*There is block tag support.*&lt;/div&gt;&quot; .. newline ..</span>
-<span id="cb239-19"><a href="#cb239-19" aria-hidden="true" tabindex="-1"></a> &quot;*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*&quot; .. newline ..</span>
-<span id="cb239-20"><a href="#cb239-20" aria-hidden="true" tabindex="-1"></a> &quot;_There is &lt;!-- comment --&gt; support._&quot; .. newline ..</span>
-<span id="cb239-21"><a href="#cb239-21" aria-hidden="true" tabindex="-1"></a> &quot;_There is &lt;? HTML instruction ?&gt; support._&quot;</span>
-<span id="cb239-22"><a href="#cb239-22" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb239-23"><a href="#cb239-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb267"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb267-1"><a href="#cb267-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb267-2"><a href="#cb267-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb267-3"><a href="#cb267-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb267-4"><a href="#cb267-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb267-5"><a href="#cb267-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb267-6"><a href="#cb267-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb267-7"><a href="#cb267-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb267-8"><a href="#cb267-8" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({html = false})</span>
+<span id="cb267-9"><a href="#cb267-9" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb267-10"><a href="#cb267-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb267-11"><a href="#cb267-11" aria-hidden="true" tabindex="-1"></a> &quot;&lt;div&gt;*There is no block tag support.*&lt;/div&gt;&quot; .. newline ..</span>
+<span id="cb267-12"><a href="#cb267-12" aria-hidden="true" tabindex="-1"></a> &quot;*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*&quot; .. newline ..</span>
+<span id="cb267-13"><a href="#cb267-13" aria-hidden="true" tabindex="-1"></a> &quot;_There is no &lt;!-- comment --&gt; support._&quot; .. newline ..</span>
+<span id="cb267-14"><a href="#cb267-14" aria-hidden="true" tabindex="-1"></a> &quot;_There is no &lt;? HTML instruction ?&gt; support._&quot;</span>
+<span id="cb267-15"><a href="#cb267-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb267-16"><a href="#cb267-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb267-17"><a href="#cb267-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb267-18"><a href="#cb267-18" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb267-19"><a href="#cb267-19" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
+<span id="cb267-20"><a href="#cb267-20" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb267-21"><a href="#cb267-21" aria-hidden="true" tabindex="-1"></a> &quot;&lt;div&gt;*There is block tag support.*&lt;/div&gt;&quot; .. newline ..</span>
+<span id="cb267-22"><a href="#cb267-22" aria-hidden="true" tabindex="-1"></a> &quot;*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*&quot; .. newline ..</span>
+<span id="cb267-23"><a href="#cb267-23" aria-hidden="true" tabindex="-1"></a> &quot;_There is &lt;!-- comment --&gt; support._&quot; .. newline ..</span>
+<span id="cb267-24"><a href="#cb267-24" aria-hidden="true" tabindex="-1"></a> &quot;_There is &lt;? HTML instruction ?&gt; support._&quot;</span>
+<span id="cb267-25"><a href="#cb267-25" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb267-26"><a href="#cb267-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb267-27"><a href="#cb267-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb240"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb240-1"><a href="#cb240-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb268"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb268-1"><a href="#cb268-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -3892,30 +4446,34 @@ comment –&gt; support. There is no &lt;? HTML instruction ?&gt;
support.</p>
<p>There is support. There is support. There is support.</p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-7">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-9">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb241"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb241-1"><a href="#cb241-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb241-2"><a href="#cb241-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb241-3"><a href="#cb241-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb241-4"><a href="#cb241-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb241-5"><a href="#cb241-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb241-6"><a href="#cb241-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb269"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb269-1"><a href="#cb269-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb269-2"><a href="#cb269-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb269-3"><a href="#cb269-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb269-4"><a href="#cb269-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb269-5"><a href="#cb269-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb269-6"><a href="#cb269-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb269-7"><a href="#cb269-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb269-8"><a href="#cb269-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb269-9"><a href="#cb269-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb269-10"><a href="#cb269-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb242"><pre
-class="sourceCode html"><code class="sourceCode html"><span id="cb242-1"><a href="#cb242-1" aria-hidden="true" tabindex="-1"></a><span class="kw">&lt;div&gt;</span></span>
-<span id="cb242-2"><a href="#cb242-2" aria-hidden="true" tabindex="-1"></a>*Is there block tag support?*</span>
-<span id="cb242-3"><a href="#cb242-3" aria-hidden="true" tabindex="-1"></a><span class="kw">&lt;/div&gt;</span></span>
-<span id="cb242-4"><a href="#cb242-4" aria-hidden="true" tabindex="-1"></a>*Is there <span class="kw">&lt;inline</span> <span class="er">tag</span><span class="ot">=</span><span class="st">&quot;tag&quot;</span><span class="kw">&gt;&lt;/inline&gt;</span> support?*</span>
-<span id="cb242-5"><a href="#cb242-5" aria-hidden="true" tabindex="-1"></a>_Is there <span class="co">&lt;!-- comment --&gt;</span> support?_</span>
-<span id="cb242-6"><a href="#cb242-6" aria-hidden="true" tabindex="-1"></a>_Is there <span class="kw">&lt;?</span> HTML instruction <span class="kw">?&gt;</span> support?_</span></code></pre></div>
+<div class="sourceCode" id="cb270"><pre
+class="sourceCode html"><code class="sourceCode html"><span id="cb270-1"><a href="#cb270-1" aria-hidden="true" tabindex="-1"></a><span class="dt">&lt;</span><span class="kw">div</span><span class="dt">&gt;</span></span>
+<span id="cb270-2"><a href="#cb270-2" aria-hidden="true" tabindex="-1"></a>*Is there block tag support?*</span>
+<span id="cb270-3"><a href="#cb270-3" aria-hidden="true" tabindex="-1"></a><span class="dt">&lt;/</span><span class="kw">div</span><span class="dt">&gt;</span></span>
+<span id="cb270-4"><a href="#cb270-4" aria-hidden="true" tabindex="-1"></a>*Is there <span class="dt">&lt;</span><span class="kw">inline</span> <span class="er">tag</span><span class="ot">=</span><span class="st">&quot;tag&quot;</span><span class="dt">&gt;&lt;/</span><span class="kw">inline</span><span class="dt">&gt;</span> support?*</span>
+<span id="cb270-5"><a href="#cb270-5" aria-hidden="true" tabindex="-1"></a>_Is there <span class="co">&lt;!-- comment --&gt;</span> support?_</span>
+<span id="cb270-6"><a href="#cb270-6" aria-hidden="true" tabindex="-1"></a>_Is there <span class="kw">&lt;?</span> HTML instruction <span class="kw">?&gt;</span> support?_</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb243"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb243-1"><a href="#cb243-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb243-2"><a href="#cb243-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ html=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb243-3"><a href="#cb243-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb271"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb271-1"><a href="#cb271-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ html=false <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb271-2"><a href="#cb271-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb271-3"><a href="#cb271-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -3933,37 +4491,38 @@ contain the following text:</p>
–&gt; support? Is there &lt;? HTML instruction ?&gt; support?</p>
<p>Is there support? Is there support? Is there support?</p>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-8">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-10">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb244"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb244-1"><a href="#cb244-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb244-2"><a href="#cb244-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb244-3"><a href="#cb244-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb244-4"><a href="#cb244-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb244-5"><a href="#cb244-5" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
-<span id="cb244-6"><a href="#cb244-6" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span>
-<span id="cb244-7"><a href="#cb244-7" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
-<span id="cb244-8"><a href="#cb244-8" aria-hidden="true" tabindex="-1"></a>*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
-<span id="cb244-9"><a href="#cb244-9" aria-hidden="true" tabindex="-1"></a>_There is no &lt;!-- comment --&gt; support._</span>
-<span id="cb244-10"><a href="#cb244-10" aria-hidden="true" tabindex="-1"></a>_There is no &lt;? HTML instruction ?&gt; support._</span>
-<span id="cb244-11"><a href="#cb244-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb244-12"><a href="#cb244-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb244-13"><a href="#cb244-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHtml</span>{true}</span>
-<span id="cb244-14"><a href="#cb244-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb244-15"><a href="#cb244-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
-<span id="cb244-16"><a href="#cb244-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span>
-<span id="cb244-17"><a href="#cb244-17" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
-<span id="cb244-18"><a href="#cb244-18" aria-hidden="true" tabindex="-1"></a>*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
-<span id="cb244-19"><a href="#cb244-19" aria-hidden="true" tabindex="-1"></a>_There is &lt;!-- comment --&gt; support._</span>
-<span id="cb244-20"><a href="#cb244-20" aria-hidden="true" tabindex="-1"></a>_There is &lt;? HTML instruction ?&gt; support._</span>
-<span id="cb244-21"><a href="#cb244-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb244-22"><a href="#cb244-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb244-23"><a href="#cb244-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb272"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb272-1"><a href="#cb272-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb272-2"><a href="#cb272-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb272-3"><a href="#cb272-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb272-4"><a href="#cb272-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHtml</span>{false}</span>
+<span id="cb272-5"><a href="#cb272-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb272-6"><a href="#cb272-6" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
+<span id="cb272-7"><a href="#cb272-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span>
+<span id="cb272-8"><a href="#cb272-8" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
+<span id="cb272-9"><a href="#cb272-9" aria-hidden="true" tabindex="-1"></a>*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
+<span id="cb272-10"><a href="#cb272-10" aria-hidden="true" tabindex="-1"></a>_There is no &lt;!-- comment --&gt; support._</span>
+<span id="cb272-11"><a href="#cb272-11" aria-hidden="true" tabindex="-1"></a>_There is no &lt;? HTML instruction ?&gt; support._</span>
+<span id="cb272-12"><a href="#cb272-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb272-13"><a href="#cb272-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb272-14"><a href="#cb272-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHtml</span>{true}</span>
+<span id="cb272-15"><a href="#cb272-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb272-16"><a href="#cb272-16" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
+<span id="cb272-17"><a href="#cb272-17" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span>
+<span id="cb272-18"><a href="#cb272-18" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
+<span id="cb272-19"><a href="#cb272-19" aria-hidden="true" tabindex="-1"></a>*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
+<span id="cb272-20"><a href="#cb272-20" aria-hidden="true" tabindex="-1"></a>_There is &lt;!-- comment --&gt; support._</span>
+<span id="cb272-21"><a href="#cb272-21" aria-hidden="true" tabindex="-1"></a>_There is &lt;? HTML instruction ?&gt; support._</span>
+<span id="cb272-22"><a href="#cb272-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb272-23"><a href="#cb272-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb272-24"><a href="#cb272-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb245"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb245-1"><a href="#cb245-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb273"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb273-1"><a href="#cb273-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -3973,37 +4532,37 @@ comment –&gt; support. There is no &lt;? HTML instruction ?&gt;
support.</p>
<p>There is support. There is support. There is support.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-24"><span
+<h5 class="unnumbered" id="latex-example-25"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb246"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb246-1"><a href="#cb246-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb246-2"><a href="#cb246-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb246-3"><a href="#cb246-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb246-4"><a href="#cb246-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb246-5"><a href="#cb246-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb246-6"><a href="#cb246-6" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
-<span id="cb246-7"><a href="#cb246-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span>
-<span id="cb246-8"><a href="#cb246-8" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
-<span id="cb246-9"><a href="#cb246-9" aria-hidden="true" tabindex="-1"></a>*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
-<span id="cb246-10"><a href="#cb246-10" aria-hidden="true" tabindex="-1"></a>_There is no &lt;!-- comment --&gt; support._</span>
-<span id="cb246-11"><a href="#cb246-11" aria-hidden="true" tabindex="-1"></a>_There is no &lt;? HTML instruction ?&gt; support._</span>
-<span id="cb246-12"><a href="#cb246-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb246-13"><a href="#cb246-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb246-14"><a href="#cb246-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{html}</span>
-<span id="cb246-15"><a href="#cb246-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
-<span id="cb246-16"><a href="#cb246-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span>
-<span id="cb246-17"><a href="#cb246-17" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
-<span id="cb246-18"><a href="#cb246-18" aria-hidden="true" tabindex="-1"></a>*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
-<span id="cb246-19"><a href="#cb246-19" aria-hidden="true" tabindex="-1"></a>_There is &lt;!-- comment --&gt; support._</span>
-<span id="cb246-20"><a href="#cb246-20" aria-hidden="true" tabindex="-1"></a>_There is &lt;? HTML instruction ?&gt; support._</span>
-<span id="cb246-21"><a href="#cb246-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb246-22"><a href="#cb246-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb246-23"><a href="#cb246-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb274"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb274-1"><a href="#cb274-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb274-2"><a href="#cb274-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb274-3"><a href="#cb274-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb274-4"><a href="#cb274-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb274-5"><a href="#cb274-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[html = false]</span>
+<span id="cb274-6"><a href="#cb274-6" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
+<span id="cb274-7"><a href="#cb274-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span>
+<span id="cb274-8"><a href="#cb274-8" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
+<span id="cb274-9"><a href="#cb274-9" aria-hidden="true" tabindex="-1"></a>*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
+<span id="cb274-10"><a href="#cb274-10" aria-hidden="true" tabindex="-1"></a>_There is no &lt;!-- comment --&gt; support._</span>
+<span id="cb274-11"><a href="#cb274-11" aria-hidden="true" tabindex="-1"></a>_There is no &lt;? HTML instruction ?&gt; support._</span>
+<span id="cb274-12"><a href="#cb274-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb274-13"><a href="#cb274-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb274-14"><a href="#cb274-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb274-15"><a href="#cb274-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
+<span id="cb274-16"><a href="#cb274-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span>
+<span id="cb274-17"><a href="#cb274-17" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
+<span id="cb274-18"><a href="#cb274-18" aria-hidden="true" tabindex="-1"></a>*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
+<span id="cb274-19"><a href="#cb274-19" aria-hidden="true" tabindex="-1"></a>_There is &lt;!-- comment --&gt; support._</span>
+<span id="cb274-20"><a href="#cb274-20" aria-hidden="true" tabindex="-1"></a>_There is &lt;? HTML instruction ?&gt; support._</span>
+<span id="cb274-21"><a href="#cb274-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb274-22"><a href="#cb274-22" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb274-23"><a href="#cb274-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb247"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb247-1"><a href="#cb247-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb275"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb275-1"><a href="#cb275-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4013,37 +4572,38 @@ comment –&gt; support. There is no &lt;? HTML instruction ?&gt;
support.</p>
<p>There is support. There is support. There is support.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-14">Con<span
+<h5 class="unnumbered" id="context-example-16">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb248"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb248-1"><a href="#cb248-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb248-2"><a href="#cb248-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb248-3"><a href="#cb248-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb248-4"><a href="#cb248-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb248-5"><a href="#cb248-5" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
-<span id="cb248-6"><a href="#cb248-6" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span>
-<span id="cb248-7"><a href="#cb248-7" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
-<span id="cb248-8"><a href="#cb248-8" aria-hidden="true" tabindex="-1"></a>*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
-<span id="cb248-9"><a href="#cb248-9" aria-hidden="true" tabindex="-1"></a>_There is no &lt;!-- comment --&gt; support._</span>
-<span id="cb248-10"><a href="#cb248-10" aria-hidden="true" tabindex="-1"></a>_There is no &lt;? HTML instruction ?&gt; support._</span>
-<span id="cb248-11"><a href="#cb248-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb248-12"><a href="#cb248-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb248-13"><a href="#cb248-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[html = yes]</span>
-<span id="cb248-14"><a href="#cb248-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb248-15"><a href="#cb248-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
-<span id="cb248-16"><a href="#cb248-16" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span>
-<span id="cb248-17"><a href="#cb248-17" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
-<span id="cb248-18"><a href="#cb248-18" aria-hidden="true" tabindex="-1"></a>*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
-<span id="cb248-19"><a href="#cb248-19" aria-hidden="true" tabindex="-1"></a>_There is &lt;!-- comment --&gt; support._</span>
-<span id="cb248-20"><a href="#cb248-20" aria-hidden="true" tabindex="-1"></a>_There is &lt;? HTML instruction ?&gt; support._</span>
-<span id="cb248-21"><a href="#cb248-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb248-22"><a href="#cb248-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb248-23"><a href="#cb248-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb276"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb276-1"><a href="#cb276-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb276-2"><a href="#cb276-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb276-3"><a href="#cb276-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb276-4"><a href="#cb276-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[html = no]</span>
+<span id="cb276-5"><a href="#cb276-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb276-6"><a href="#cb276-6" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
+<span id="cb276-7"><a href="#cb276-7" aria-hidden="true" tabindex="-1"></a>*There is no block tag support.*</span>
+<span id="cb276-8"><a href="#cb276-8" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
+<span id="cb276-9"><a href="#cb276-9" aria-hidden="true" tabindex="-1"></a>*There is no &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
+<span id="cb276-10"><a href="#cb276-10" aria-hidden="true" tabindex="-1"></a>_There is no &lt;!-- comment --&gt; support._</span>
+<span id="cb276-11"><a href="#cb276-11" aria-hidden="true" tabindex="-1"></a>_There is no &lt;? HTML instruction ?&gt; support._</span>
+<span id="cb276-12"><a href="#cb276-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb276-13"><a href="#cb276-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb276-14"><a href="#cb276-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[html = yes]</span>
+<span id="cb276-15"><a href="#cb276-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb276-16"><a href="#cb276-16" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;</span>
+<span id="cb276-17"><a href="#cb276-17" aria-hidden="true" tabindex="-1"></a>*There is block tag support.*</span>
+<span id="cb276-18"><a href="#cb276-18" aria-hidden="true" tabindex="-1"></a>&lt;/div&gt;</span>
+<span id="cb276-19"><a href="#cb276-19" aria-hidden="true" tabindex="-1"></a>*There is &lt;inline tag=&quot;tag&quot;&gt;&lt;/inline&gt; support.*</span>
+<span id="cb276-20"><a href="#cb276-20" aria-hidden="true" tabindex="-1"></a>_There is &lt;!-- comment --&gt; support._</span>
+<span id="cb276-21"><a href="#cb276-21" aria-hidden="true" tabindex="-1"></a>_There is &lt;? HTML instruction ?&gt; support._</span>
+<span id="cb276-22"><a href="#cb276-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb276-23"><a href="#cb276-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb276-24"><a href="#cb276-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb249"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb249-1"><a href="#cb249-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb277"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb277-1"><a href="#cb277-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4053,8 +4613,8 @@ comment –&gt; support. There is no &lt;? HTML instruction ?&gt;
support.</p>
<p>There is support. There is support. There is support.</p>
</blockquote>
-<h4 data-number="2.2.1.30" id="option-hybrid"><span
-class="header-section-number">2.2.1.30</span> Option
+<h4 data-number="2.2.1.34" id="option-hybrid"><span
+class="header-section-number">2.2.1.34</span> Option
<code>hybrid</code></h4>
<dl>
<dt><code>hybrid</code> (default value: <code>false</code>)</dt>
@@ -4086,31 +4646,35 @@ prepared with this package in mind.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-10">Lua Module
+<h5 class="unnumbered" id="lua-module-example-11">Lua Module
Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb250"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb250-1"><a href="#cb250-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb250-2"><a href="#cb250-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb250-3"><a href="#cb250-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb250-4"><a href="#cb250-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb250-5"><a href="#cb250-5" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span>
-<span id="cb250-6"><a href="#cb250-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb250-7"><a href="#cb250-7" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span>
-<span id="cb250-8"><a href="#cb250-8" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span>
-<span id="cb250-9"><a href="#cb250-9" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span>
-<span id="cb250-10"><a href="#cb250-10" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span>
-<span id="cb250-11"><a href="#cb250-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb250-12"><a href="#cb250-12" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span>
-<span id="cb250-13"><a href="#cb250-13" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span>
-<span id="cb250-14"><a href="#cb250-14" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</span>
-<span id="cb250-15"><a href="#cb250-15" aria-hidden="true" tabindex="-1"></a> )</span>
-<span id="cb250-16"><a href="#cb250-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb250-17"><a href="#cb250-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb278"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb278-1"><a href="#cb278-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb278-2"><a href="#cb278-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb278-3"><a href="#cb278-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb278-4"><a href="#cb278-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb278-5"><a href="#cb278-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb278-6"><a href="#cb278-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb278-7"><a href="#cb278-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb278-8"><a href="#cb278-8" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span>
+<span id="cb278-9"><a href="#cb278-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb278-10"><a href="#cb278-10" aria-hidden="true" tabindex="-1"></a> input = [[<span class="ss">$</span><span class="sc">\string\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.]]</span>
+<span id="cb278-11"><a href="#cb278-11" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span>
+<span id="cb278-12"><a href="#cb278-12" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span>
+<span id="cb278-13"><a href="#cb278-13" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span>
+<span id="cb278-14"><a href="#cb278-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb278-15"><a href="#cb278-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span>
+<span id="cb278-16"><a href="#cb278-16" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span>
+<span id="cb278-17"><a href="#cb278-17" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</span>
+<span id="cb278-18"><a href="#cb278-18" aria-hidden="true" tabindex="-1"></a> )</span>
+<span id="cb278-19"><a href="#cb278-19" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb278-20"><a href="#cb278-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb278-21"><a href="#cb278-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb251"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb251-1"><a href="#cb251-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb279"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb279-1"><a href="#cb279-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4118,28 +4682,29 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-8">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-10">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb252"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb252-1"><a href="#cb252-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb252-2"><a href="#cb252-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb252-3"><a href="#cb252-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb252-4"><a href="#cb252-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb252-5"><a href="#cb252-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb252-6"><a href="#cb252-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb252-7"><a href="#cb252-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb252-8"><a href="#cb252-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb252-9"><a href="#cb252-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb280"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb280-1"><a href="#cb280-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb280-2"><a href="#cb280-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb280-3"><a href="#cb280-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb280-4"><a href="#cb280-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb280-5"><a href="#cb280-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb280-6"><a href="#cb280-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb280-7"><a href="#cb280-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb280-8"><a href="#cb280-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb280-9"><a href="#cb280-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb280-10"><a href="#cb280-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb253"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb253-1"><a href="#cb253-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div>
+<div class="sourceCode" id="cb281"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb281-1"><a href="#cb281-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb254"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb254-1"><a href="#cb254-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb254-2"><a href="#cb254-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb254-3"><a href="#cb254-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb282"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb282-1"><a href="#cb282-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb282-2"><a href="#cb282-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ hybrid=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb282-3"><a href="#cb282-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -4156,27 +4721,27 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-9">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-11">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb255"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb255-1"><a href="#cb255-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb255-2"><a href="#cb255-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb255-3"><a href="#cb255-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb255-4"><a href="#cb255-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb255-5"><a href="#cb255-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb255-6"><a href="#cb255-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb255-7"><a href="#cb255-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb255-8"><a href="#cb255-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
-<span id="cb255-9"><a href="#cb255-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb255-10"><a href="#cb255-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb255-11"><a href="#cb255-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb255-12"><a href="#cb255-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb255-13"><a href="#cb255-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb283"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb283-1"><a href="#cb283-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb283-2"><a href="#cb283-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb283-3"><a href="#cb283-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb283-4"><a href="#cb283-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb283-5"><a href="#cb283-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb283-6"><a href="#cb283-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb283-7"><a href="#cb283-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb283-8"><a href="#cb283-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
+<span id="cb283-9"><a href="#cb283-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb283-10"><a href="#cb283-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb283-11"><a href="#cb283-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb283-12"><a href="#cb283-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb283-13"><a href="#cb283-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb256"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb256-1"><a href="#cb256-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb284"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb284-1"><a href="#cb284-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4184,27 +4749,27 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-25"><span
+<h5 class="unnumbered" id="latex-example-26"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb257"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb257-1"><a href="#cb257-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb257-2"><a href="#cb257-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb257-3"><a href="#cb257-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb257-4"><a href="#cb257-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb257-5"><a href="#cb257-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb257-6"><a href="#cb257-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb257-7"><a href="#cb257-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb257-8"><a href="#cb257-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb257-9"><a href="#cb257-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hybrid}</span>
-<span id="cb257-10"><a href="#cb257-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb257-11"><a href="#cb257-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb257-12"><a href="#cb257-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb257-13"><a href="#cb257-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb285"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb285-1"><a href="#cb285-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb285-2"><a href="#cb285-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb285-3"><a href="#cb285-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb285-4"><a href="#cb285-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb285-5"><a href="#cb285-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb285-6"><a href="#cb285-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb285-7"><a href="#cb285-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb285-8"><a href="#cb285-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb285-9"><a href="#cb285-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</span>
+<span id="cb285-10"><a href="#cb285-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb285-11"><a href="#cb285-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb285-12"><a href="#cb285-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb285-13"><a href="#cb285-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb258"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb258-1"><a href="#cb258-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb286"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb286-1"><a href="#cb286-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4212,27 +4777,27 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-15">Con<span
+<h5 class="unnumbered" id="context-example-17">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb259"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb259-1"><a href="#cb259-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb259-2"><a href="#cb259-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb259-3"><a href="#cb259-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb259-4"><a href="#cb259-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb259-5"><a href="#cb259-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb259-6"><a href="#cb259-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb259-7"><a href="#cb259-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb259-8"><a href="#cb259-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
-<span id="cb259-9"><a href="#cb259-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb259-10"><a href="#cb259-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
-<span id="cb259-11"><a href="#cb259-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb259-12"><a href="#cb259-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb259-13"><a href="#cb259-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb287"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb287-1"><a href="#cb287-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb287-2"><a href="#cb287-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb287-3"><a href="#cb287-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb287-4"><a href="#cb287-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb287-5"><a href="#cb287-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb287-6"><a href="#cb287-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb287-7"><a href="#cb287-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb287-8"><a href="#cb287-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
+<span id="cb287-9"><a href="#cb287-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb287-10"><a href="#cb287-10" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>.</span>
+<span id="cb287-11"><a href="#cb287-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb287-12"><a href="#cb287-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb287-13"><a href="#cb287-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb260"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb260-1"><a href="#cb260-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb288"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb288-1"><a href="#cb288-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4240,8 +4805,8 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h4 data-number="2.2.1.31" id="option-inlinecodeattributes"><span
-class="header-section-number">2.2.1.31</span> Option
+<h4 data-number="2.2.1.35" id="option-inlinecodeattributes"><span
+class="header-section-number">2.2.1.35</span> Option
<code>inlineCodeAttributes</code></h4>
<dl>
<dt><code>inlineCodeAttributes</code> (default value:
@@ -4253,8 +4818,8 @@ class="header-section-number">2.2.1.31</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-inline_code_attributes">inline
code span attribute extension</a>:</p>
-<div class="sourceCode" id="cb261"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb261-1"><a href="#cb261-1" aria-hidden="true" tabindex="-1"></a><span class="in">`&lt;$&gt;`</span>{.haskell}</span></code></pre></div>
+<div class="sourceCode" id="cb289"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb289-1"><a href="#cb289-1" aria-hidden="true" tabindex="-1"></a><span class="in">`&lt;$&gt;`</span>{.haskell}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4267,56 +4832,56 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb261-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-26"><span
+<h5 class="unnumbered" id="latex-example-27"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb262"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb262-1"><a href="#cb262-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb262-2"><a href="#cb262-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb262-3"><a href="#cb262-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb262-4"><a href="#cb262-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb262-5"><a href="#cb262-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb262-6"><a href="#cb262-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb262-7"><a href="#cb262-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {</span>
-<span id="cb262-8"><a href="#cb262-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
-<span id="cb262-9"><a href="#cb262-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span>
-<span id="cb262-10"><a href="#cb262-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb262-11"><a href="#cb262-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb262-12"><a href="#cb262-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
-<span id="cb262-13"><a href="#cb262-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span>
-<span id="cb262-14"><a href="#cb262-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span>
-<span id="cb262-15"><a href="#cb262-15" aria-hidden="true" tabindex="-1"></a> { color }</span>
-<span id="cb262-16"><a href="#cb262-16" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb262-17"><a href="#cb262-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span>
-<span id="cb262-18"><a href="#cb262-18" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb262-19"><a href="#cb262-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb262-20"><a href="#cb262-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb262-21"><a href="#cb262-21" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb262-22"><a href="#cb262-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb262-23"><a href="#cb262-23" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {</span>
-<span id="cb262-24"><a href="#cb262-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span>
-<span id="cb262-25"><a href="#cb262-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb262-26"><a href="#cb262-26" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb262-27"><a href="#cb262-27" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb262-28"><a href="#cb262-28" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb262-29"><a href="#cb262-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb262-30"><a href="#cb262-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb262-31"><a href="#cb262-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb262-32"><a href="#cb262-32" aria-hidden="true" tabindex="-1"></a>Here is some `colored text`{color=red}.</span>
-<span id="cb262-33"><a href="#cb262-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb262-34"><a href="#cb262-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb290"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb290-1"><a href="#cb290-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb290-2"><a href="#cb290-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb290-3"><a href="#cb290-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb290-4"><a href="#cb290-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb290-5"><a href="#cb290-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb290-6"><a href="#cb290-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb290-7"><a href="#cb290-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {</span>
+<span id="cb290-8"><a href="#cb290-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb290-9"><a href="#cb290-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span>
+<span id="cb290-10"><a href="#cb290-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb290-11"><a href="#cb290-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb290-12"><a href="#cb290-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
+<span id="cb290-13"><a href="#cb290-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span>
+<span id="cb290-14"><a href="#cb290-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span>
+<span id="cb290-15"><a href="#cb290-15" aria-hidden="true" tabindex="-1"></a> { color }</span>
+<span id="cb290-16"><a href="#cb290-16" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb290-17"><a href="#cb290-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span>
+<span id="cb290-18"><a href="#cb290-18" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb290-19"><a href="#cb290-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb290-20"><a href="#cb290-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb290-21"><a href="#cb290-21" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb290-22"><a href="#cb290-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb290-23"><a href="#cb290-23" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {</span>
+<span id="cb290-24"><a href="#cb290-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span>
+<span id="cb290-25"><a href="#cb290-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb290-26"><a href="#cb290-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb290-27"><a href="#cb290-27" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb290-28"><a href="#cb290-28" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb290-29"><a href="#cb290-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb290-30"><a href="#cb290-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb290-31"><a href="#cb290-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb290-32"><a href="#cb290-32" aria-hidden="true" tabindex="-1"></a>Here is some `colored text`{color=red}.</span>
+<span id="cb290-33"><a href="#cb290-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb290-34"><a href="#cb290-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb263"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb263-1"><a href="#cb263-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb291"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb291-1"><a href="#cb291-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Here is some <span
style="color: red"><code>colored text</code></span>.</p>
</blockquote>
-<h4 data-number="2.2.1.32" id="option-inlinenotes"><span
-class="header-section-number">2.2.1.32</span> Option
+<h4 data-number="2.2.1.36" id="option-inlinenotes"><span
+class="header-section-number">2.2.1.36</span> Option
<code>inlineNotes</code></h4>
<dl>
<dt><code>inlineNotes</code> (default value: <code>false</code>)</dt>
@@ -4327,10 +4892,10 @@ class="header-section-number">2.2.1.32</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-inline_notes">inline note
syntax extension</a>:</p>
-<div class="sourceCode" id="cb264"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb264-1"><a href="#cb264-1" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
-<span id="cb264-2"><a href="#cb264-2" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
-<span id="cb264-3"><a href="#cb264-3" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span></code></pre></div>
+<div class="sourceCode" id="cb292"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb292-1"><a href="#cb292-1" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
+<span id="cb292-2"><a href="#cb292-2" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
+<span id="cb292-3"><a href="#cb292-3" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4343,54 +4908,54 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb264-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-27"><span
+<h5 class="unnumbered" id="latex-example-28"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb265"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb265-1"><a href="#cb265-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb265-2"><a href="#cb265-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineNotes]{<span class="ex">markdown</span>}</span>
-<span id="cb265-3"><a href="#cb265-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb265-4"><a href="#cb265-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb265-5"><a href="#cb265-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
-<span id="cb265-6"><a href="#cb265-6" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
-<span id="cb265-7"><a href="#cb265-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span>
-<span id="cb265-8"><a href="#cb265-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb265-9"><a href="#cb265-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb293"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb293-1"><a href="#cb293-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb293-2"><a href="#cb293-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineNotes]{<span class="ex">markdown</span>}</span>
+<span id="cb293-3"><a href="#cb293-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb293-4"><a href="#cb293-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb293-5"><a href="#cb293-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
+<span id="cb293-6"><a href="#cb293-6" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
+<span id="cb293-7"><a href="#cb293-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span>
+<span id="cb293-8"><a href="#cb293-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb293-9"><a href="#cb293-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb266"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb266-1"><a href="#cb266-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb294"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb294-1"><a href="#cb294-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Here is an inline note.<a href="#fn1" class="footnote-ref"
id="fnref1" role="doc-noteref"><sup>1</sup></a></p>
</blockquote>
-<h5 class="unnumbered" id="context-example-16">Con<span
+<h5 class="unnumbered" id="context-example-18">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb267"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb267-1"><a href="#cb267-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb267-2"><a href="#cb267-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[inlineNotes = yes]</span>
-<span id="cb267-3"><a href="#cb267-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb267-4"><a href="#cb267-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb267-5"><a href="#cb267-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
-<span id="cb267-6"><a href="#cb267-6" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
-<span id="cb267-7"><a href="#cb267-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span>
-<span id="cb267-8"><a href="#cb267-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb267-9"><a href="#cb267-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb295"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb295-1"><a href="#cb295-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb295-2"><a href="#cb295-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[inlineNotes = yes]</span>
+<span id="cb295-3"><a href="#cb295-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb295-4"><a href="#cb295-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb295-5"><a href="#cb295-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
+<span id="cb295-6"><a href="#cb295-6" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
+<span id="cb295-7"><a href="#cb295-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span>
+<span id="cb295-8"><a href="#cb295-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb295-9"><a href="#cb295-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb268"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb268-1"><a href="#cb268-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb296"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb296-1"><a href="#cb296-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Here is an inline note.<a href="#fn2" class="footnote-ref"
id="fnref2" role="doc-noteref"><sup>2</sup></a></p>
</blockquote>
-<h4 data-number="2.2.1.33" id="option-jekylldata"><span
-class="header-section-number">2.2.1.33</span> Option
+<h4 data-number="2.2.1.37" id="option-jekylldata"><span
+class="header-section-number">2.2.1.37</span> Option
<code>jekyllData</code></h4>
<dl>
<dt><code>jekyllData</code> (default value: <code>false</code>)</dt>
@@ -4402,18 +4967,18 @@ class="header-section-number">2.2.1.33</span> Option
href="https://pandoc.org/MANUAL.html#extension-yaml_metadata_block"><abbr>yaml</abbr>
metadata block syntax extension</a> for entering metadata in
<abbr>yaml</abbr>:</p>
-<div class="sourceCode" id="cb269"><pre
-class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb269-1"><a href="#cb269-1" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span>
-<span id="cb269-2"><a href="#cb269-2" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">&#39;This is the title: it contains a colon&#39;</span></span>
-<span id="cb269-3"><a href="#cb269-3" aria-hidden="true" tabindex="-1"></a><span class="fu">author</span><span class="kw">:</span></span>
-<span id="cb269-4"><a href="#cb269-4" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author One</span></span>
-<span id="cb269-5"><a href="#cb269-5" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author Two</span></span>
-<span id="cb269-6"><a href="#cb269-6" aria-hidden="true" tabindex="-1"></a><span class="fu">keywords</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">nothing</span><span class="kw">,</span><span class="at"> nothingness</span><span class="kw">]</span></span>
-<span id="cb269-7"><a href="#cb269-7" aria-hidden="true" tabindex="-1"></a><span class="fu">abstract</span><span class="kw">: </span><span class="ch">|</span></span>
-<span id="cb269-8"><a href="#cb269-8" aria-hidden="true" tabindex="-1"></a> This is the abstract.</span>
-<span id="cb269-9"><a href="#cb269-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb269-10"><a href="#cb269-10" aria-hidden="true" tabindex="-1"></a> It consists of two paragraphs.</span>
-<span id="cb269-11"><a href="#cb269-11" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span></code></pre></div>
+<div class="sourceCode" id="cb297"><pre
+class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb297-1"><a href="#cb297-1" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span>
+<span id="cb297-2"><a href="#cb297-2" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">&#39;This is the title: it contains a colon&#39;</span></span>
+<span id="cb297-3"><a href="#cb297-3" aria-hidden="true" tabindex="-1"></a><span class="fu">author</span><span class="kw">:</span></span>
+<span id="cb297-4"><a href="#cb297-4" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author One</span></span>
+<span id="cb297-5"><a href="#cb297-5" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author Two</span></span>
+<span id="cb297-6"><a href="#cb297-6" aria-hidden="true" tabindex="-1"></a><span class="fu">keywords</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">nothing</span><span class="kw">,</span><span class="at"> nothingness</span><span class="kw">]</span></span>
+<span id="cb297-7"><a href="#cb297-7" aria-hidden="true" tabindex="-1"></a><span class="fu">abstract</span><span class="kw">: </span><span class="ch">|</span></span>
+<span id="cb297-8"><a href="#cb297-8" aria-hidden="true" tabindex="-1"></a> This is the abstract.</span>
+<span id="cb297-9"><a href="#cb297-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb297-10"><a href="#cb297-10" aria-hidden="true" tabindex="-1"></a> It consists of two paragraphs.</span>
+<span id="cb297-11"><a href="#cb297-11" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4427,109 +4992,109 @@ for entering metadata in <abbr>yaml</abbr>.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-10">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-12">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb270"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb270-1"><a href="#cb270-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb270-2"><a href="#cb270-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
-<span id="cb270-3"><a href="#cb270-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb270-4"><a href="#cb270-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb270-5"><a href="#cb270-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb270-6"><a href="#cb270-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb270-7"><a href="#cb270-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb270-8"><a href="#cb270-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
-<span id="cb270-9"><a href="#cb270-9" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb270-10"><a href="#cb270-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb270-11"><a href="#cb270-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb270-12"><a href="#cb270-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb270-13"><a href="#cb270-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb270-14"><a href="#cb270-14" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb270-15"><a href="#cb270-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb270-16"><a href="#cb270-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb270-17"><a href="#cb270-17" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb270-18"><a href="#cb270-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb270-19"><a href="#cb270-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb298"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb298-1"><a href="#cb298-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb298-2"><a href="#cb298-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
+<span id="cb298-3"><a href="#cb298-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb298-4"><a href="#cb298-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb298-5"><a href="#cb298-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
+<span id="cb298-6"><a href="#cb298-6" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb298-7"><a href="#cb298-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
+<span id="cb298-8"><a href="#cb298-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
+<span id="cb298-9"><a href="#cb298-9" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb298-10"><a href="#cb298-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb298-11"><a href="#cb298-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb298-12"><a href="#cb298-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb298-13"><a href="#cb298-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb298-14"><a href="#cb298-14" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb298-15"><a href="#cb298-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb298-16"><a href="#cb298-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb298-17"><a href="#cb298-17" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb298-18"><a href="#cb298-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb298-19"><a href="#cb298-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb271"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb271-1"><a href="#cb271-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb299"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb299-1"><a href="#cb299-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-28"><span
+<h5 class="unnumbered" id="latex-example-29"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb272"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb272-1"><a href="#cb272-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb272-2"><a href="#cb272-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb272-3"><a href="#cb272-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb272-4"><a href="#cb272-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
-<span id="cb272-5"><a href="#cb272-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
-<span id="cb272-6"><a href="#cb272-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
-<span id="cb272-7"><a href="#cb272-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb272-8"><a href="#cb272-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb272-9"><a href="#cb272-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
-<span id="cb272-10"><a href="#cb272-10" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb272-11"><a href="#cb272-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb272-12"><a href="#cb272-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb272-13"><a href="#cb272-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb272-14"><a href="#cb272-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb272-15"><a href="#cb272-15" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb272-16"><a href="#cb272-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb272-17"><a href="#cb272-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb272-18"><a href="#cb272-18" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb272-19"><a href="#cb272-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb272-20"><a href="#cb272-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb272-21"><a href="#cb272-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb300"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb300-1"><a href="#cb300-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb300-2"><a href="#cb300-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb300-3"><a href="#cb300-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb300-4"><a href="#cb300-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
+<span id="cb300-5"><a href="#cb300-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
+<span id="cb300-6"><a href="#cb300-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
+<span id="cb300-7"><a href="#cb300-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb300-8"><a href="#cb300-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb300-9"><a href="#cb300-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
+<span id="cb300-10"><a href="#cb300-10" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb300-11"><a href="#cb300-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb300-12"><a href="#cb300-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb300-13"><a href="#cb300-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb300-14"><a href="#cb300-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb300-15"><a href="#cb300-15" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb300-16"><a href="#cb300-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb300-17"><a href="#cb300-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb300-18"><a href="#cb300-18" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb300-19"><a href="#cb300-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb300-20"><a href="#cb300-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb300-21"><a href="#cb300-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb273"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb273-1"><a href="#cb273-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb301"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb301-1"><a href="#cb301-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-17">Con<span
+<h5 class="unnumbered" id="context-example-19">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb274"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb274-1"><a href="#cb274-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb274-2"><a href="#cb274-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
-<span id="cb274-3"><a href="#cb274-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb274-4"><a href="#cb274-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb274-5"><a href="#cb274-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb274-6"><a href="#cb274-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb274-7"><a href="#cb274-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb274-8"><a href="#cb274-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
-<span id="cb274-9"><a href="#cb274-9" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb274-10"><a href="#cb274-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb274-11"><a href="#cb274-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb274-12"><a href="#cb274-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb274-13"><a href="#cb274-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb274-14"><a href="#cb274-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb274-15"><a href="#cb274-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb274-16"><a href="#cb274-16" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb274-17"><a href="#cb274-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb274-18"><a href="#cb274-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb274-19"><a href="#cb274-19" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb274-20"><a href="#cb274-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb274-21"><a href="#cb274-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb274-22"><a href="#cb274-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb302"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb302-1"><a href="#cb302-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb302-2"><a href="#cb302-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
+<span id="cb302-3"><a href="#cb302-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb302-4"><a href="#cb302-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb302-5"><a href="#cb302-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
+<span id="cb302-6"><a href="#cb302-6" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb302-7"><a href="#cb302-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
+<span id="cb302-8"><a href="#cb302-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
+<span id="cb302-9"><a href="#cb302-9" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb302-10"><a href="#cb302-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb302-11"><a href="#cb302-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb302-12"><a href="#cb302-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb302-13"><a href="#cb302-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb302-14"><a href="#cb302-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb302-15"><a href="#cb302-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb302-16"><a href="#cb302-16" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb302-17"><a href="#cb302-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb302-18"><a href="#cb302-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb302-19"><a href="#cb302-19" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb302-20"><a href="#cb302-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb302-21"><a href="#cb302-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb302-22"><a href="#cb302-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb275"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb275-1"><a href="#cb275-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb303"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb303-1"><a href="#cb303-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h4 data-number="2.2.1.34" id="option-linkattributes"><span
-class="header-section-number">2.2.1.34</span> Option
+<h4 data-number="2.2.1.38" id="option-linkattributes"><span
+class="header-section-number">2.2.1.38</span> Option
<code>linkAttributes</code></h4>
<dl>
<dt><code>linkAttributes</code> (default value: <code>false</code>)</dt>
@@ -4540,11 +5105,11 @@ class="header-section-number">2.2.1.34</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-link_attributes">link and
image attribute syntax extension</a>:</p>
-<div class="sourceCode" id="cb276"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb276-1"><a href="#cb276-1" aria-hidden="true" tabindex="-1"></a>An inline <span class="al">![image](foo.jpg)</span>{#id .class width=30 height=20px}</span>
-<span id="cb276-2"><a href="#cb276-2" aria-hidden="true" tabindex="-1"></a>and a reference <span class="al">![image][ref]</span> with attributes.</span>
-<span id="cb276-3"><a href="#cb276-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb276-4"><a href="#cb276-4" aria-hidden="true" tabindex="-1"></a><span class="ot">[ref]: </span>foo.jpg &quot;optional title&quot; {#id .class key=val key2=val2}</span></code></pre></div>
+<div class="sourceCode" id="cb304"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb304-1"><a href="#cb304-1" aria-hidden="true" tabindex="-1"></a>An inline <span class="al">![image](foo.jpg)</span>{#id .class width=30 height=20px}</span>
+<span id="cb304-2"><a href="#cb304-2" aria-hidden="true" tabindex="-1"></a>and a reference <span class="al">![image][ref]</span> with attributes.</span>
+<span id="cb304-3"><a href="#cb304-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb304-4"><a href="#cb304-4" aria-hidden="true" tabindex="-1"></a><span class="ot">[ref]: </span>foo.jpg &quot;optional title&quot; {#id .class key=val key2=val2}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4557,51 +5122,51 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb276-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-29"><span
+<h5 class="unnumbered" id="latex-example-30"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb277"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb277-1"><a href="#cb277-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb277-2"><a href="#cb277-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb277-3"><a href="#cb277-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3, graphicx</span>}</span>
-<span id="cb277-4"><a href="#cb277-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb277-5"><a href="#cb277-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb277-6"><a href="#cb277-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb277-7"><a href="#cb277-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {</span>
-<span id="cb277-8"><a href="#cb277-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
-<span id="cb277-9"><a href="#cb277-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb277-10"><a href="#cb277-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb277-11"><a href="#cb277-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
-<span id="cb277-12"><a href="#cb277-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setkeys</span></span>
-<span id="cb277-13"><a href="#cb277-13" aria-hidden="true" tabindex="-1"></a> { Gin }</span>
-<span id="cb277-14"><a href="#cb277-14" aria-hidden="true" tabindex="-1"></a> { { ##1 } = { ##2 } }</span>
-<span id="cb277-15"><a href="#cb277-15" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb277-16"><a href="#cb277-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb277-17"><a href="#cb277-17" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb277-18"><a href="#cb277-18" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb277-19"><a href="#cb277-19" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {</span>
-<span id="cb277-20"><a href="#cb277-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb277-21"><a href="#cb277-21" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb277-22"><a href="#cb277-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb277-23"><a href="#cb277-23" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb277-24"><a href="#cb277-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb277-25"><a href="#cb277-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb277-26"><a href="#cb277-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb277-27"><a href="#cb277-27" aria-hidden="true" tabindex="-1"></a>Here is an example image:</span>
-<span id="cb277-28"><a href="#cb277-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb277-29"><a href="#cb277-29" aria-hidden="true" tabindex="-1"></a> ![example image](example-image){width=5cm height=4cm}</span>
-<span id="cb277-30"><a href="#cb277-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb277-31"><a href="#cb277-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb305"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb305-1"><a href="#cb305-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb305-2"><a href="#cb305-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb305-3"><a href="#cb305-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3, graphicx</span>}</span>
+<span id="cb305-4"><a href="#cb305-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb305-5"><a href="#cb305-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb305-6"><a href="#cb305-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb305-7"><a href="#cb305-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {</span>
+<span id="cb305-8"><a href="#cb305-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb305-9"><a href="#cb305-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb305-10"><a href="#cb305-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb305-11"><a href="#cb305-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
+<span id="cb305-12"><a href="#cb305-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setkeys</span></span>
+<span id="cb305-13"><a href="#cb305-13" aria-hidden="true" tabindex="-1"></a> { Gin }</span>
+<span id="cb305-14"><a href="#cb305-14" aria-hidden="true" tabindex="-1"></a> { { ##1 } = { ##2 } }</span>
+<span id="cb305-15"><a href="#cb305-15" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb305-16"><a href="#cb305-16" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb305-17"><a href="#cb305-17" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb305-18"><a href="#cb305-18" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb305-19"><a href="#cb305-19" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {</span>
+<span id="cb305-20"><a href="#cb305-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb305-21"><a href="#cb305-21" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb305-22"><a href="#cb305-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb305-23"><a href="#cb305-23" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb305-24"><a href="#cb305-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb305-25"><a href="#cb305-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb305-26"><a href="#cb305-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb305-27"><a href="#cb305-27" aria-hidden="true" tabindex="-1"></a>Here is an example image:</span>
+<span id="cb305-28"><a href="#cb305-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb305-29"><a href="#cb305-29" aria-hidden="true" tabindex="-1"></a> ![example image](example-image){width=5cm height=4cm}</span>
+<span id="cb305-30"><a href="#cb305-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb305-31"><a href="#cb305-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb278"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb278-1"><a href="#cb278-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb306"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb306-1"><a href="#cb306-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain an example image (from <a href="https://ctan.org/pkg/mwe"
title="mwe – Packages and image files for MWEs">Martin Scharrer’s mwe
package</a>) displayed at size 5cm × 4cm.</p>
-<h4 data-number="2.2.1.35" id="option-lineblocks"><span
-class="header-section-number">2.2.1.35</span> Option
+<h4 data-number="2.2.1.39" id="option-lineblocks"><span
+class="header-section-number">2.2.1.39</span> Option
<code>lineBlocks</code></h4>
<dl>
<dt><code>lineBlocks</code> (default value: <code>false</code>)</dt>
@@ -4612,12 +5177,12 @@ class="header-section-number">2.2.1.35</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-line_blocks">line block
syntax extension</a>:</p>
-<div class="sourceCode" id="cb279"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb279-1"><a href="#cb279-1" aria-hidden="true" tabindex="-1"></a>| this is a line block that</span>
-<span id="cb279-2"><a href="#cb279-2" aria-hidden="true" tabindex="-1"></a>| spans multiple</span>
-<span id="cb279-3"><a href="#cb279-3" aria-hidden="true" tabindex="-1"></a>| even</span>
-<span id="cb279-4"><a href="#cb279-4" aria-hidden="true" tabindex="-1"></a> discontinuous</span>
-<span id="cb279-5"><a href="#cb279-5" aria-hidden="true" tabindex="-1"></a>| lines</span></code></pre></div>
+<div class="sourceCode" id="cb307"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb307-1"><a href="#cb307-1" aria-hidden="true" tabindex="-1"></a>| this is a line block that</span>
+<span id="cb307-2"><a href="#cb307-2" aria-hidden="true" tabindex="-1"></a>| spans multiple</span>
+<span id="cb307-3"><a href="#cb307-3" aria-hidden="true" tabindex="-1"></a>| even</span>
+<span id="cb307-4"><a href="#cb307-4" aria-hidden="true" tabindex="-1"></a> discontinuous</span>
+<span id="cb307-5"><a href="#cb307-5" aria-hidden="true" tabindex="-1"></a>| lines</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4630,23 +5195,23 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb279-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-11">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-13">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb280"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb280-1"><a href="#cb280-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb280-2"><a href="#cb280-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span>
-<span id="cb280-3"><a href="#cb280-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb280-4"><a href="#cb280-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb280-5"><a href="#cb280-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb280-6"><a href="#cb280-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb280-7"><a href="#cb280-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb280-8"><a href="#cb280-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb280-9"><a href="#cb280-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb308"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb308-1"><a href="#cb308-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb308-2"><a href="#cb308-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span>
+<span id="cb308-3"><a href="#cb308-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb308-4"><a href="#cb308-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb308-5"><a href="#cb308-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb308-6"><a href="#cb308-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb308-7"><a href="#cb308-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb308-8"><a href="#cb308-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb308-9"><a href="#cb308-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb281"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb281-1"><a href="#cb281-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb309"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb309-1"><a href="#cb309-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4655,24 +5220,24 @@ But I, being poor, have only my dreams;<br />
I have spread my dreams under your feet;<br />
Tread softly because you tread on my dreams.</div>
</blockquote>
-<h5 class="unnumbered" id="latex-example-30"><span
+<h5 class="unnumbered" id="latex-example-31"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb282"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb282-1"><a href="#cb282-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb282-2"><a href="#cb282-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb282-3"><a href="#cb282-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb282-4"><a href="#cb282-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb282-5"><a href="#cb282-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb282-6"><a href="#cb282-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb282-7"><a href="#cb282-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb282-8"><a href="#cb282-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb282-9"><a href="#cb282-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb282-10"><a href="#cb282-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb310"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb310-1"><a href="#cb310-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb310-2"><a href="#cb310-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb310-3"><a href="#cb310-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb310-4"><a href="#cb310-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb310-5"><a href="#cb310-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb310-6"><a href="#cb310-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb310-7"><a href="#cb310-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb310-8"><a href="#cb310-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb310-9"><a href="#cb310-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb310-10"><a href="#cb310-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb283"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb283-1"><a href="#cb283-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb311"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb311-1"><a href="#cb311-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4681,24 +5246,24 @@ But I, being poor, have only my dreams;<br />
I have spread my dreams under your feet;<br />
Tread softly because you tread on my dreams.</div>
</blockquote>
-<h5 class="unnumbered" id="context-example-18">Con<span
+<h5 class="unnumbered" id="context-example-20">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb284"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb284-1"><a href="#cb284-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb284-2"><a href="#cb284-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span>
-<span id="cb284-3"><a href="#cb284-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb284-4"><a href="#cb284-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb284-5"><a href="#cb284-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb284-6"><a href="#cb284-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb284-7"><a href="#cb284-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb284-8"><a href="#cb284-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb284-9"><a href="#cb284-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb284-10"><a href="#cb284-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb312"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb312-1"><a href="#cb312-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb312-2"><a href="#cb312-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span>
+<span id="cb312-3"><a href="#cb312-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb312-4"><a href="#cb312-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb312-5"><a href="#cb312-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb312-6"><a href="#cb312-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb312-7"><a href="#cb312-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb312-8"><a href="#cb312-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb312-9"><a href="#cb312-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb312-10"><a href="#cb312-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb285"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb285-1"><a href="#cb285-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb313"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb313-1"><a href="#cb313-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4707,8 +5272,56 @@ But I, being poor, have only my dreams;<br />
I have spread my dreams under your feet;<br />
Tread softly because you tread on my dreams.</div>
</blockquote>
-<h4 data-number="2.2.1.36" id="option-notes"><span
-class="header-section-number">2.2.1.36</span> Option
+<h4 data-number="2.2.1.40" id="option-mark"><span
+class="header-section-number">2.2.1.40</span> Option
+<code>mark</code></h4>
+<dl>
+<dt><code>mark</code> (default value: <code>false</code>)</dt>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>Enable the Pandoc <a
+href="https://pandoc.org/MANUAL.html#extension-mark">mark syntax
+extension</a>:</p>
+<div class="sourceCode" id="cb314"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb314-1"><a href="#cb314-1" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span></code></pre></div>
+</dd>
+</dl>
+</dd>
+<dd>
+<dl>
+<dt>false</dt>
+<dd>
+<p>Disable the Pandoc mark syntax extension.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h5 class="unnumbered" id="latex-example-32"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb315"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb315-1"><a href="#cb315-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb315-2"><a href="#cb315-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span>
+<span id="cb315-3"><a href="#cb315-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb315-4"><a href="#cb315-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb315-5"><a href="#cb315-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb315-6"><a href="#cb315-6" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span>
+<span id="cb315-7"><a href="#cb315-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb315-8"><a href="#cb315-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb315-9"><a href="#cb315-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb316"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb316-1"><a href="#cb316-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>This <mark>is highlighted text.</mark></p>
+</blockquote>
+<h4 data-number="2.2.1.41" id="option-notes"><span
+class="header-section-number">2.2.1.41</span> Option
<code>notes</code></h4>
<dl>
<dt><code>notes</code> (default value: <code>false</code>)</dt>
@@ -4719,24 +5332,24 @@ class="header-section-number">2.2.1.36</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-footnotes">note syntax
extension</a>:</p>
-<div class="sourceCode" id="cb286"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb286-1"><a href="#cb286-1" aria-hidden="true" tabindex="-1"></a>Here is a note reference,<span class="ot">[^1]</span> and another.<span class="ot">[^longnote]</span></span>
-<span id="cb286-2"><a href="#cb286-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-3"><a href="#cb286-3" aria-hidden="true" tabindex="-1"></a><span class="ot">[^1]: </span>Here is the note.</span>
-<span id="cb286-4"><a href="#cb286-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-5"><a href="#cb286-5" aria-hidden="true" tabindex="-1"></a><span class="ot">[^longnote]: </span>Here&#39;s one with multiple blocks.</span>
-<span id="cb286-6"><a href="#cb286-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-7"><a href="#cb286-7" aria-hidden="true" tabindex="-1"></a><span class="in"> Subsequent paragraphs are indented to show that they</span></span>
-<span id="cb286-8"><a href="#cb286-8" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
-<span id="cb286-9"><a href="#cb286-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-10"><a href="#cb286-10" aria-hidden="true" tabindex="-1"></a><span class="in"> { some.code }</span></span>
-<span id="cb286-11"><a href="#cb286-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-12"><a href="#cb286-12" aria-hidden="true" tabindex="-1"></a><span class="in"> The whole paragraph can be indented, or just the</span></span>
-<span id="cb286-13"><a href="#cb286-13" aria-hidden="true" tabindex="-1"></a><span class="in"> first line. In this way, multi-paragraph notes</span></span>
-<span id="cb286-14"><a href="#cb286-14" aria-hidden="true" tabindex="-1"></a><span class="in"> work like multi-paragraph list items.</span></span>
-<span id="cb286-15"><a href="#cb286-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-16"><a href="#cb286-16" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
-<span id="cb286-17"><a href="#cb286-17" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span></code></pre></div>
+<div class="sourceCode" id="cb317"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb317-1"><a href="#cb317-1" aria-hidden="true" tabindex="-1"></a>Here is a note reference,<span class="ot">[^1]</span> and another.<span class="ot">[^longnote]</span></span>
+<span id="cb317-2"><a href="#cb317-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-3"><a href="#cb317-3" aria-hidden="true" tabindex="-1"></a><span class="ot">[^1]: </span>Here is the note.</span>
+<span id="cb317-4"><a href="#cb317-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-5"><a href="#cb317-5" aria-hidden="true" tabindex="-1"></a><span class="ot">[^longnote]: </span>Here&#39;s one with multiple blocks.</span>
+<span id="cb317-6"><a href="#cb317-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-7"><a href="#cb317-7" aria-hidden="true" tabindex="-1"></a><span class="in"> Subsequent paragraphs are indented to show that they</span></span>
+<span id="cb317-8"><a href="#cb317-8" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
+<span id="cb317-9"><a href="#cb317-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-10"><a href="#cb317-10" aria-hidden="true" tabindex="-1"></a><span class="in"> { some.code }</span></span>
+<span id="cb317-11"><a href="#cb317-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-12"><a href="#cb317-12" aria-hidden="true" tabindex="-1"></a><span class="in"> The whole paragraph can be indented, or just the</span></span>
+<span id="cb317-13"><a href="#cb317-13" aria-hidden="true" tabindex="-1"></a><span class="in"> first line. In this way, multi-paragraph notes</span></span>
+<span id="cb317-14"><a href="#cb317-14" aria-hidden="true" tabindex="-1"></a><span class="in"> work like multi-paragraph list items.</span></span>
+<span id="cb317-15"><a href="#cb317-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-16"><a href="#cb317-16" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
+<span id="cb317-17"><a href="#cb317-17" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4749,37 +5362,37 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb286-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-31"><span
+<h5 class="unnumbered" id="latex-example-33"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb287"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb287-1"><a href="#cb287-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb287-2"><a href="#cb287-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span>
-<span id="cb287-3"><a href="#cb287-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb287-4"><a href="#cb287-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb287-5"><a href="#cb287-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span>
-<span id="cb287-6"><a href="#cb287-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb287-7"><a href="#cb287-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span>
-<span id="cb287-8"><a href="#cb287-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb287-9"><a href="#cb287-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here&#39;s one with multiple blocks.</span>
-<span id="cb287-10"><a href="#cb287-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb287-11"><a href="#cb287-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span>
-<span id="cb287-12"><a href="#cb287-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
-<span id="cb287-13"><a href="#cb287-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb287-14"><a href="#cb287-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span>
-<span id="cb287-15"><a href="#cb287-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb287-16"><a href="#cb287-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span>
-<span id="cb287-17"><a href="#cb287-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span>
-<span id="cb287-18"><a href="#cb287-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span>
-<span id="cb287-19"><a href="#cb287-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb287-20"><a href="#cb287-20" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
-<span id="cb287-21"><a href="#cb287-21" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span>
-<span id="cb287-22"><a href="#cb287-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb287-23"><a href="#cb287-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb318"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb318-1"><a href="#cb318-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb318-2"><a href="#cb318-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span>
+<span id="cb318-3"><a href="#cb318-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb318-4"><a href="#cb318-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb318-5"><a href="#cb318-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span>
+<span id="cb318-6"><a href="#cb318-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb318-7"><a href="#cb318-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span>
+<span id="cb318-8"><a href="#cb318-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb318-9"><a href="#cb318-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here&#39;s one with multiple blocks.</span>
+<span id="cb318-10"><a href="#cb318-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb318-11"><a href="#cb318-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span>
+<span id="cb318-12"><a href="#cb318-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
+<span id="cb318-13"><a href="#cb318-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb318-14"><a href="#cb318-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span>
+<span id="cb318-15"><a href="#cb318-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb318-16"><a href="#cb318-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span>
+<span id="cb318-17"><a href="#cb318-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span>
+<span id="cb318-18"><a href="#cb318-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span>
+<span id="cb318-19"><a href="#cb318-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb318-20"><a href="#cb318-20" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
+<span id="cb318-21"><a href="#cb318-21" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span>
+<span id="cb318-22"><a href="#cb318-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb318-23"><a href="#cb318-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb288"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb288-1"><a href="#cb288-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb319"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb319-1"><a href="#cb319-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4790,37 +5403,37 @@ role="doc-noteref"><sup>4</sup></a></p>
<p>This paragraph won’t be part of the note, because it isn’t
indented.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-19">Con<span
+<h5 class="unnumbered" id="context-example-21">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb290"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb290-1"><a href="#cb290-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb290-2"><a href="#cb290-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span>
-<span id="cb290-3"><a href="#cb290-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb290-4"><a href="#cb290-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb290-5"><a href="#cb290-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span>
-<span id="cb290-6"><a href="#cb290-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb290-7"><a href="#cb290-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span>
-<span id="cb290-8"><a href="#cb290-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb290-9"><a href="#cb290-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here&#39;s one with multiple blocks.</span>
-<span id="cb290-10"><a href="#cb290-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb290-11"><a href="#cb290-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span>
-<span id="cb290-12"><a href="#cb290-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
-<span id="cb290-13"><a href="#cb290-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb290-14"><a href="#cb290-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span>
-<span id="cb290-15"><a href="#cb290-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb290-16"><a href="#cb290-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span>
-<span id="cb290-17"><a href="#cb290-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span>
-<span id="cb290-18"><a href="#cb290-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span>
-<span id="cb290-19"><a href="#cb290-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb290-20"><a href="#cb290-20" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
-<span id="cb290-21"><a href="#cb290-21" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span>
-<span id="cb290-22"><a href="#cb290-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb290-23"><a href="#cb290-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb321"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb321-1"><a href="#cb321-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb321-2"><a href="#cb321-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span>
+<span id="cb321-3"><a href="#cb321-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb321-4"><a href="#cb321-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb321-5"><a href="#cb321-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span>
+<span id="cb321-6"><a href="#cb321-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb321-7"><a href="#cb321-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span>
+<span id="cb321-8"><a href="#cb321-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb321-9"><a href="#cb321-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here&#39;s one with multiple blocks.</span>
+<span id="cb321-10"><a href="#cb321-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb321-11"><a href="#cb321-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span>
+<span id="cb321-12"><a href="#cb321-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
+<span id="cb321-13"><a href="#cb321-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb321-14"><a href="#cb321-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span>
+<span id="cb321-15"><a href="#cb321-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb321-16"><a href="#cb321-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span>
+<span id="cb321-17"><a href="#cb321-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span>
+<span id="cb321-18"><a href="#cb321-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span>
+<span id="cb321-19"><a href="#cb321-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb321-20"><a href="#cb321-20" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
+<span id="cb321-21"><a href="#cb321-21" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span>
+<span id="cb321-22"><a href="#cb321-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb321-23"><a href="#cb321-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb291"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb291-1"><a href="#cb291-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb322"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb322-1"><a href="#cb322-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4831,8 +5444,8 @@ role="doc-noteref"><sup>6</sup></a></p>
<p>This paragraph won’t be part of the note, because it isn’t
indented.</p>
</blockquote>
-<h4 data-number="2.2.1.37" id="pipe-tables"><span
-class="header-section-number">2.2.1.37</span> Option
+<h4 data-number="2.2.1.42" id="pipe-tables"><span
+class="header-section-number">2.2.1.42</span> Option
<code>pipeTables</code></h4>
<dl>
<dt><code>pipeTables</code> (default value: <code>false</code>)</dt>
@@ -4841,12 +5454,12 @@ class="header-section-number">2.2.1.37</span> Option
<dt>true</dt>
<dd>
<p>Enable the <abbr>PHP</abbr> Markdown pipe table syntax extension:</p>
-<div class="sourceCode" id="cb293"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb293-1"><a href="#cb293-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb293-2"><a href="#cb293-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb293-3"><a href="#cb293-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb293-4"><a href="#cb293-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb293-5"><a href="#cb293-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span></code></pre></div>
+<div class="sourceCode" id="cb324"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb324-1"><a href="#cb324-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb324-2"><a href="#cb324-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb324-3"><a href="#cb324-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb324-4"><a href="#cb324-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb324-5"><a href="#cb324-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4860,25 +5473,25 @@ extension.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-32"><span
+<h5 class="unnumbered" id="latex-example-34"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb294"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb294-1"><a href="#cb294-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb294-2"><a href="#cb294-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables]{<span class="ex">markdown</span>}</span>
-<span id="cb294-3"><a href="#cb294-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb294-4"><a href="#cb294-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb294-5"><a href="#cb294-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb294-6"><a href="#cb294-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb294-7"><a href="#cb294-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb294-8"><a href="#cb294-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb294-9"><a href="#cb294-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb294-10"><a href="#cb294-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb294-11"><a href="#cb294-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb325"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb325-1"><a href="#cb325-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb325-2"><a href="#cb325-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables]{<span class="ex">markdown</span>}</span>
+<span id="cb325-3"><a href="#cb325-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb325-4"><a href="#cb325-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb325-5"><a href="#cb325-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb325-6"><a href="#cb325-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb325-7"><a href="#cb325-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb325-8"><a href="#cb325-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb325-9"><a href="#cb325-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb325-10"><a href="#cb325-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb325-11"><a href="#cb325-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb295"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb295-1"><a href="#cb295-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb326"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb326-1"><a href="#cb326-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4913,25 +5526,25 @@ contain the following text:</p>
</tbody>
</table>
</blockquote>
-<h5 class="unnumbered" id="context-example-20">Con<span
+<h5 class="unnumbered" id="context-example-22">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb296"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb296-1"><a href="#cb296-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb296-2"><a href="#cb296-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[pipeTables = yes]</span>
-<span id="cb296-3"><a href="#cb296-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb296-4"><a href="#cb296-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb296-5"><a href="#cb296-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb296-6"><a href="#cb296-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb296-7"><a href="#cb296-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb296-8"><a href="#cb296-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb296-9"><a href="#cb296-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb296-10"><a href="#cb296-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb296-11"><a href="#cb296-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb327"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb327-1"><a href="#cb327-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb327-2"><a href="#cb327-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[pipeTables = yes]</span>
+<span id="cb327-3"><a href="#cb327-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb327-4"><a href="#cb327-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb327-5"><a href="#cb327-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb327-6"><a href="#cb327-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb327-7"><a href="#cb327-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb327-8"><a href="#cb327-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb327-9"><a href="#cb327-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb327-10"><a href="#cb327-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb327-11"><a href="#cb327-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb297"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb297-1"><a href="#cb297-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb328"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb328-1"><a href="#cb328-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4966,11 +5579,11 @@ contain the following text:</p>
</tbody>
</table>
</blockquote>
-<h4 data-number="2.2.1.38" id="option-preservetabs"><span
-class="header-section-number">2.2.1.38</span> Option
+<h4 data-number="2.2.1.43" id="option-preservetabs"><span
+class="header-section-number">2.2.1.43</span> Option
<code>preserveTabs</code></h4>
<dl>
-<dt><code>preserveTabs</code> (default value: <code>false</code>)</dt>
+<dt><code>preserveTabs</code> (default value: <code>true</code>)</dt>
<dd>
<dl>
<dt>true</dt>
@@ -4988,8 +5601,8 @@ class="header-section-number">2.2.1.38</span> Option
</dl>
</dd>
</dl>
-<h4 data-number="2.2.1.39" id="option-rawattribute"><span
-class="header-section-number">2.2.1.39</span> Option
+<h4 data-number="2.2.1.44" id="option-rawattribute"><span
+class="header-section-number">2.2.1.44</span> Option
<code>rawAttribute</code></h4>
<dl>
<dt><code>rawAttribute</code> (default value: <code>false</code>)</dt>
@@ -5000,20 +5613,20 @@ class="header-section-number">2.2.1.39</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-raw_attribute">raw
attribute syntax extension</a>:</p>
-<div class="sourceCode" id="cb298"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb298-1"><a href="#cb298-1" aria-hidden="true" tabindex="-1"></a><span class="in">`$H_2 O$`</span>{=tex} is a liquid.</span></code></pre></div>
+<div class="sourceCode" id="cb329"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb329-1"><a href="#cb329-1" aria-hidden="true" tabindex="-1"></a><span class="in">`$H_2 O$`</span>{=tex} is a liquid.</span></code></pre></div>
<p>To enable raw blocks, the <strong><code>fencedCode</code></strong>
option must also be enabled:</p>
-<div class="sourceCode" id="cb299"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb299-1"><a href="#cb299-1" aria-hidden="true" tabindex="-1"></a><span class="an">Here is a mathematical formula:</span></span>
-<span id="cb299-2"><a href="#cb299-2" aria-hidden="true" tabindex="-1"></a><span class="in">``` {=tex}</span></span>
-<span id="cb299-3"><a href="#cb299-3" aria-hidden="true" tabindex="-1"></a><span class="in">\[distance[i] =</span></span>
-<span id="cb299-4"><a href="#cb299-4" aria-hidden="true" tabindex="-1"></a><span class="in"> \begin{dcases}</span></span>
-<span id="cb299-5"><a href="#cb299-5" aria-hidden="true" tabindex="-1"></a><span class="in"> a &amp; b \\</span></span>
-<span id="cb299-6"><a href="#cb299-6" aria-hidden="true" tabindex="-1"></a><span class="in"> c &amp; d</span></span>
-<span id="cb299-7"><a href="#cb299-7" aria-hidden="true" tabindex="-1"></a><span class="in"> \end{dcases}</span></span>
-<span id="cb299-8"><a href="#cb299-8" aria-hidden="true" tabindex="-1"></a><span class="in">\]</span></span>
-<span id="cb299-9"><a href="#cb299-9" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div>
+<div class="sourceCode" id="cb330"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb330-1"><a href="#cb330-1" aria-hidden="true" tabindex="-1"></a><span class="an">Here is a mathematical formula:</span></span>
+<span id="cb330-2"><a href="#cb330-2" aria-hidden="true" tabindex="-1"></a><span class="in">``` {=tex}</span></span>
+<span id="cb330-3"><a href="#cb330-3" aria-hidden="true" tabindex="-1"></a><span class="in">\[distance[i] =</span></span>
+<span id="cb330-4"><a href="#cb330-4" aria-hidden="true" tabindex="-1"></a><span class="in"> \begin{dcases}</span></span>
+<span id="cb330-5"><a href="#cb330-5" aria-hidden="true" tabindex="-1"></a><span class="in"> a &amp; b \\</span></span>
+<span id="cb330-6"><a href="#cb330-6" aria-hidden="true" tabindex="-1"></a><span class="in"> c &amp; d</span></span>
+<span id="cb330-7"><a href="#cb330-7" aria-hidden="true" tabindex="-1"></a><span class="in"> \end{dcases}</span></span>
+<span id="cb330-8"><a href="#cb330-8" aria-hidden="true" tabindex="-1"></a><span class="in">\]</span></span>
+<span id="cb330-9"><a href="#cb330-9" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div>
<p>The <strong><code>rawAttribute</code></strong> option is a good
alternative to the <strong><code>hybrid</code></strong> option. Unlike
the <strong><code>hybrid</code></strong> option, which affects the
@@ -5031,33 +5644,33 @@ allows you to isolate the parts of your documents that use TeX:</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-33"><span
+<h5 class="unnumbered" id="latex-example-35"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb300"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb300-1"><a href="#cb300-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb300-2"><a href="#cb300-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb300-3"><a href="#cb300-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb300-4"><a href="#cb300-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb300-5"><a href="#cb300-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb300-6"><a href="#cb300-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span>
-<span id="cb300-7"><a href="#cb300-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb300-8"><a href="#cb300-8" aria-hidden="true" tabindex="-1"></a>``` {=html}</span>
-<span id="cb300-9"><a href="#cb300-9" aria-hidden="true" tabindex="-1"></a>&lt;p&gt;Here is some HTML content that will be ignored.&lt;/p&gt;</span>
-<span id="cb300-10"><a href="#cb300-10" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb300-11"><a href="#cb300-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb300-12"><a href="#cb300-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb331"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb331-1"><a href="#cb331-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb331-2"><a href="#cb331-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
+<span id="cb331-3"><a href="#cb331-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb331-4"><a href="#cb331-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb331-5"><a href="#cb331-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb331-6"><a href="#cb331-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span>
+<span id="cb331-7"><a href="#cb331-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb331-8"><a href="#cb331-8" aria-hidden="true" tabindex="-1"></a>``` {=html}</span>
+<span id="cb331-9"><a href="#cb331-9" aria-hidden="true" tabindex="-1"></a>&lt;p&gt;Here is some HTML content that will be ignored.&lt;/p&gt;</span>
+<span id="cb331-10"><a href="#cb331-10" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb331-11"><a href="#cb331-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb331-12"><a href="#cb331-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb301"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb301-1"><a href="#cb301-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb332"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb332-1"><a href="#cb332-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>H<sub>2</sub>O is a liquid.</p>
</blockquote>
-<h4 data-number="2.2.1.40" id="option-relativereferences"><span
-class="header-section-number">2.2.1.40</span> Option
+<h4 data-number="2.2.1.45" id="option-relativereferences"><span
+class="header-section-number">2.2.1.45</span> Option
<code>relativeReferences</code></h4>
<dl>
<dt><code>relativeReferences</code> (default value:
@@ -5069,14 +5682,14 @@ class="header-section-number">2.2.1.40</span> Option
<p>Enable <a
href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">relative
references</a> in autolinks:</p>
-<div class="sourceCode" id="cb302"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb302-1"><a href="#cb302-1" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</span>
-<span id="cb302-2"><a href="#cb302-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb302-3"><a href="#cb302-3" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span>
-<span id="cb302-4"><a href="#cb302-4" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span>
-<span id="cb302-5"><a href="#cb302-5" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
-<span id="cb302-6"><a href="#cb302-6" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
-<span id="cb302-7"><a href="#cb302-7" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span></code></pre></div>
+<div class="sourceCode" id="cb333"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb333-1"><a href="#cb333-1" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</span>
+<span id="cb333-2"><a href="#cb333-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb333-3"><a href="#cb333-3" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span>
+<span id="cb333-4"><a href="#cb333-4" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span>
+<span id="cb333-5"><a href="#cb333-5" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
+<span id="cb333-6"><a href="#cb333-6" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
+<span id="cb333-7"><a href="#cb333-7" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5089,30 +5702,30 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb302-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-34"><span
+<h5 class="unnumbered" id="latex-example-36"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb303"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb303-1"><a href="#cb303-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb303-2"><a href="#cb303-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, relativeReferences]{<span class="ex">markdown</span>}</span>
-<span id="cb303-3"><a href="#cb303-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb303-4"><a href="#cb303-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb303-5"><a href="#cb303-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb303-6"><a href="#cb303-6" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</span>
-<span id="cb303-7"><a href="#cb303-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb303-8"><a href="#cb303-8" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span>
-<span id="cb303-9"><a href="#cb303-9" aria-hidden="true" tabindex="-1"></a>==========</span>
-<span id="cb303-10"><a href="#cb303-10" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
-<span id="cb303-11"><a href="#cb303-11" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
-<span id="cb303-12"><a href="#cb303-12" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span>
-<span id="cb303-13"><a href="#cb303-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb303-14"><a href="#cb303-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb303-15"><a href="#cb303-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb334"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb334-1"><a href="#cb334-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb334-2"><a href="#cb334-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, relativeReferences]{<span class="ex">markdown</span>}</span>
+<span id="cb334-3"><a href="#cb334-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb334-4"><a href="#cb334-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb334-5"><a href="#cb334-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb334-6"><a href="#cb334-6" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</span>
+<span id="cb334-7"><a href="#cb334-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb334-8"><a href="#cb334-8" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span>
+<span id="cb334-9"><a href="#cb334-9" aria-hidden="true" tabindex="-1"></a>==========</span>
+<span id="cb334-10"><a href="#cb334-10" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
+<span id="cb334-11"><a href="#cb334-11" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
+<span id="cb334-12"><a href="#cb334-12" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span>
+<span id="cb334-13"><a href="#cb334-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb334-14"><a href="#cb334-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb334-15"><a href="#cb334-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX twice from the terminal:</p>
-<div class="sourceCode" id="cb304"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb304-1"><a href="#cb304-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb304-2"><a href="#cb304-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb335"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb335-1"><a href="#cb335-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb335-2"><a href="#cb335-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5121,8 +5734,8 @@ contain the following text:</p>
<p>In this paper, we have discovered that most grandmas would rather eat
dinner with their grandchildren than get eaten. Begone, wolf!</p>
</blockquote>
-<h4 data-number="2.2.1.41" id="option-shiftheadings"><span
-class="header-section-number">2.2.1.41</span> Option
+<h4 data-number="2.2.1.46" id="option-shiftheadings"><span
+class="header-section-number">2.2.1.46</span> Option
<code>shiftHeadings</code></h4>
<dl>
<dt><code>shiftHeadings</code> (default value: <code>0</code>)</dt>
@@ -5134,36 +5747,36 @@ when ⟨<em>shift amount</em>⟩ is positive, and to level 1, when
⟨<em>shift amount</em>⟩ is negative.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-12">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-14">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>example.md</code> with the following content:</p>
-<div class="sourceCode" id="cb305"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb305-1"><a href="#cb305-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div>
+<div class="sourceCode" id="cb336"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb336-1"><a href="#cb336-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb306"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb306-1"><a href="#cb306-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb306-2"><a href="#cb306-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb306-3"><a href="#cb306-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
-<span id="cb306-4"><a href="#cb306-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
-<span id="cb306-5"><a href="#cb306-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span>
-<span id="cb306-6"><a href="#cb306-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
-<span id="cb306-7"><a href="#cb306-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span>
-<span id="cb306-8"><a href="#cb306-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb306-9"><a href="#cb306-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{-1}</span>
-<span id="cb306-10"><a href="#cb306-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb306-11"><a href="#cb306-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb306-12"><a href="#cb306-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{0}</span>
-<span id="cb306-13"><a href="#cb306-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb306-14"><a href="#cb306-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb306-15"><a href="#cb306-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{+1}</span>
-<span id="cb306-16"><a href="#cb306-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb306-17"><a href="#cb306-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb306-18"><a href="#cb306-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb337"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb337-1"><a href="#cb337-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb337-2"><a href="#cb337-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb337-3"><a href="#cb337-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
+<span id="cb337-4"><a href="#cb337-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
+<span id="cb337-5"><a href="#cb337-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span>
+<span id="cb337-6"><a href="#cb337-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
+<span id="cb337-7"><a href="#cb337-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span>
+<span id="cb337-8"><a href="#cb337-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb337-9"><a href="#cb337-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{-1}</span>
+<span id="cb337-10"><a href="#cb337-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb337-11"><a href="#cb337-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb337-12"><a href="#cb337-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{0}</span>
+<span id="cb337-13"><a href="#cb337-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb337-14"><a href="#cb337-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb337-15"><a href="#cb337-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{+1}</span>
+<span id="cb337-16"><a href="#cb337-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb337-17"><a href="#cb337-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb337-18"><a href="#cb337-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb307"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb307-1"><a href="#cb307-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb338"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb338-1"><a href="#cb338-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5171,24 +5784,24 @@ contain the following text:</p>
<h2 id="a-section-1">A section</h2>
<h3 id="a-section-2">A section</h3>
</blockquote>
-<h5 class="unnumbered" id="latex-example-35"><span
+<h5 class="unnumbered" id="latex-example-37"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb308"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb308-1"><a href="#cb308-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb308-2"><a href="#cb308-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb308-3"><a href="#cb308-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{example.md}</span>
-<span id="cb308-4"><a href="#cb308-4" aria-hidden="true" tabindex="-1"></a>## A section</span>
-<span id="cb308-5"><a href="#cb308-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
-<span id="cb308-6"><a href="#cb308-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb308-7"><a href="#cb308-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=-1]{example.md}</span>
-<span id="cb308-8"><a href="#cb308-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb308-9"><a href="#cb308-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=+1]{example.md}</span>
-<span id="cb308-10"><a href="#cb308-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb339"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb339-1"><a href="#cb339-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb339-2"><a href="#cb339-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb339-3"><a href="#cb339-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{example.md}</span>
+<span id="cb339-4"><a href="#cb339-4" aria-hidden="true" tabindex="-1"></a>## A section</span>
+<span id="cb339-5"><a href="#cb339-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
+<span id="cb339-6"><a href="#cb339-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb339-7"><a href="#cb339-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=-1]{example.md}</span>
+<span id="cb339-8"><a href="#cb339-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb339-9"><a href="#cb339-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=+1]{example.md}</span>
+<span id="cb339-10"><a href="#cb339-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb309"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb309-1"><a href="#cb309-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb340"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb340-1"><a href="#cb340-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5196,26 +5809,26 @@ contain the following text:</p>
<h2 id="a-section-4">A section</h2>
<h3 id="a-section-5">A section</h3>
</blockquote>
-<h5 class="unnumbered" id="context-example-21">Con<span
+<h5 class="unnumbered" id="context-example-23">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>example.md</code> with the following content:</p>
-<div class="sourceCode" id="cb310"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb310-1"><a href="#cb310-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div>
+<div class="sourceCode" id="cb341"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb341-1"><a href="#cb341-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb311"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb311-1"><a href="#cb311-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb311-2"><a href="#cb311-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb311-3"><a href="#cb311-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb311-4"><a href="#cb311-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = -1]{example.md}</span>
-<span id="cb311-5"><a href="#cb311-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = 0]{example.md}</span>
-<span id="cb311-6"><a href="#cb311-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = +1]{example.md}</span>
-<span id="cb311-7"><a href="#cb311-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb311-8"><a href="#cb311-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb342"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb342-1"><a href="#cb342-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb342-2"><a href="#cb342-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb342-3"><a href="#cb342-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb342-4"><a href="#cb342-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = -1]{example.md}</span>
+<span id="cb342-5"><a href="#cb342-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = 0]{example.md}</span>
+<span id="cb342-6"><a href="#cb342-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = +1]{example.md}</span>
+<span id="cb342-7"><a href="#cb342-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb342-8"><a href="#cb342-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb312"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb312-1"><a href="#cb312-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb343"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb343-1"><a href="#cb343-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5223,8 +5836,8 @@ contain the following text:</p>
<h2 id="a-section-7">A section</h2>
<h3 id="a-section-8">A section</h3>
</blockquote>
-<h4 data-number="2.2.1.42" id="option-slice"><span
-class="header-section-number">2.2.1.42</span> Option
+<h4 data-number="2.2.1.47" id="option-slice"><span
+class="header-section-number">2.2.1.47</span> Option
<code>slice</code></h4>
<dl>
<dt><code>slice</code> (default value: <code>^ $</code>)</dt>
@@ -5255,47 +5868,47 @@ i.e. the entire section with the <abbr>HTML</abbr> attribute
<code>#</code>⟨<em>identifier</em>⟩ will be selected.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-13">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-15">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>hamlet.md</code> with the following content:</p>
-<div class="sourceCode" id="cb313"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb313-1"><a href="#cb313-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span>
-<span id="cb313-2"><a href="#cb313-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
-<span id="cb313-3"><a href="#cb313-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb313-4"><a href="#cb313-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span>
-<span id="cb313-5"><a href="#cb313-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
-<span id="cb313-6"><a href="#cb313-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb313-7"><a href="#cb313-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
-<span id="cb313-8"><a href="#cb313-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
-<span id="cb313-9"><a href="#cb313-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb313-10"><a href="#cb313-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span>
-<span id="cb313-11"><a href="#cb313-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div>
+<div class="sourceCode" id="cb344"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb344-1"><a href="#cb344-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span>
+<span id="cb344-2"><a href="#cb344-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
+<span id="cb344-3"><a href="#cb344-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb344-4"><a href="#cb344-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span>
+<span id="cb344-5"><a href="#cb344-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
+<span id="cb344-6"><a href="#cb344-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb344-7"><a href="#cb344-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
+<span id="cb344-8"><a href="#cb344-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
+<span id="cb344-9"><a href="#cb344-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb344-10"><a href="#cb344-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span>
+<span id="cb344-11"><a href="#cb344-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb314"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb314-1"><a href="#cb314-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb314-2"><a href="#cb314-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHeaderAttributes</span>{true}</span>
-<span id="cb314-3"><a href="#cb314-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb314-4"><a href="#cb314-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
-<span id="cb314-5"><a href="#cb314-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
-<span id="cb314-6"><a href="#cb314-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span>
-<span id="cb314-7"><a href="#cb314-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
-<span id="cb314-8"><a href="#cb314-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span>
-<span id="cb314-9"><a href="#cb314-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb314-10"><a href="#cb314-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{^ ^act-3}</span>
-<span id="cb314-11"><a href="#cb314-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
-<span id="cb314-12"><a href="#cb314-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb314-13"><a href="#cb314-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-1}</span>
-<span id="cb314-14"><a href="#cb314-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
-<span id="cb314-15"><a href="#cb314-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb314-16"><a href="#cb314-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-3 act-5}</span>
-<span id="cb314-17"><a href="#cb314-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
-<span id="cb314-18"><a href="#cb314-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb314-19"><a href="#cb314-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb345"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb345-1"><a href="#cb345-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb345-2"><a href="#cb345-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHeaderAttributes</span>{true}</span>
+<span id="cb345-3"><a href="#cb345-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb345-4"><a href="#cb345-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
+<span id="cb345-5"><a href="#cb345-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
+<span id="cb345-6"><a href="#cb345-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>#1{{<span class="fu">\big</span> #1<span class="fu">\par</span>}}</span>
+<span id="cb345-7"><a href="#cb345-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
+<span id="cb345-8"><a href="#cb345-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>#1{{<span class="fu">\bigger</span> #1<span class="fu">\par</span>}}</span>
+<span id="cb345-9"><a href="#cb345-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb345-10"><a href="#cb345-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{^ ^act-3}</span>
+<span id="cb345-11"><a href="#cb345-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
+<span id="cb345-12"><a href="#cb345-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb345-13"><a href="#cb345-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-1}</span>
+<span id="cb345-14"><a href="#cb345-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
+<span id="cb345-15"><a href="#cb345-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb345-16"><a href="#cb345-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-3 act-5}</span>
+<span id="cb345-17"><a href="#cb345-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
+<span id="cb345-18"><a href="#cb345-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb345-19"><a href="#cb345-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb315"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb315-1"><a href="#cb315-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb346"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb346-1"><a href="#cb346-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5308,34 +5921,34 @@ contain the following text:</p>
<h2 id="act-v">Act V</h2>
<p>Hamlet dies.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-36"><span
+<h5 class="unnumbered" id="latex-example-38"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb316"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb316-1"><a href="#cb316-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb316-2"><a href="#cb316-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb316-3"><a href="#cb316-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{hamlet.md}</span>
-<span id="cb316-4"><a href="#cb316-4" aria-hidden="true" tabindex="-1"></a># The Tragedy of Hamlet</span>
-<span id="cb316-5"><a href="#cb316-5" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
-<span id="cb316-6"><a href="#cb316-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb316-7"><a href="#cb316-7" aria-hidden="true" tabindex="-1"></a>## Act III {#act-3}</span>
-<span id="cb316-8"><a href="#cb316-8" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
-<span id="cb316-9"><a href="#cb316-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb316-10"><a href="#cb316-10" aria-hidden="true" tabindex="-1"></a>## Act V {#act-5}</span>
-<span id="cb316-11"><a href="#cb316-11" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
-<span id="cb316-12"><a href="#cb316-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb316-13"><a href="#cb316-13" aria-hidden="true" tabindex="-1"></a>## Act I {#act-1}</span>
-<span id="cb316-14"><a href="#cb316-14" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span>
-<span id="cb316-15"><a href="#cb316-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
-<span id="cb316-16"><a href="#cb316-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb316-17"><a href="#cb316-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=^ ^act-3]{hamlet.md}</span>
-<span id="cb316-18"><a href="#cb316-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-1]{hamlet.md}</span>
-<span id="cb316-19"><a href="#cb316-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-3 act-5]{hamlet.md}</span>
-<span id="cb316-20"><a href="#cb316-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb347"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb347-1"><a href="#cb347-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb347-2"><a href="#cb347-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb347-3"><a href="#cb347-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{hamlet.md}</span>
+<span id="cb347-4"><a href="#cb347-4" aria-hidden="true" tabindex="-1"></a># The Tragedy of Hamlet</span>
+<span id="cb347-5"><a href="#cb347-5" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
+<span id="cb347-6"><a href="#cb347-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb347-7"><a href="#cb347-7" aria-hidden="true" tabindex="-1"></a>## Act III {#act-3}</span>
+<span id="cb347-8"><a href="#cb347-8" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
+<span id="cb347-9"><a href="#cb347-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb347-10"><a href="#cb347-10" aria-hidden="true" tabindex="-1"></a>## Act V {#act-5}</span>
+<span id="cb347-11"><a href="#cb347-11" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
+<span id="cb347-12"><a href="#cb347-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb347-13"><a href="#cb347-13" aria-hidden="true" tabindex="-1"></a>## Act I {#act-1}</span>
+<span id="cb347-14"><a href="#cb347-14" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span>
+<span id="cb347-15"><a href="#cb347-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
+<span id="cb347-16"><a href="#cb347-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb347-17"><a href="#cb347-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=^ ^act-3]{hamlet.md}</span>
+<span id="cb347-18"><a href="#cb347-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-1]{hamlet.md}</span>
+<span id="cb347-19"><a href="#cb347-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-3 act-5]{hamlet.md}</span>
+<span id="cb347-20"><a href="#cb347-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb317"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb317-1"><a href="#cb317-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb348"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb348-1"><a href="#cb348-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5348,37 +5961,37 @@ contain the following text:</p>
<h2 id="act-v-1">Act V</h2>
<p>Hamlet dies.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-22">Con<span
+<h5 class="unnumbered" id="context-example-24">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>hamlet.md</code> with the following content:</p>
-<div class="sourceCode" id="cb318"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb318-1"><a href="#cb318-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span>
-<span id="cb318-2"><a href="#cb318-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
-<span id="cb318-3"><a href="#cb318-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb318-4"><a href="#cb318-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span>
-<span id="cb318-5"><a href="#cb318-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
-<span id="cb318-6"><a href="#cb318-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb318-7"><a href="#cb318-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
-<span id="cb318-8"><a href="#cb318-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
-<span id="cb318-9"><a href="#cb318-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb318-10"><a href="#cb318-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span>
-<span id="cb318-11"><a href="#cb318-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div>
+<div class="sourceCode" id="cb349"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb349-1"><a href="#cb349-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span>
+<span id="cb349-2"><a href="#cb349-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
+<span id="cb349-3"><a href="#cb349-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb349-4"><a href="#cb349-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span>
+<span id="cb349-5"><a href="#cb349-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
+<span id="cb349-6"><a href="#cb349-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb349-7"><a href="#cb349-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
+<span id="cb349-8"><a href="#cb349-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
+<span id="cb349-9"><a href="#cb349-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb349-10"><a href="#cb349-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span>
+<span id="cb349-11"><a href="#cb349-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb319"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb319-1"><a href="#cb319-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb319-2"><a href="#cb319-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[headerAttributes = yes]</span>
-<span id="cb319-3"><a href="#cb319-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb319-4"><a href="#cb319-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb319-5"><a href="#cb319-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = ^ ^act-3]{example.md}</span>
-<span id="cb319-6"><a href="#cb319-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-1]{example.md}</span>
-<span id="cb319-7"><a href="#cb319-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-3 act-5]{example.md}</span>
-<span id="cb319-8"><a href="#cb319-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb319-9"><a href="#cb319-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb350"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb350-1"><a href="#cb350-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb350-2"><a href="#cb350-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[headerAttributes = yes]</span>
+<span id="cb350-3"><a href="#cb350-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb350-4"><a href="#cb350-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb350-5"><a href="#cb350-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = ^ ^act-3]{example.md}</span>
+<span id="cb350-6"><a href="#cb350-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-1]{example.md}</span>
+<span id="cb350-7"><a href="#cb350-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-3 act-5]{example.md}</span>
+<span id="cb350-8"><a href="#cb350-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb350-9"><a href="#cb350-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb320"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb320-1"><a href="#cb320-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb351"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb351-1"><a href="#cb351-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5391,8 +6004,8 @@ contain the following text:</p>
<h2 id="act-v-2">Act V</h2>
<p>Hamlet dies.</p>
</blockquote>
-<h4 data-number="2.2.1.43" id="option-smartellipses"><span
-class="header-section-number">2.2.1.43</span> Option
+<h4 data-number="2.2.1.48" id="option-smartellipses"><span
+class="header-section-number">2.2.1.48</span> Option
<code>smartEllipses</code></h4>
<dl>
<dt><code>smartEllipses</code> (default value: <code>false</code>)</dt>
@@ -5415,55 +6028,63 @@ class="tex">T<sub>e</sub>X</span> macro.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-11">Lua Module
+<h5 class="unnumbered" id="lua-module-example-12">Lua Module
Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb321"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb321-1"><a href="#cb321-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb321-2"><a href="#cb321-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb321-3"><a href="#cb321-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb321-4"><a href="#cb321-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb321-5"><a href="#cb321-5" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb321-6"><a href="#cb321-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
-<span id="cb321-7"><a href="#cb321-7" aria-hidden="true" tabindex="-1"></a> local input = &quot;These are just three regular dots ...&quot;</span>
-<span id="cb321-8"><a href="#cb321-8" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb321-9"><a href="#cb321-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb321-10"><a href="#cb321-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb321-11"><a href="#cb321-11" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb321-12"><a href="#cb321-12" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({smartEllipses = true})</span>
-<span id="cb321-13"><a href="#cb321-13" aria-hidden="true" tabindex="-1"></a> local input = &quot;... and this is a victorian ellipsis.&quot;</span>
-<span id="cb321-14"><a href="#cb321-14" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb321-15"><a href="#cb321-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb352"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb352-1"><a href="#cb352-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb352-2"><a href="#cb352-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb352-3"><a href="#cb352-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
+<span id="cb352-4"><a href="#cb352-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb352-5"><a href="#cb352-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb352-6"><a href="#cb352-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb352-7"><a href="#cb352-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb352-8"><a href="#cb352-8" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb352-9"><a href="#cb352-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
+<span id="cb352-10"><a href="#cb352-10" aria-hidden="true" tabindex="-1"></a> local input = &quot;These are just three regular dots ...&quot;</span>
+<span id="cb352-11"><a href="#cb352-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb352-12"><a href="#cb352-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb352-13"><a href="#cb352-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb352-14"><a href="#cb352-14" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb352-15"><a href="#cb352-15" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({smartEllipses = true})</span>
+<span id="cb352-16"><a href="#cb352-16" aria-hidden="true" tabindex="-1"></a> local input = &quot;... and this is a victorian ellipsis.&quot;</span>
+<span id="cb352-17"><a href="#cb352-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb352-18"><a href="#cb352-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb352-19"><a href="#cb352-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb322"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb322-1"><a href="#cb322-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb353"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb353-1"><a href="#cb353-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>These are just three regular dots …</p>
<p>. . . and this is a victorian ellipsis.</p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-9">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-11">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb323"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb323-1"><a href="#cb323-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb323-2"><a href="#cb323-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb323-3"><a href="#cb323-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb323-4"><a href="#cb323-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb323-5"><a href="#cb323-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb323-6"><a href="#cb323-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb323-7"><a href="#cb323-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb354"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb354-1"><a href="#cb354-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb354-2"><a href="#cb354-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb354-3"><a href="#cb354-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
+<span id="cb354-4"><a href="#cb354-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb354-5"><a href="#cb354-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb354-6"><a href="#cb354-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb354-7"><a href="#cb354-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb354-8"><a href="#cb354-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb354-9"><a href="#cb354-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb354-10"><a href="#cb354-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb354-11"><a href="#cb354-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb324"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb324-1"><a href="#cb324-1" aria-hidden="true" tabindex="-1"></a>Are these just three regular dots, a victorian ellipsis, or ... ?</span></code></pre></div>
+<div class="sourceCode" id="cb355"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb355-1"><a href="#cb355-1" aria-hidden="true" tabindex="-1"></a>Are these just three regular dots, a victorian ellipsis, or ... ?</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb325"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb325-1"><a href="#cb325-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb325-2"><a href="#cb325-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ smartEllipses=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb325-3"><a href="#cb325-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb356"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb356-1"><a href="#cb356-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb356-2"><a href="#cb356-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ smartEllipses=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb356-3"><a href="#cb356-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -5480,95 +6101,95 @@ contain the following text:</p>
<p>Are these just three regular dots, a victorian ellipsis, or . . .
?</p>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-14">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-16">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb326"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb326-1"><a href="#cb326-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb326-2"><a href="#cb326-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb326-3"><a href="#cb326-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb326-4"><a href="#cb326-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb326-5"><a href="#cb326-5" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
-<span id="cb326-6"><a href="#cb326-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb326-7"><a href="#cb326-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb326-8"><a href="#cb326-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
-<span id="cb326-9"><a href="#cb326-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb326-10"><a href="#cb326-10" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
-<span id="cb326-11"><a href="#cb326-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb326-12"><a href="#cb326-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb326-13"><a href="#cb326-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb357"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb357-1"><a href="#cb357-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb357-2"><a href="#cb357-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
+<span id="cb357-3"><a href="#cb357-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb357-4"><a href="#cb357-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb357-5"><a href="#cb357-5" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
+<span id="cb357-6"><a href="#cb357-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb357-7"><a href="#cb357-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb357-8"><a href="#cb357-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
+<span id="cb357-9"><a href="#cb357-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb357-10"><a href="#cb357-10" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
+<span id="cb357-11"><a href="#cb357-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb357-12"><a href="#cb357-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb357-13"><a href="#cb357-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb327"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb327-1"><a href="#cb327-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb358"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb358-1"><a href="#cb358-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>These are just three regular dots …</p>
<p>. . . and this is a victorian ellipsis.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-37"><span
+<h5 class="unnumbered" id="latex-example-39"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb328"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb328-1"><a href="#cb328-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb328-2"><a href="#cb328-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb328-3"><a href="#cb328-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb328-4"><a href="#cb328-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb328-5"><a href="#cb328-5" aria-hidden="true" tabindex="-1"></a> ellipsis = {. . .}</span>
-<span id="cb328-6"><a href="#cb328-6" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb328-7"><a href="#cb328-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb328-8"><a href="#cb328-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb328-9"><a href="#cb328-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb328-10"><a href="#cb328-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb328-11"><a href="#cb328-11" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
-<span id="cb328-12"><a href="#cb328-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb328-13"><a href="#cb328-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb328-14"><a href="#cb328-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{smartEllipses}</span>
-<span id="cb328-15"><a href="#cb328-15" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
-<span id="cb328-16"><a href="#cb328-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb328-17"><a href="#cb328-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb328-18"><a href="#cb328-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb359"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb359-1"><a href="#cb359-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb359-2"><a href="#cb359-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb359-3"><a href="#cb359-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb359-4"><a href="#cb359-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb359-5"><a href="#cb359-5" aria-hidden="true" tabindex="-1"></a> ellipsis = {. . .}</span>
+<span id="cb359-6"><a href="#cb359-6" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb359-7"><a href="#cb359-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb359-8"><a href="#cb359-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb359-9"><a href="#cb359-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb359-10"><a href="#cb359-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb359-11"><a href="#cb359-11" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
+<span id="cb359-12"><a href="#cb359-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb359-13"><a href="#cb359-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb359-14"><a href="#cb359-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[smartEllipses]</span>
+<span id="cb359-15"><a href="#cb359-15" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
+<span id="cb359-16"><a href="#cb359-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb359-17"><a href="#cb359-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb359-18"><a href="#cb359-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb329"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb329-1"><a href="#cb329-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb360"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb360-1"><a href="#cb360-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>These are just three regular dots …</p>
<p>. . . and this is a victorian ellipsis.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-23">Con<span
+<h5 class="unnumbered" id="context-example-25">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb330"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb330-1"><a href="#cb330-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb330-2"><a href="#cb330-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb330-3"><a href="#cb330-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb330-4"><a href="#cb330-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb330-5"><a href="#cb330-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb330-6"><a href="#cb330-6" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
-<span id="cb330-7"><a href="#cb330-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb330-8"><a href="#cb330-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb330-9"><a href="#cb330-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
-<span id="cb330-10"><a href="#cb330-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb330-11"><a href="#cb330-11" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
-<span id="cb330-12"><a href="#cb330-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb330-13"><a href="#cb330-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb330-14"><a href="#cb330-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb361"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb361-1"><a href="#cb361-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb361-2"><a href="#cb361-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
+<span id="cb361-3"><a href="#cb361-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb361-4"><a href="#cb361-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb361-5"><a href="#cb361-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb361-6"><a href="#cb361-6" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
+<span id="cb361-7"><a href="#cb361-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb361-8"><a href="#cb361-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb361-9"><a href="#cb361-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
+<span id="cb361-10"><a href="#cb361-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb361-11"><a href="#cb361-11" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
+<span id="cb361-12"><a href="#cb361-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb361-13"><a href="#cb361-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb361-14"><a href="#cb361-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb331"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb331-1"><a href="#cb331-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb362"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb362-1"><a href="#cb362-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>These are just three regular dots …</p>
<p>. . . and this is a victorian ellipsis.</p>
</blockquote>
-<h4 data-number="2.2.1.44" id="option-startnumber"><span
-class="header-section-number">2.2.1.44</span> Option
+<h4 data-number="2.2.1.49" id="option-startnumber"><span
+class="header-section-number">2.2.1.49</span> Option
<code>startNumber</code></h4>
<dl>
<dt><code>startNumber</code> (default value: <code>true</code>)</dt>
@@ -5594,36 +6215,36 @@ class="tex">T<sub>e</sub>X</span> macro.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-38"><span
+<h5 class="unnumbered" id="latex-example-40"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb332"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb332-1"><a href="#cb332-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb332-2"><a href="#cb332-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb332-3"><a href="#cb332-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb332-4"><a href="#cb332-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb332-5"><a href="#cb332-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb332-6"><a href="#cb332-6" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
-<span id="cb332-7"><a href="#cb332-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb332-8"><a href="#cb332-8" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb332-9"><a href="#cb332-9" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb332-10"><a href="#cb332-10" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb332-11"><a href="#cb332-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb332-12"><a href="#cb332-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb332-13"><a href="#cb332-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{startNumber=false}</span>
-<span id="cb332-14"><a href="#cb332-14" aria-hidden="true" tabindex="-1"></a>The following list does not respect the numbers specified in the</span>
-<span id="cb332-15"><a href="#cb332-15" aria-hidden="true" tabindex="-1"></a>markup:</span>
-<span id="cb332-16"><a href="#cb332-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb332-17"><a href="#cb332-17" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb332-18"><a href="#cb332-18" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb332-19"><a href="#cb332-19" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb332-20"><a href="#cb332-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb332-21"><a href="#cb332-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb332-22"><a href="#cb332-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb363"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb363-1"><a href="#cb363-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb363-2"><a href="#cb363-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb363-3"><a href="#cb363-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb363-4"><a href="#cb363-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-5"><a href="#cb363-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb363-6"><a href="#cb363-6" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
+<span id="cb363-7"><a href="#cb363-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-8"><a href="#cb363-8" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb363-9"><a href="#cb363-9" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb363-10"><a href="#cb363-10" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb363-11"><a href="#cb363-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb363-12"><a href="#cb363-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-13"><a href="#cb363-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[startNumber=false]</span>
+<span id="cb363-14"><a href="#cb363-14" aria-hidden="true" tabindex="-1"></a>The following list does not respect the numbers specified in the</span>
+<span id="cb363-15"><a href="#cb363-15" aria-hidden="true" tabindex="-1"></a>markup:</span>
+<span id="cb363-16"><a href="#cb363-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-17"><a href="#cb363-17" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb363-18"><a href="#cb363-18" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb363-19"><a href="#cb363-19" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb363-20"><a href="#cb363-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb363-21"><a href="#cb363-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-22"><a href="#cb363-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb333"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb333-1"><a href="#cb333-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb364"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb364-1"><a href="#cb364-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5641,34 +6262,34 @@ markup:</p>
<li>fifth item</li>
</ol>
</blockquote>
-<h5 class="unnumbered" id="context-example-24">Con<span
+<h5 class="unnumbered" id="context-example-26">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb334"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb334-1"><a href="#cb334-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb334-2"><a href="#cb334-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb334-3"><a href="#cb334-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb334-4"><a href="#cb334-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb334-5"><a href="#cb334-5" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
-<span id="cb334-6"><a href="#cb334-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb334-7"><a href="#cb334-7" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb334-8"><a href="#cb334-8" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb334-9"><a href="#cb334-9" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb334-10"><a href="#cb334-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb334-11"><a href="#cb334-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb334-12"><a href="#cb334-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[startNumber = no]</span>
-<span id="cb334-13"><a href="#cb334-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb334-14"><a href="#cb334-14" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
-<span id="cb334-15"><a href="#cb334-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb334-16"><a href="#cb334-16" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb334-17"><a href="#cb334-17" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb334-18"><a href="#cb334-18" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb334-19"><a href="#cb334-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb334-20"><a href="#cb334-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb365"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb365-1"><a href="#cb365-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb365-2"><a href="#cb365-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb365-3"><a href="#cb365-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb365-4"><a href="#cb365-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb365-5"><a href="#cb365-5" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
+<span id="cb365-6"><a href="#cb365-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb365-7"><a href="#cb365-7" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb365-8"><a href="#cb365-8" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb365-9"><a href="#cb365-9" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb365-10"><a href="#cb365-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb365-11"><a href="#cb365-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb365-12"><a href="#cb365-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[startNumber = no]</span>
+<span id="cb365-13"><a href="#cb365-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb365-14"><a href="#cb365-14" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
+<span id="cb365-15"><a href="#cb365-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb365-16"><a href="#cb365-16" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb365-17"><a href="#cb365-17" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb365-18"><a href="#cb365-18" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb365-19"><a href="#cb365-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb365-20"><a href="#cb365-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb335"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb335-1"><a href="#cb335-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb366"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb366-1"><a href="#cb366-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -5686,8 +6307,8 @@ markup:</p>
<li>fifth item</li>
</ol>
</blockquote>
-<h4 data-number="2.2.1.45" id="option-strikethrough"><span
-class="header-section-number">2.2.1.45</span> Option
+<h4 data-number="2.2.1.50" id="option-strikethrough"><span
+class="header-section-number">2.2.1.50</span> Option
<code>strikeThrough</code></h4>
<dl>
<dt><code>strikeThrough</code> (default value: <code>false</code>)</dt>
@@ -5698,8 +6319,8 @@ class="header-section-number">2.2.1.45</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-strikeout">strike-through
syntax extension</a>:</p>
-<div class="sourceCode" id="cb336"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb336-1"><a href="#cb336-1" aria-hidden="true" tabindex="-1"></a>This ~~is deleted text.~~</span></code></pre></div>
+<div class="sourceCode" id="cb367"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb367-1"><a href="#cb367-1" aria-hidden="true" tabindex="-1"></a>This ~~is deleted text.~~</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5712,76 +6333,76 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb336-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-15">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-17">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb337"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb337-1"><a href="#cb337-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb337-2"><a href="#cb337-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
-<span id="cb337-3"><a href="#cb337-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span>
-<span id="cb337-4"><a href="#cb337-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
-<span id="cb337-5"><a href="#cb337-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb337-6"><a href="#cb337-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb337-7"><a href="#cb337-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb337-8"><a href="#cb337-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb368"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb368-1"><a href="#cb368-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb368-2"><a href="#cb368-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
+<span id="cb368-3"><a href="#cb368-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span>
+<span id="cb368-4"><a href="#cb368-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
+<span id="cb368-5"><a href="#cb368-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb368-6"><a href="#cb368-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb368-7"><a href="#cb368-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb368-8"><a href="#cb368-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb338"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb338-1"><a href="#cb338-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb369"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb369-1"><a href="#cb369-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <del>a lunar roving vehicle</del> strike-through text.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-39"><span
+<h5 class="unnumbered" id="latex-example-41"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb339"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb339-1"><a href="#cb339-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb339-2"><a href="#cb339-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span>
-<span id="cb339-3"><a href="#cb339-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span>
-<span id="cb339-4"><a href="#cb339-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb339-5"><a href="#cb339-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb339-6"><a href="#cb339-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
-<span id="cb339-7"><a href="#cb339-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb339-8"><a href="#cb339-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb339-9"><a href="#cb339-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb339-10"><a href="#cb339-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb339-11"><a href="#cb339-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb339-12"><a href="#cb339-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb339-13"><a href="#cb339-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb370"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb370-1"><a href="#cb370-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb370-2"><a href="#cb370-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span>
+<span id="cb370-3"><a href="#cb370-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span>
+<span id="cb370-4"><a href="#cb370-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb370-5"><a href="#cb370-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb370-6"><a href="#cb370-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
+<span id="cb370-7"><a href="#cb370-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb370-8"><a href="#cb370-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb370-9"><a href="#cb370-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb370-10"><a href="#cb370-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb370-11"><a href="#cb370-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb370-12"><a href="#cb370-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb370-13"><a href="#cb370-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb340"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb340-1"><a href="#cb340-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb371"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb371-1"><a href="#cb371-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <del>a lunar roving vehicle</del> strike-through text.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-25">Con<span
+<h5 class="unnumbered" id="context-example-27">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb341"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb341-1"><a href="#cb341-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb341-2"><a href="#cb341-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
-<span id="cb341-3"><a href="#cb341-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
-<span id="cb341-4"><a href="#cb341-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb341-5"><a href="#cb341-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb341-6"><a href="#cb341-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb341-7"><a href="#cb341-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb341-8"><a href="#cb341-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb372"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb372-1"><a href="#cb372-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb372-2"><a href="#cb372-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
+<span id="cb372-3"><a href="#cb372-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
+<span id="cb372-4"><a href="#cb372-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb372-5"><a href="#cb372-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb372-6"><a href="#cb372-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb372-7"><a href="#cb372-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb372-8"><a href="#cb372-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb342"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb342-1"><a href="#cb342-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb373"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb373-1"><a href="#cb373-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <del>a lunar roving vehicle</del> strike-through text.</p>
</blockquote>
-<h4 data-number="2.2.1.46" id="option-stripindent"><span
-class="header-section-number">2.2.1.46</span> Option
+<h4 data-number="2.2.1.51" id="option-stripindent"><span
+class="header-section-number">2.2.1.51</span> Option
<code>stripIndent</code></h4>
<dl>
<dt><code>stripIndent</code> (default value: <code>false</code>)</dt>
@@ -5792,14 +6413,14 @@ class="header-section-number">2.2.1.46</span> Option
<p>Strip the minimal indentation of non-blank lines from all lines in a
markdown document. Requires that the
<strong><code>preserveTabs</code></strong> Lua option is disabled:</p>
-<div class="sourceCode" id="cb343"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb343-1"><a href="#cb343-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb343-2"><a href="#cb343-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
-<span id="cb343-3"><a href="#cb343-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb343-4"><a href="#cb343-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb343-5"><a href="#cb343-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb343-6"><a href="#cb343-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb343-7"><a href="#cb343-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb374"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb374-1"><a href="#cb374-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb374-2"><a href="#cb374-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
+<span id="cb374-3"><a href="#cb374-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb374-4"><a href="#cb374-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb374-5"><a href="#cb374-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb374-6"><a href="#cb374-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb374-7"><a href="#cb374-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5813,58 +6434,58 @@ document.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-16">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-18">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb344"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb344-1"><a href="#cb344-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb344-2"><a href="#cb344-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStripIndent</span>{true}</span>
-<span id="cb344-3"><a href="#cb344-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb344-4"><a href="#cb344-4" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb344-5"><a href="#cb344-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb344-6"><a href="#cb344-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb375"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb375-1"><a href="#cb375-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb375-2"><a href="#cb375-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStripIndent</span>{true}</span>
+<span id="cb375-3"><a href="#cb375-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb375-4"><a href="#cb375-4" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb375-5"><a href="#cb375-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb375-6"><a href="#cb375-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb345"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb345-1"><a href="#cb345-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb376"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb376-1"><a href="#cb376-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
-<h5 class="unnumbered" id="latex-example-40"><span
+<h5 class="unnumbered" id="latex-example-42"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb346"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb346-1"><a href="#cb346-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb346-2"><a href="#cb346-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
-<span id="cb346-3"><a href="#cb346-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb346-4"><a href="#cb346-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb346-5"><a href="#cb346-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb346-6"><a href="#cb346-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb346-7"><a href="#cb346-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb377"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb377-1"><a href="#cb377-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb377-2"><a href="#cb377-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
+<span id="cb377-3"><a href="#cb377-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb377-4"><a href="#cb377-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb377-5"><a href="#cb377-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb377-6"><a href="#cb377-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb377-7"><a href="#cb377-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb347"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb347-1"><a href="#cb347-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb378"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb378-1"><a href="#cb378-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
-<h5 class="unnumbered" id="context-example-26">Con<span
+<h5 class="unnumbered" id="context-example-28">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb348"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb348-1"><a href="#cb348-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb348-2"><a href="#cb348-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[stripIndent = yes]</span>
-<span id="cb348-3"><a href="#cb348-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb348-4"><a href="#cb348-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startmarkdown</span></span>
-<span id="cb348-5"><a href="#cb348-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb348-6"><a href="#cb348-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\stopmarkdown</span></span>
-<span id="cb348-7"><a href="#cb348-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb379"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb379-1"><a href="#cb379-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb379-2"><a href="#cb379-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[stripIndent = yes]</span>
+<span id="cb379-3"><a href="#cb379-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb379-4"><a href="#cb379-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startmarkdown</span></span>
+<span id="cb379-5"><a href="#cb379-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb379-6"><a href="#cb379-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\stopmarkdown</span></span>
+<span id="cb379-7"><a href="#cb379-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb349"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb349-1"><a href="#cb349-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb380"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb380-1"><a href="#cb380-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
-<h4 data-number="2.2.1.47" id="option-subscripts"><span
-class="header-section-number">2.2.1.47</span> Option
+<h4 data-number="2.2.1.52" id="option-subscripts"><span
+class="header-section-number">2.2.1.52</span> Option
<code>subscripts</code></h4>
<dl>
<dt><code>subscripts</code> (default value: <code>false</code>)</dt>
@@ -5875,8 +6496,8 @@ class="header-section-number">2.2.1.47</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-superscript-subscript">subscript
syntax extension</a>:</p>
-<div class="sourceCode" id="cb350"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb350-1"><a href="#cb350-1" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span></code></pre></div>
+<div class="sourceCode" id="cb381"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb381-1"><a href="#cb381-1" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5889,48 +6510,48 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb350-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-41"><span
+<h5 class="unnumbered" id="latex-example-43"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb351"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb351-1"><a href="#cb351-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb351-2"><a href="#cb351-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb351-3"><a href="#cb351-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb351-4"><a href="#cb351-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb351-5"><a href="#cb351-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb351-6"><a href="#cb351-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb351-7"><a href="#cb351-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb382"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb382-1"><a href="#cb382-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb382-2"><a href="#cb382-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb382-3"><a href="#cb382-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb382-4"><a href="#cb382-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb382-5"><a href="#cb382-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb382-6"><a href="#cb382-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb382-7"><a href="#cb382-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb352"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb352-1"><a href="#cb352-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb383"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb383-1"><a href="#cb383-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>H<sub>2</sub>O is a liquid.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-27">Con<span
+<h5 class="unnumbered" id="context-example-29">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb353"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb353-1"><a href="#cb353-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb353-2"><a href="#cb353-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
-<span id="cb353-3"><a href="#cb353-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb353-4"><a href="#cb353-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb353-5"><a href="#cb353-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb353-6"><a href="#cb353-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb353-7"><a href="#cb353-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb384"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb384-1"><a href="#cb384-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb384-2"><a href="#cb384-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
+<span id="cb384-3"><a href="#cb384-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb384-4"><a href="#cb384-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb384-5"><a href="#cb384-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb384-6"><a href="#cb384-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb384-7"><a href="#cb384-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb354"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb354-1"><a href="#cb354-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb385"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb385-1"><a href="#cb385-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>H<sub>2</sub>O is a liquid.</p>
</blockquote>
-<h4 data-number="2.2.1.48" id="option-superscripts"><span
-class="header-section-number">2.2.1.48</span> Option
+<h4 data-number="2.2.1.53" id="option-superscripts"><span
+class="header-section-number">2.2.1.53</span> Option
<code>superscripts</code></h4>
<dl>
<dt><code>superscripts</code> (default value: <code>false</code>)</dt>
@@ -5941,8 +6562,8 @@ class="header-section-number">2.2.1.48</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-superscript-subscript">superscript
syntax extension</a>:</p>
-<div class="sourceCode" id="cb355"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb355-1"><a href="#cb355-1" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span></code></pre></div>
+<div class="sourceCode" id="cb386"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb386-1"><a href="#cb386-1" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5955,48 +6576,171 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb355-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-42"><span
+<h5 class="unnumbered" id="latex-example-44"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb356"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb356-1"><a href="#cb356-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb356-2"><a href="#cb356-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb356-3"><a href="#cb356-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb356-4"><a href="#cb356-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb356-5"><a href="#cb356-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb356-6"><a href="#cb356-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb356-7"><a href="#cb356-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb387"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb387-1"><a href="#cb387-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb387-2"><a href="#cb387-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb387-3"><a href="#cb387-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb387-4"><a href="#cb387-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb387-5"><a href="#cb387-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb387-6"><a href="#cb387-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb387-7"><a href="#cb387-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb357"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb357-1"><a href="#cb357-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb388"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb388-1"><a href="#cb388-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>2<sup>10</sup> is 1024.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-28">Con<span
+<h5 class="unnumbered" id="context-example-30">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb358"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb358-1"><a href="#cb358-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb358-2"><a href="#cb358-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
-<span id="cb358-3"><a href="#cb358-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb358-4"><a href="#cb358-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb358-5"><a href="#cb358-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb358-6"><a href="#cb358-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb358-7"><a href="#cb358-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb389"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb389-1"><a href="#cb389-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb389-2"><a href="#cb389-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
+<span id="cb389-3"><a href="#cb389-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb389-4"><a href="#cb389-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb389-5"><a href="#cb389-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb389-6"><a href="#cb389-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb389-7"><a href="#cb389-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb359"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb359-1"><a href="#cb359-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb390"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb390-1"><a href="#cb390-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>2<sup>10</sup> is 1024.</p>
</blockquote>
-<h4 data-number="2.2.1.49" id="option-tablecaptions"><span
-class="header-section-number">2.2.1.49</span> Option
+<h4 data-number="2.2.1.54" id="option-tableattributes"><span
+class="header-section-number">2.2.1.54</span> Option
+<code>tableAttributes</code></h4>
+<dl>
+<dt><code>tableAttributes</code> (default value:
+<code>false</code>)</dt>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>Enable the assignment of HTML attributes to <a
+href="#table-captions">table captions</a>.</p>
+<div class="sourceCode" id="cb391"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb391-1"><a href="#cb391-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb391-2"><a href="#cb391-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb391-3"><a href="#cb391-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb391-4"><a href="#cb391-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb391-5"><a href="#cb391-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb391-6"><a href="#cb391-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb391-7"><a href="#cb391-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span></code></pre></div>
+</dd>
+</dl>
+</dd>
+<dd>
+<dl>
+<dt>false</dt>
+<dd>
+<p>Disable the assignment of HTML attributes to table captions.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h5 class="unnumbered" id="latex-example-45"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb392"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb392-1"><a href="#cb392-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb392-2"><a href="#cb392-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
+<span id="cb392-3"><a href="#cb392-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span>
+<span id="cb392-4"><a href="#cb392-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span>
+<span id="cb392-5"><a href="#cb392-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span>
+<span id="cb392-6"><a href="#cb392-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span>
+<span id="cb392-7"><a href="#cb392-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
+<span id="cb392-8"><a href="#cb392-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb392-9"><a href="#cb392-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb392-10"><a href="#cb392-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb392-11"><a href="#cb392-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb392-12"><a href="#cb392-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span>
+<span id="cb392-13"><a href="#cb392-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb392-14"><a href="#cb392-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb392-15"><a href="#cb392-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb392-16"><a href="#cb392-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span>
+<span id="cb392-17"><a href="#cb392-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb392-18"><a href="#cb392-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb392-19"><a href="#cb392-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb392-20"><a href="#cb392-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span>
+<span id="cb392-21"><a href="#cb392-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb392-22"><a href="#cb392-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb392-23"><a href="#cb392-23" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb392-24"><a href="#cb392-24" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb392-25"><a href="#cb392-25" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb392-26"><a href="#cb392-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb392-27"><a href="#cb392-27" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb392-28"><a href="#cb392-28" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb392-29"><a href="#cb392-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb392-30"><a href="#cb392-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb392-31"><a href="#cb392-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb392-32"><a href="#cb392-32" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb392-33"><a href="#cb392-33" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb392-34"><a href="#cb392-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb392-35"><a href="#cb392-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb392-36"><a href="#cb392-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb392-37"><a href="#cb392-37" aria-hidden="true" tabindex="-1"></a>See Table &lt;#example-table&gt;.</span>
+<span id="cb392-38"><a href="#cb392-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb392-39"><a href="#cb392-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb392-40"><a href="#cb392-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb392-41"><a href="#cb392-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb392-42"><a href="#cb392-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb392-43"><a href="#cb392-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb392-44"><a href="#cb392-44" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb392-45"><a href="#cb392-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span>
+<span id="cb392-46"><a href="#cb392-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb392-47"><a href="#cb392-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb393"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb393-1"><a href="#cb393-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>See Table 1.</p>
+<table>
+<caption>Table 1. Demonstration of pipe table syntax.</caption>
+<thead>
+<tr class="header">
+<th style="text-align: right;">Right</th>
+<th style="text-align: left;">Left</th>
+<th>Default</th>
+<th style="text-align: center;">Center</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: right;">12</td>
+<td style="text-align: left;">12</td>
+<td>12</td>
+<td style="text-align: center;">12</td>
+</tr>
+<tr class="even">
+<td style="text-align: right;">123</td>
+<td style="text-align: left;">123</td>
+<td>123</td>
+<td style="text-align: center;">123</td>
+</tr>
+<tr class="odd">
+<td style="text-align: right;">1</td>
+<td style="text-align: left;">1</td>
+<td>1</td>
+<td style="text-align: center;">1</td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+<h4 data-number="2.2.1.55" id="table-captions"><span
+class="header-section-number">2.2.1.55</span> Option
<code>tableCaptions</code></h4>
<dl>
<dt><code>tableCaptions</code> (default value: <code>false</code>)</dt>
@@ -6008,14 +6752,14 @@ class="header-section-number">2.2.1.49</span> Option
href="https://pandoc.org/MANUAL.html#extension-table_captions">table
caption syntax extension</a> for <a href="#pipe-tables">pipe
tables</a>.</p>
-<div class="sourceCode" id="cb360"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb360-1"><a href="#cb360-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb360-2"><a href="#cb360-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb360-3"><a href="#cb360-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb360-4"><a href="#cb360-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb360-5"><a href="#cb360-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb360-6"><a href="#cb360-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb360-7"><a href="#cb360-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax.</span></code></pre></div>
+<div class="sourceCode" id="cb394"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb394-1"><a href="#cb394-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb394-2"><a href="#cb394-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb394-3"><a href="#cb394-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb394-4"><a href="#cb394-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb394-5"><a href="#cb394-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb394-6"><a href="#cb394-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb394-7"><a href="#cb394-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6028,27 +6772,27 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb360-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-43"><span
+<h5 class="unnumbered" id="latex-example-46"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb361"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb361-1"><a href="#cb361-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb361-2"><a href="#cb361-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
-<span id="cb361-3"><a href="#cb361-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb361-4"><a href="#cb361-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb361-5"><a href="#cb361-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb361-6"><a href="#cb361-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb361-7"><a href="#cb361-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb361-8"><a href="#cb361-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb361-9"><a href="#cb361-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb361-10"><a href="#cb361-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb361-11"><a href="#cb361-11" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span>
-<span id="cb361-12"><a href="#cb361-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb361-13"><a href="#cb361-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb395"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb395-1"><a href="#cb395-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb395-2"><a href="#cb395-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
+<span id="cb395-3"><a href="#cb395-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb395-4"><a href="#cb395-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb395-5"><a href="#cb395-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb395-6"><a href="#cb395-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb395-7"><a href="#cb395-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb395-8"><a href="#cb395-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb395-9"><a href="#cb395-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb395-10"><a href="#cb395-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb395-11"><a href="#cb395-11" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span>
+<span id="cb395-12"><a href="#cb395-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb395-13"><a href="#cb395-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb362"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb362-1"><a href="#cb362-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb396"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb396-1"><a href="#cb396-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6084,31 +6828,31 @@ contain the following text:</p>
</tbody>
</table>
</blockquote>
-<h5 class="unnumbered" id="context-example-29">Con<span
+<h5 class="unnumbered" id="context-example-31">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb363"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb363-1"><a href="#cb363-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb363-2"><a href="#cb363-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb363-3"><a href="#cb363-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb363-4"><a href="#cb363-4" aria-hidden="true" tabindex="-1"></a> pipeTables = yes,</span>
-<span id="cb363-5"><a href="#cb363-5" aria-hidden="true" tabindex="-1"></a> tableCaptions = yes,</span>
-<span id="cb363-6"><a href="#cb363-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb363-7"><a href="#cb363-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb363-8"><a href="#cb363-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb363-9"><a href="#cb363-9" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb363-10"><a href="#cb363-10" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb363-11"><a href="#cb363-11" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb363-12"><a href="#cb363-12" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb363-13"><a href="#cb363-13" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb363-14"><a href="#cb363-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb363-15"><a href="#cb363-15" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span>
-<span id="cb363-16"><a href="#cb363-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb363-17"><a href="#cb363-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb397"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb397-1"><a href="#cb397-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb397-2"><a href="#cb397-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb397-3"><a href="#cb397-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb397-4"><a href="#cb397-4" aria-hidden="true" tabindex="-1"></a> pipeTables = yes,</span>
+<span id="cb397-5"><a href="#cb397-5" aria-hidden="true" tabindex="-1"></a> tableCaptions = yes,</span>
+<span id="cb397-6"><a href="#cb397-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb397-7"><a href="#cb397-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb397-8"><a href="#cb397-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb397-9"><a href="#cb397-9" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb397-10"><a href="#cb397-10" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb397-11"><a href="#cb397-11" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb397-12"><a href="#cb397-12" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb397-13"><a href="#cb397-13" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb397-14"><a href="#cb397-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb397-15"><a href="#cb397-15" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span>
+<span id="cb397-16"><a href="#cb397-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb397-17"><a href="#cb397-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb364"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb364-1"><a href="#cb364-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb398"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb398-1"><a href="#cb398-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6144,8 +6888,8 @@ contain the following text:</p>
</tbody>
</table>
</blockquote>
-<h4 data-number="2.2.1.50" id="option-tasklists"><span
-class="header-section-number">2.2.1.50</span> Option
+<h4 data-number="2.2.1.56" id="option-tasklists"><span
+class="header-section-number">2.2.1.56</span> Option
<code>taskLists</code></h4>
<dl>
<dt><code>taskLists</code> (default value: <code>false</code>)</dt>
@@ -6156,10 +6900,10 @@ class="header-section-number">2.2.1.50</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-task_lists">task list
syntax extension</a>:</p>
-<div class="sourceCode" id="cb365"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb365-1"><a href="#cb365-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="va">[ ]</span> an unticked task list item</span>
-<span id="cb365-2"><a href="#cb365-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">/</span><span class="co">]</span> a half-checked task list item</span>
-<span id="cb365-3"><a href="#cb365-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">X</span><span class="co">]</span> a ticked task list item</span></code></pre></div>
+<div class="sourceCode" id="cb399"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb399-1"><a href="#cb399-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="va">[ ]</span> an unticked task list item</span>
+<span id="cb399-2"><a href="#cb399-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">/</span><span class="co">]</span> a half-checked task list item</span>
+<span id="cb399-3"><a href="#cb399-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="co">[</span><span class="ot">X</span><span class="co">]</span> a ticked task list item</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6172,30 +6916,30 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb365-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-44"><span
+<h5 class="unnumbered" id="latex-example-47"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb366"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb366-1"><a href="#cb366-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb366-2"><a href="#cb366-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span>
-<span id="cb366-3"><a href="#cb366-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb366-4"><a href="#cb366-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb366-5"><a href="#cb366-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
-<span id="cb366-6"><a href="#cb366-6" aria-hidden="true" tabindex="-1"></a> halfTickedBox = Maybe,</span>
-<span id="cb366-7"><a href="#cb366-7" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
-<span id="cb366-8"><a href="#cb366-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb366-9"><a href="#cb366-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb366-10"><a href="#cb366-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb366-11"><a href="#cb366-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb366-12"><a href="#cb366-12" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb366-13"><a href="#cb366-13" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
-<span id="cb366-14"><a href="#cb366-14" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
-<span id="cb366-15"><a href="#cb366-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb366-16"><a href="#cb366-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb400"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb400-1"><a href="#cb400-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb400-2"><a href="#cb400-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span>
+<span id="cb400-3"><a href="#cb400-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb400-4"><a href="#cb400-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb400-5"><a href="#cb400-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
+<span id="cb400-6"><a href="#cb400-6" aria-hidden="true" tabindex="-1"></a> halfTickedBox = Maybe,</span>
+<span id="cb400-7"><a href="#cb400-7" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
+<span id="cb400-8"><a href="#cb400-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb400-9"><a href="#cb400-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb400-10"><a href="#cb400-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb400-11"><a href="#cb400-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb400-12"><a href="#cb400-12" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb400-13"><a href="#cb400-13" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
+<span id="cb400-14"><a href="#cb400-14" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
+<span id="cb400-15"><a href="#cb400-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb400-16"><a href="#cb400-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb367"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb367-1"><a href="#cb367-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb401"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb401-1"><a href="#cb401-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6205,26 +6949,26 @@ contain the following text:</p>
<li>Yes I can!</li>
</ul>
</blockquote>
-<h5 class="unnumbered" id="context-example-30">Con<span
+<h5 class="unnumbered" id="context-example-32">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb368"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb368-1"><a href="#cb368-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb368-2"><a href="#cb368-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
-<span id="cb368-3"><a href="#cb368-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
-<span id="cb368-4"><a href="#cb368-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHalftickedBox</span>{Maybe}</span>
-<span id="cb368-5"><a href="#cb368-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
-<span id="cb368-6"><a href="#cb368-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb368-7"><a href="#cb368-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb368-8"><a href="#cb368-8" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb368-9"><a href="#cb368-9" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
-<span id="cb368-10"><a href="#cb368-10" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
-<span id="cb368-11"><a href="#cb368-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb368-12"><a href="#cb368-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb402"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb402-1"><a href="#cb402-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb402-2"><a href="#cb402-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
+<span id="cb402-3"><a href="#cb402-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
+<span id="cb402-4"><a href="#cb402-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHalftickedBox</span>{Maybe}</span>
+<span id="cb402-5"><a href="#cb402-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
+<span id="cb402-6"><a href="#cb402-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb402-7"><a href="#cb402-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb402-8"><a href="#cb402-8" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb402-9"><a href="#cb402-9" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
+<span id="cb402-10"><a href="#cb402-10" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
+<span id="cb402-11"><a href="#cb402-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb402-12"><a href="#cb402-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb369"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb369-1"><a href="#cb369-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb403"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb403-1"><a href="#cb403-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6234,8 +6978,8 @@ contain the following text:</p>
<li>Yes I can!</li>
</ul>
</blockquote>
-<h4 data-number="2.2.1.51" id="option-texcomments"><span
-class="header-section-number">2.2.1.51</span> Option
+<h4 data-number="2.2.1.57" id="option-texcomments"><span
+class="header-section-number">2.2.1.57</span> Option
<code>texComments</code></h4>
<dl>
<dt><code>texComments</code> (default value: <code>false</code>)</dt>
@@ -6244,15 +6988,15 @@ class="header-section-number">2.2.1.51</span> Option
<dt>true</dt>
<dd>
<p>Strip <span class="tex">T<sub>e</sub>X</span>-style comments.</p>
-<div class="sourceCode" id="cb370"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb370-1"><a href="#cb370-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb370-2"><a href="#cb370-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
-<span id="cb370-3"><a href="#cb370-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb370-4"><a href="#cb370-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb370-5"><a href="#cb370-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb370-6"><a href="#cb370-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb370-7"><a href="#cb370-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb370-8"><a href="#cb370-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb404"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb404-1"><a href="#cb404-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb404-2"><a href="#cb404-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
+<span id="cb404-3"><a href="#cb404-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb404-4"><a href="#cb404-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb404-5"><a href="#cb404-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb404-6"><a href="#cb404-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb404-7"><a href="#cb404-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb404-8"><a href="#cb404-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Always enabled when <strong><code>hybrid</code></strong> is
enabled.</p>
</dd>
@@ -6268,61 +7012,61 @@ comments.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-17">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-19">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb371"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb371-1"><a href="#cb371-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb371-2"><a href="#cb371-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexComments</span>{true}</span>
-<span id="cb371-3"><a href="#cb371-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb371-4"><a href="#cb371-4" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb371-5"><a href="#cb371-5" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb371-6"><a href="#cb371-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb371-7"><a href="#cb371-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb405"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb405-1"><a href="#cb405-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb405-2"><a href="#cb405-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexComments</span>{true}</span>
+<span id="cb405-3"><a href="#cb405-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb405-4"><a href="#cb405-4" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb405-5"><a href="#cb405-5" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb405-6"><a href="#cb405-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb405-7"><a href="#cb405-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb372"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb372-1"><a href="#cb372-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb406"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb406-1"><a href="#cb406-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
-<h5 class="unnumbered" id="latex-example-45"><span
+<h5 class="unnumbered" id="latex-example-48"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb373"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb373-1"><a href="#cb373-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb373-2"><a href="#cb373-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
-<span id="cb373-3"><a href="#cb373-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb373-4"><a href="#cb373-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb373-5"><a href="#cb373-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb373-6"><a href="#cb373-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb373-7"><a href="#cb373-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb373-8"><a href="#cb373-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb407"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb407-1"><a href="#cb407-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb407-2"><a href="#cb407-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
+<span id="cb407-3"><a href="#cb407-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb407-4"><a href="#cb407-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb407-5"><a href="#cb407-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb407-6"><a href="#cb407-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb407-7"><a href="#cb407-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb407-8"><a href="#cb407-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb374"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb374-1"><a href="#cb374-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb408"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb408-1"><a href="#cb408-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
-<h5 class="unnumbered" id="context-example-31">Con<span
+<h5 class="unnumbered" id="context-example-33">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb375"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb375-1"><a href="#cb375-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb375-2"><a href="#cb375-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texComments = yes]</span>
-<span id="cb375-3"><a href="#cb375-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb375-4"><a href="#cb375-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb375-5"><a href="#cb375-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb375-6"><a href="#cb375-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb375-7"><a href="#cb375-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb375-8"><a href="#cb375-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb409"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb409-1"><a href="#cb409-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb409-2"><a href="#cb409-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texComments = yes]</span>
+<span id="cb409-3"><a href="#cb409-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb409-4"><a href="#cb409-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb409-5"><a href="#cb409-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb409-6"><a href="#cb409-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb409-7"><a href="#cb409-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb409-8"><a href="#cb409-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb376"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb376-1"><a href="#cb376-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb410"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb410-1"><a href="#cb410-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
-<h4 data-number="2.2.1.52" id="option-texmathdollars"><span
-class="header-section-number">2.2.1.52</span> Option
+<h4 data-number="2.2.1.58" id="option-texmathdollars"><span
+class="header-section-number">2.2.1.58</span> Option
<code>texMathDollars</code></h4>
<dl>
<dt><code>texMathDollars</code> (default value: <code>false</code>)</dt>
@@ -6333,10 +7077,10 @@ class="header-section-number">2.2.1.52</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-tex_math_dollars">dollar
math syntax extension</a>:</p>
-<div class="sourceCode" id="cb377"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb377-1"><a href="#cb377-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> $E=mc^2$</span></span>
-<span id="cb377-2"><a href="#cb377-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb377-3"><a href="#cb377-3" aria-hidden="true" tabindex="-1"></a>display math: $$E=mc^2$$</span></code></pre></div>
+<div class="sourceCode" id="cb411"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb411-1"><a href="#cb411-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> $E=mc^2$</span></span>
+<span id="cb411-2"><a href="#cb411-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb411-3"><a href="#cb411-3" aria-hidden="true" tabindex="-1"></a>display math: $$E=mc^2$$</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6349,25 +7093,29 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb377-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-12">Lua Module
+<h5 class="unnumbered" id="lua-module-example-13">Lua Module
Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb378"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb378-1"><a href="#cb378-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb378-2"><a href="#cb378-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb378-3"><a href="#cb378-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb378-4"><a href="#cb378-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb378-5"><a href="#cb378-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb378-6"><a href="#cb378-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDollars = true})</span>
-<span id="cb378-7"><a href="#cb378-7" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb378-8"><a href="#cb378-8" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$E=mc^2$</span>]] .. newline .. newline ..</span>
-<span id="cb378-9"><a href="#cb378-9" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span>]]</span>
-<span id="cb378-10"><a href="#cb378-10" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb378-11"><a href="#cb378-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb412"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb412-1"><a href="#cb412-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb412-2"><a href="#cb412-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb412-3"><a href="#cb412-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb412-4"><a href="#cb412-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb412-5"><a href="#cb412-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb412-6"><a href="#cb412-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb412-7"><a href="#cb412-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb412-8"><a href="#cb412-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb412-9"><a href="#cb412-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDollars = true})</span>
+<span id="cb412-10"><a href="#cb412-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb412-11"><a href="#cb412-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$E=mc^2$</span>]] .. newline .. newline ..</span>
+<span id="cb412-12"><a href="#cb412-12" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span>]]</span>
+<span id="cb412-13"><a href="#cb412-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb412-14"><a href="#cb412-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb412-15"><a href="#cb412-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb379"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb379-1"><a href="#cb379-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb413"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb413-1"><a href="#cb413-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6376,27 +7124,31 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-10">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-12">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb380"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb380-1"><a href="#cb380-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb380-2"><a href="#cb380-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb380-3"><a href="#cb380-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb380-4"><a href="#cb380-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb380-5"><a href="#cb380-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb380-6"><a href="#cb380-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb414"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb414-1"><a href="#cb414-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb414-2"><a href="#cb414-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb414-3"><a href="#cb414-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb414-4"><a href="#cb414-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb414-5"><a href="#cb414-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb414-6"><a href="#cb414-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb414-7"><a href="#cb414-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb414-8"><a href="#cb414-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb414-9"><a href="#cb414-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb414-10"><a href="#cb414-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb381"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb381-1"><a href="#cb381-1" aria-hidden="true" tabindex="-1"></a>$E=mc^2$</span>
-<span id="cb381-2"><a href="#cb381-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb381-3"><a href="#cb381-3" aria-hidden="true" tabindex="-1"></a>$$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$</span></code></pre></div>
+<div class="sourceCode" id="cb415"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb415-1"><a href="#cb415-1" aria-hidden="true" tabindex="-1"></a>$E=mc^2$</span>
+<span id="cb415-2"><a href="#cb415-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb415-3"><a href="#cb415-3" aria-hidden="true" tabindex="-1"></a>$$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb382"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb382-1"><a href="#cb382-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb382-2"><a href="#cb382-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDollars=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb382-3"><a href="#cb382-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb416"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb416-1"><a href="#cb416-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb416-2"><a href="#cb416-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDollars=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb416-3"><a href="#cb416-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -6417,24 +7169,24 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-18">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-20">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb383"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb383-1"><a href="#cb383-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb383-2"><a href="#cb383-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb383-3"><a href="#cb383-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
-<span id="cb383-4"><a href="#cb383-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb383-5"><a href="#cb383-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb383-6"><a href="#cb383-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb383-7"><a href="#cb383-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
-<span id="cb383-8"><a href="#cb383-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb383-9"><a href="#cb383-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb383-10"><a href="#cb383-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb417"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb417-1"><a href="#cb417-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb417-2"><a href="#cb417-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb417-3"><a href="#cb417-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
+<span id="cb417-4"><a href="#cb417-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb417-5"><a href="#cb417-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb417-6"><a href="#cb417-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb417-7"><a href="#cb417-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
+<span id="cb417-8"><a href="#cb417-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb417-9"><a href="#cb417-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb417-10"><a href="#cb417-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb384"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb384-1"><a href="#cb384-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb418"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb418-1"><a href="#cb418-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6443,25 +7195,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-46"><span
+<h5 class="unnumbered" id="latex-example-49"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb385"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb385-1"><a href="#cb385-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb385-2"><a href="#cb385-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
-<span id="cb385-3"><a href="#cb385-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb385-4"><a href="#cb385-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb385-5"><a href="#cb385-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb385-6"><a href="#cb385-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb385-7"><a href="#cb385-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb385-8"><a href="#cb385-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
-<span id="cb385-9"><a href="#cb385-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb385-10"><a href="#cb385-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb385-11"><a href="#cb385-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb419"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb419-1"><a href="#cb419-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb419-2"><a href="#cb419-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
+<span id="cb419-3"><a href="#cb419-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb419-4"><a href="#cb419-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb419-5"><a href="#cb419-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb419-6"><a href="#cb419-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb419-7"><a href="#cb419-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb419-8"><a href="#cb419-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
+<span id="cb419-9"><a href="#cb419-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb419-10"><a href="#cb419-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb419-11"><a href="#cb419-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb386"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb386-1"><a href="#cb386-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb420"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb420-1"><a href="#cb420-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6470,25 +7222,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="context-example-32">Con<span
+<h5 class="unnumbered" id="context-example-34">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb387"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb387-1"><a href="#cb387-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb387-2"><a href="#cb387-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
-<span id="cb387-3"><a href="#cb387-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb387-4"><a href="#cb387-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb387-5"><a href="#cb387-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb387-6"><a href="#cb387-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb387-7"><a href="#cb387-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb387-8"><a href="#cb387-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
-<span id="cb387-9"><a href="#cb387-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb387-10"><a href="#cb387-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb387-11"><a href="#cb387-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb421"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb421-1"><a href="#cb421-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb421-2"><a href="#cb421-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
+<span id="cb421-3"><a href="#cb421-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb421-4"><a href="#cb421-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb421-5"><a href="#cb421-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb421-6"><a href="#cb421-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb421-7"><a href="#cb421-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb421-8"><a href="#cb421-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
+<span id="cb421-9"><a href="#cb421-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb421-10"><a href="#cb421-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb421-11"><a href="#cb421-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb388"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb388-1"><a href="#cb388-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb422"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb422-1"><a href="#cb422-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6497,8 +7249,8 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h4 data-number="2.2.1.53" id="option-texmathdoublebackslash"><span
-class="header-section-number">2.2.1.53</span> Option
+<h4 data-number="2.2.1.59" id="option-texmathdoublebackslash"><span
+class="header-section-number">2.2.1.59</span> Option
<code>texMathDoubleBackslash</code></h4>
<dl>
<dt><code>texMathDoubleBackslash</code> (default value:
@@ -6510,10 +7262,10 @@ class="header-section-number">2.2.1.53</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-tex_math_double_backslash">double
backslash math syntax extension</a>:</p>
-<div class="sourceCode" id="cb389"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb389-1"><a href="#cb389-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \\(E=mc^2\\)</span></span>
-<span id="cb389-2"><a href="#cb389-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb389-3"><a href="#cb389-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\\</span><span class="co">[</span><span class="ot">E=mc^2\\]</span></span></code></pre></div>
+<div class="sourceCode" id="cb423"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb423-1"><a href="#cb423-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \\(E=mc^2\\)</span></span>
+<span id="cb423-2"><a href="#cb423-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb423-3"><a href="#cb423-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\\</span><span class="co">[</span><span class="ot">E=mc^2\\]</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6526,25 +7278,29 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb389-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-13">Lua Module
+<h5 class="unnumbered" id="lua-module-example-14">Lua Module
Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb390"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb390-1"><a href="#cb390-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb390-2"><a href="#cb390-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb390-3"><a href="#cb390-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb390-4"><a href="#cb390-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb390-5"><a href="#cb390-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb390-6"><a href="#cb390-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDoubleBackslash = true})</span>
-<span id="cb390-7"><a href="#cb390-7" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb390-8"><a href="#cb390-8" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)]] .. newline .. newline ..</span>
-<span id="cb390-9"><a href="#cb390-9" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]]]</span>
-<span id="cb390-10"><a href="#cb390-10" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb390-11"><a href="#cb390-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb424"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb424-1"><a href="#cb424-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb424-2"><a href="#cb424-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb424-3"><a href="#cb424-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb424-4"><a href="#cb424-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb424-5"><a href="#cb424-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb424-6"><a href="#cb424-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb424-7"><a href="#cb424-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb424-8"><a href="#cb424-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb424-9"><a href="#cb424-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDoubleBackslash = true})</span>
+<span id="cb424-10"><a href="#cb424-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb424-11"><a href="#cb424-11" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)]] .. newline .. newline ..</span>
+<span id="cb424-12"><a href="#cb424-12" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]]]</span>
+<span id="cb424-13"><a href="#cb424-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb424-14"><a href="#cb424-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb424-15"><a href="#cb424-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb391"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb391-1"><a href="#cb391-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb425"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb425-1"><a href="#cb425-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6553,27 +7309,31 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-11">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-13">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb392"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb392-1"><a href="#cb392-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb392-2"><a href="#cb392-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb392-3"><a href="#cb392-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb392-4"><a href="#cb392-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb392-5"><a href="#cb392-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb392-6"><a href="#cb392-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb426"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb426-1"><a href="#cb426-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb426-2"><a href="#cb426-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb426-3"><a href="#cb426-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb426-4"><a href="#cb426-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb426-5"><a href="#cb426-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb426-6"><a href="#cb426-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb426-7"><a href="#cb426-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb426-8"><a href="#cb426-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb426-9"><a href="#cb426-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb426-10"><a href="#cb426-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb393"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb393-1"><a href="#cb393-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span>(E=mc^2<span class="sc">\\</span>)</span>
-<span id="cb393-2"><a href="#cb393-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb393-3"><a href="#cb393-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span><span class="co">[</span><span class="ot">\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]</span></span></code></pre></div>
+<div class="sourceCode" id="cb427"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb427-1"><a href="#cb427-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span>(E=mc^2<span class="sc">\\</span>)</span>
+<span id="cb427-2"><a href="#cb427-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb427-3"><a href="#cb427-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span><span class="co">[</span><span class="ot">\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb394"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb394-1"><a href="#cb394-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb394-2"><a href="#cb394-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDoubleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb394-3"><a href="#cb394-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb428"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb428-1"><a href="#cb428-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb428-2"><a href="#cb428-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathDoubleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb428-3"><a href="#cb428-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -6595,24 +7355,24 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-19">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-21">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb395"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb395-1"><a href="#cb395-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb395-2"><a href="#cb395-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb395-3"><a href="#cb395-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDoubleBackslash</span>{true}</span>
-<span id="cb395-4"><a href="#cb395-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb395-5"><a href="#cb395-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
-<span id="cb395-6"><a href="#cb395-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb395-7"><a href="#cb395-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span>
-<span id="cb395-8"><a href="#cb395-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb395-9"><a href="#cb395-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb395-10"><a href="#cb395-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb429"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb429-1"><a href="#cb429-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb429-2"><a href="#cb429-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb429-3"><a href="#cb429-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDoubleBackslash</span>{true}</span>
+<span id="cb429-4"><a href="#cb429-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb429-5"><a href="#cb429-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
+<span id="cb429-6"><a href="#cb429-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb429-7"><a href="#cb429-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span>
+<span id="cb429-8"><a href="#cb429-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb429-9"><a href="#cb429-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb429-10"><a href="#cb429-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb396"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb396-1"><a href="#cb396-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb430"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb430-1"><a href="#cb430-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6621,25 +7381,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-47"><span
+<h5 class="unnumbered" id="latex-example-50"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb397"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb397-1"><a href="#cb397-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb397-2"><a href="#cb397-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDoubleBackslash]{<span class="ex">markdown</span>}</span>
-<span id="cb397-3"><a href="#cb397-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb397-4"><a href="#cb397-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb397-5"><a href="#cb397-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb397-6"><a href="#cb397-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
-<span id="cb397-7"><a href="#cb397-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb397-8"><a href="#cb397-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span>
-<span id="cb397-9"><a href="#cb397-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb397-10"><a href="#cb397-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb397-11"><a href="#cb397-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb431"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb431-1"><a href="#cb431-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb431-2"><a href="#cb431-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDoubleBackslash]{<span class="ex">markdown</span>}</span>
+<span id="cb431-3"><a href="#cb431-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb431-4"><a href="#cb431-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb431-5"><a href="#cb431-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb431-6"><a href="#cb431-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
+<span id="cb431-7"><a href="#cb431-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb431-8"><a href="#cb431-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span>
+<span id="cb431-9"><a href="#cb431-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb431-10"><a href="#cb431-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb431-11"><a href="#cb431-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb398"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb398-1"><a href="#cb398-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb432"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb432-1"><a href="#cb432-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6648,25 +7408,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="context-example-33">Con<span
+<h5 class="unnumbered" id="context-example-35">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb399"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb399-1"><a href="#cb399-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb399-2"><a href="#cb399-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDoubleBackslash = yes]</span>
-<span id="cb399-3"><a href="#cb399-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb399-4"><a href="#cb399-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb399-5"><a href="#cb399-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb399-6"><a href="#cb399-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
-<span id="cb399-7"><a href="#cb399-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb399-8"><a href="#cb399-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span>
-<span id="cb399-9"><a href="#cb399-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb399-10"><a href="#cb399-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb399-11"><a href="#cb399-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb433"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb433-1"><a href="#cb433-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb433-2"><a href="#cb433-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDoubleBackslash = yes]</span>
+<span id="cb433-3"><a href="#cb433-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb433-4"><a href="#cb433-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb433-5"><a href="#cb433-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb433-6"><a href="#cb433-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
+<span id="cb433-7"><a href="#cb433-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb433-8"><a href="#cb433-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>[<span class="fu">\hat</span>{f} <span class="fu">\left</span> ( <span class="fu">\xi</span> <span class="fu">\right</span> )= <span class="fu">\int</span>_{-<span class="fu">\infty</span>}^{<span class="fu">\infty</span>} f<span class="fu">\left</span> ( x <span class="fu">\right</span> ) e^{-i2<span class="fu">\pi</span> <span class="fu">\xi</span> x} dx<span class="fu">\\</span>]</span>
+<span id="cb433-9"><a href="#cb433-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb433-10"><a href="#cb433-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb433-11"><a href="#cb433-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb400"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb400-1"><a href="#cb400-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb434"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb434-1"><a href="#cb434-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6675,8 +7435,8 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h4 data-number="2.2.1.54" id="option-texmathsinglebackslash"><span
-class="header-section-number">2.2.1.54</span> Option
+<h4 data-number="2.2.1.60" id="option-texmathsinglebackslash"><span
+class="header-section-number">2.2.1.60</span> Option
<code>texMathSingleBackslash</code></h4>
<dl>
<dt><code>texMathSingleBackslash</code> (default value:
@@ -6688,10 +7448,10 @@ class="header-section-number">2.2.1.54</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-tex_math_single_backslash">single
backslash math syntax extension</a>:</p>
-<div class="sourceCode" id="cb401"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb401-1"><a href="#cb401-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \(E=mc^2\)</span></span>
-<span id="cb401-2"><a href="#cb401-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb401-3"><a href="#cb401-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\[</span>E=mc^2<span class="sc">\]</span></span></code></pre></div>
+<div class="sourceCode" id="cb435"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb435-1"><a href="#cb435-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \(E=mc^2\)</span></span>
+<span id="cb435-2"><a href="#cb435-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb435-3"><a href="#cb435-3" aria-hidden="true" tabindex="-1"></a>display math: <span class="sc">\[</span>E=mc^2<span class="sc">\]</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6704,25 +7464,29 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb401-1"><a hr
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="lua-module-example-14">Lua Module
+<h5 class="unnumbered" id="lua-module-example-15">Lua Module
Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb402"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb402-1"><a href="#cb402-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb402-2"><a href="#cb402-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb402-3"><a href="#cb402-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb402-4"><a href="#cb402-4" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb402-5"><a href="#cb402-5" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb402-6"><a href="#cb402-6" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathSingleBackslash = true})</span>
-<span id="cb402-7"><a href="#cb402-7" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb402-8"><a href="#cb402-8" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\(E=mc^2\)</span>]] .. newline .. newline ..</span>
-<span id="cb402-9"><a href="#cb402-9" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span>]]</span>
-<span id="cb402-10"><a href="#cb402-10" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb402-11"><a href="#cb402-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb436"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb436-1"><a href="#cb436-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb436-2"><a href="#cb436-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb436-3"><a href="#cb436-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb436-4"><a href="#cb436-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb436-5"><a href="#cb436-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb436-6"><a href="#cb436-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb436-7"><a href="#cb436-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb436-8"><a href="#cb436-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb436-9"><a href="#cb436-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathSingleBackslash = true})</span>
+<span id="cb436-10"><a href="#cb436-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb436-11"><a href="#cb436-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\(E=mc^2\)</span>]] .. newline .. newline ..</span>
+<span id="cb436-12"><a href="#cb436-12" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span>]]</span>
+<span id="cb436-13"><a href="#cb436-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb436-14"><a href="#cb436-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb436-15"><a href="#cb436-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Then, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb403"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb403-1"><a href="#cb403-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb437"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb437-1"><a href="#cb437-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6731,27 +7495,31 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="lua-cli-example-12">Lua CLI Example</h5>
+<h5 class="unnumbered" id="lua-cli-example-14">Lua CLI Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb404"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb404-1"><a href="#cb404-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb404-2"><a href="#cb404-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb404-3"><a href="#cb404-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb404-4"><a href="#cb404-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb404-5"><a href="#cb404-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb404-6"><a href="#cb404-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb438"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb438-1"><a href="#cb438-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb438-2"><a href="#cb438-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb438-3"><a href="#cb438-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb438-4"><a href="#cb438-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb438-5"><a href="#cb438-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb438-6"><a href="#cb438-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb438-7"><a href="#cb438-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb438-8"><a href="#cb438-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb438-9"><a href="#cb438-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb438-10"><a href="#cb438-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>content.md</code> with the following content:</p>
-<div class="sourceCode" id="cb405"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb405-1"><a href="#cb405-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\(</span>E=mc^2<span class="sc">\)</span></span>
-<span id="cb405-2"><a href="#cb405-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb405-3"><a href="#cb405-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\[</span>\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx<span class="sc">\]</span></span></code></pre></div>
+<div class="sourceCode" id="cb439"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb439-1"><a href="#cb439-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\(</span>E=mc^2<span class="sc">\)</span></span>
+<span id="cb439-2"><a href="#cb439-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb439-3"><a href="#cb439-3" aria-hidden="true" tabindex="-1"></a><span class="sc">\[</span>\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx<span class="sc">\]</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb406"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb406-1"><a href="#cb406-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb406-2"><a href="#cb406-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathSingleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span>
-<span id="cb406-3"><a href="#cb406-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb440"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb440-1"><a href="#cb440-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb440-2"><a href="#cb440-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ texMathSingleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb440-3"><a href="#cb440-3" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>where ⟨<em>CLI pathname</em>⟩ corresponds to the location of the Lua
CLI script file, such as
<code>~/texmf/scripts/markdown/markdown-cli.lua</code> on UN*X systems
@@ -6772,24 +7540,24 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="plain-tex-example-20">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-22">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb407"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb407-1"><a href="#cb407-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb407-2"><a href="#cb407-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb407-3"><a href="#cb407-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathSingleBackslash</span>{true}</span>
-<span id="cb407-4"><a href="#cb407-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb407-5"><a href="#cb407-5" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
-<span id="cb407-6"><a href="#cb407-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb407-7"><a href="#cb407-7" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span>
-<span id="cb407-8"><a href="#cb407-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb407-9"><a href="#cb407-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb407-10"><a href="#cb407-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb441"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb441-1"><a href="#cb441-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb441-2"><a href="#cb441-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb441-3"><a href="#cb441-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathSingleBackslash</span>{true}</span>
+<span id="cb441-4"><a href="#cb441-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb441-5"><a href="#cb441-5" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
+<span id="cb441-6"><a href="#cb441-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb441-7"><a href="#cb441-7" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span>
+<span id="cb441-8"><a href="#cb441-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb441-9"><a href="#cb441-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb441-10"><a href="#cb441-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb408"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb408-1"><a href="#cb408-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb442"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb442-1"><a href="#cb442-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6798,25 +7566,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-48"><span
+<h5 class="unnumbered" id="latex-example-51"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb409"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb409-1"><a href="#cb409-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb409-2"><a href="#cb409-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathSingleBackslash]{<span class="ex">markdown</span>}</span>
-<span id="cb409-3"><a href="#cb409-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb409-4"><a href="#cb409-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb409-5"><a href="#cb409-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb409-6"><a href="#cb409-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
-<span id="cb409-7"><a href="#cb409-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb409-8"><a href="#cb409-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span>
-<span id="cb409-9"><a href="#cb409-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb409-10"><a href="#cb409-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb409-11"><a href="#cb409-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb443"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb443-1"><a href="#cb443-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb443-2"><a href="#cb443-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathSingleBackslash]{<span class="ex">markdown</span>}</span>
+<span id="cb443-3"><a href="#cb443-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb443-4"><a href="#cb443-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb443-5"><a href="#cb443-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb443-6"><a href="#cb443-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
+<span id="cb443-7"><a href="#cb443-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb443-8"><a href="#cb443-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span>
+<span id="cb443-9"><a href="#cb443-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb443-10"><a href="#cb443-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb443-11"><a href="#cb443-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb410"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb410-1"><a href="#cb410-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb444"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb444-1"><a href="#cb444-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6825,25 +7593,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h5 class="unnumbered" id="context-example-34">Con<span
+<h5 class="unnumbered" id="context-example-36">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb411"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb411-1"><a href="#cb411-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb411-2"><a href="#cb411-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathSingleBackslash = yes]</span>
-<span id="cb411-3"><a href="#cb411-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb411-4"><a href="#cb411-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb411-5"><a href="#cb411-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb411-6"><a href="#cb411-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
-<span id="cb411-7"><a href="#cb411-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb411-8"><a href="#cb411-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span>
-<span id="cb411-9"><a href="#cb411-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb411-10"><a href="#cb411-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb411-11"><a href="#cb411-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb445"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb445-1"><a href="#cb445-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb445-2"><a href="#cb445-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathSingleBackslash = yes]</span>
+<span id="cb445-3"><a href="#cb445-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb445-4"><a href="#cb445-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb445-5"><a href="#cb445-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb445-6"><a href="#cb445-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
+<span id="cb445-7"><a href="#cb445-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb445-8"><a href="#cb445-8" aria-hidden="true" tabindex="-1"></a><span class="ss">\[</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx\]</span></span>
+<span id="cb445-9"><a href="#cb445-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb445-10"><a href="#cb445-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb445-11"><a href="#cb445-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb412"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb412-1"><a href="#cb412-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb446"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb446-1"><a href="#cb446-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6852,8 +7620,8 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup></span></p>
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em></span></p>
</blockquote>
-<h4 data-number="2.2.1.55" id="option-tightlists"><span
-class="header-section-number">2.2.1.55</span> Option
+<h4 data-number="2.2.1.61" id="option-tightlists"><span
+class="header-section-number">2.2.1.61</span> Option
<code>tightLists</code></h4>
<dl>
<dt><code>tightLists</code> (default value: <code>true</code>)</dt>
@@ -6865,16 +7633,16 @@ class="header-section-number">2.2.1.55</span> Option
paragraphs will be considered <em>tight</em>. Tight lists will produce
tight renderers that may produce different output than lists that are
not tight:</p>
-<div class="sourceCode" id="cb413"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb413-1"><a href="#cb413-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span>
-<span id="cb413-2"><a href="#cb413-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a tight</span>
-<span id="cb413-3"><a href="#cb413-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span>
-<span id="cb413-4"><a href="#cb413-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb413-5"><a href="#cb413-5" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span>
-<span id="cb413-6"><a href="#cb413-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb413-7"><a href="#cb413-7" aria-hidden="true" tabindex="-1"></a> not a tight</span>
-<span id="cb413-8"><a href="#cb413-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb413-9"><a href="#cb413-9" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span></code></pre></div>
+<div class="sourceCode" id="cb447"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb447-1"><a href="#cb447-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span>
+<span id="cb447-2"><a href="#cb447-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a tight</span>
+<span id="cb447-3"><a href="#cb447-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span>
+<span id="cb447-4"><a href="#cb447-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb447-5"><a href="#cb447-5" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span>
+<span id="cb447-6"><a href="#cb447-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb447-7"><a href="#cb447-7" aria-hidden="true" tabindex="-1"></a> not a tight</span>
+<span id="cb447-8"><a href="#cb447-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb447-9"><a href="#cb447-9" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6889,43 +7657,43 @@ multiple paragraphs.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-49"><span
+<h5 class="unnumbered" id="latex-example-52"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb414"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb414-1"><a href="#cb414-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb414-2"><a href="#cb414-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb414-3"><a href="#cb414-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb414-4"><a href="#cb414-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-5"><a href="#cb414-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb414-6"><a href="#cb414-6" aria-hidden="true" tabindex="-1"></a>The following list is tight:</span>
-<span id="cb414-7"><a href="#cb414-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-8"><a href="#cb414-8" aria-hidden="true" tabindex="-1"></a>- first item</span>
-<span id="cb414-9"><a href="#cb414-9" aria-hidden="true" tabindex="-1"></a>- second item</span>
-<span id="cb414-10"><a href="#cb414-10" aria-hidden="true" tabindex="-1"></a>- third item</span>
-<span id="cb414-11"><a href="#cb414-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-12"><a href="#cb414-12" aria-hidden="true" tabindex="-1"></a>The following list is loose:</span>
-<span id="cb414-13"><a href="#cb414-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-14"><a href="#cb414-14" aria-hidden="true" tabindex="-1"></a>- first item</span>
-<span id="cb414-15"><a href="#cb414-15" aria-hidden="true" tabindex="-1"></a>- second item that spans</span>
-<span id="cb414-16"><a href="#cb414-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-17"><a href="#cb414-17" aria-hidden="true" tabindex="-1"></a> multiple paragraphs</span>
-<span id="cb414-18"><a href="#cb414-18" aria-hidden="true" tabindex="-1"></a>- third item</span>
-<span id="cb414-19"><a href="#cb414-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb414-20"><a href="#cb414-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-21"><a href="#cb414-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{tightLists=false}</span>
-<span id="cb414-22"><a href="#cb414-22" aria-hidden="true" tabindex="-1"></a>The following list is now also loose:</span>
-<span id="cb414-23"><a href="#cb414-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-24"><a href="#cb414-24" aria-hidden="true" tabindex="-1"></a>- first item</span>
-<span id="cb414-25"><a href="#cb414-25" aria-hidden="true" tabindex="-1"></a>- second item</span>
-<span id="cb414-26"><a href="#cb414-26" aria-hidden="true" tabindex="-1"></a>- third item</span>
-<span id="cb414-27"><a href="#cb414-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb414-28"><a href="#cb414-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb414-29"><a href="#cb414-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb448"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb448-1"><a href="#cb448-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb448-2"><a href="#cb448-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb448-3"><a href="#cb448-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb448-4"><a href="#cb448-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-5"><a href="#cb448-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb448-6"><a href="#cb448-6" aria-hidden="true" tabindex="-1"></a>The following list is tight:</span>
+<span id="cb448-7"><a href="#cb448-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-8"><a href="#cb448-8" aria-hidden="true" tabindex="-1"></a>- first item</span>
+<span id="cb448-9"><a href="#cb448-9" aria-hidden="true" tabindex="-1"></a>- second item</span>
+<span id="cb448-10"><a href="#cb448-10" aria-hidden="true" tabindex="-1"></a>- third item</span>
+<span id="cb448-11"><a href="#cb448-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-12"><a href="#cb448-12" aria-hidden="true" tabindex="-1"></a>The following list is loose:</span>
+<span id="cb448-13"><a href="#cb448-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-14"><a href="#cb448-14" aria-hidden="true" tabindex="-1"></a>- first item</span>
+<span id="cb448-15"><a href="#cb448-15" aria-hidden="true" tabindex="-1"></a>- second item that spans</span>
+<span id="cb448-16"><a href="#cb448-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-17"><a href="#cb448-17" aria-hidden="true" tabindex="-1"></a> multiple paragraphs</span>
+<span id="cb448-18"><a href="#cb448-18" aria-hidden="true" tabindex="-1"></a>- third item</span>
+<span id="cb448-19"><a href="#cb448-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb448-20"><a href="#cb448-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-21"><a href="#cb448-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[tightLists=false]</span>
+<span id="cb448-22"><a href="#cb448-22" aria-hidden="true" tabindex="-1"></a>The following list is now also loose:</span>
+<span id="cb448-23"><a href="#cb448-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-24"><a href="#cb448-24" aria-hidden="true" tabindex="-1"></a>- first item</span>
+<span id="cb448-25"><a href="#cb448-25" aria-hidden="true" tabindex="-1"></a>- second item</span>
+<span id="cb448-26"><a href="#cb448-26" aria-hidden="true" tabindex="-1"></a>- third item</span>
+<span id="cb448-27"><a href="#cb448-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb448-28"><a href="#cb448-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb448-29"><a href="#cb448-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb415"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb415-1"><a href="#cb415-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb449"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb449-1"><a href="#cb449-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6949,8 +7717,8 @@ contain the following text:</p>
<li><p>third item</p></li>
</ul>
</blockquote>
-<h4 data-number="2.2.1.56" id="option-underscores"><span
-class="header-section-number">2.2.1.56</span> Option
+<h4 data-number="2.2.1.62" id="option-underscores"><span
+class="header-section-number">2.2.1.62</span> Option
<code>underscores</code></h4>
<dl>
<dt><code>underscores</code> (default value: <code>true</code>)</dt>
@@ -6960,11 +7728,11 @@ class="header-section-number">2.2.1.56</span> Option
<dd>
<p>Both underscores and asterisks can be used to denote emphasis and
strong emphasis:</p>
-<div class="sourceCode" id="cb416"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb416-1"><a href="#cb416-1" aria-hidden="true" tabindex="-1"></a>*single asterisks*</span>
-<span id="cb416-2"><a href="#cb416-2" aria-hidden="true" tabindex="-1"></a>_single underscores_</span>
-<span id="cb416-3"><a href="#cb416-3" aria-hidden="true" tabindex="-1"></a>**double asterisks**</span>
-<span id="cb416-4"><a href="#cb416-4" aria-hidden="true" tabindex="-1"></a>__double underscores__</span></code></pre></div>
+<div class="sourceCode" id="cb450"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb450-1"><a href="#cb450-1" aria-hidden="true" tabindex="-1"></a>*single asterisks*</span>
+<span id="cb450-2"><a href="#cb450-2" aria-hidden="true" tabindex="-1"></a>_single underscores_</span>
+<span id="cb450-3"><a href="#cb450-3" aria-hidden="true" tabindex="-1"></a>**double asterisks**</span>
+<span id="cb450-4"><a href="#cb450-4" aria-hidden="true" tabindex="-1"></a>__double underscores__</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6980,27 +7748,27 @@ constantly escape subscripts.</p>
</dl>
</dd>
</dl>
-<h5 class="unnumbered" id="plain-tex-example-21">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-23">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb417"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb417-1"><a href="#cb417-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb417-2"><a href="#cb417-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
-<span id="cb417-3"><a href="#cb417-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb417-4"><a href="#cb417-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb417-5"><a href="#cb417-5" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span>
-<span id="cb417-6"><a href="#cb417-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb417-7"><a href="#cb417-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb417-8"><a href="#cb417-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionUnderscores</span>{false}</span>
-<span id="cb417-9"><a href="#cb417-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb417-10"><a href="#cb417-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span>
-<span id="cb417-11"><a href="#cb417-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb417-12"><a href="#cb417-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb417-13"><a href="#cb417-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb451"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb451-1"><a href="#cb451-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb451-2"><a href="#cb451-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
+<span id="cb451-3"><a href="#cb451-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb451-4"><a href="#cb451-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb451-5"><a href="#cb451-5" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span>
+<span id="cb451-6"><a href="#cb451-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb451-7"><a href="#cb451-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb451-8"><a href="#cb451-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionUnderscores</span>{false}</span>
+<span id="cb451-9"><a href="#cb451-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb451-10"><a href="#cb451-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span>
+<span id="cb451-11"><a href="#cb451-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb451-12"><a href="#cb451-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb451-13"><a href="#cb451-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb418"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb418-1"><a href="#cb418-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb452"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb452-1"><a href="#cb452-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7009,27 +7777,27 @@ contain the following text:</p>
<p>This is <em>emphasized text</em> and this is a math subscript:
<em>mₙ</em>.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-50"><span
+<h5 class="unnumbered" id="latex-example-53"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb419"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb419-1"><a href="#cb419-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb419-2"><a href="#cb419-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hybrid]{<span class="ex">markdown</span>}</span>
-<span id="cb419-3"><a href="#cb419-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb419-4"><a href="#cb419-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb419-5"><a href="#cb419-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb419-6"><a href="#cb419-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span>
-<span id="cb419-7"><a href="#cb419-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb419-8"><a href="#cb419-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb419-9"><a href="#cb419-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{underscores=false}</span>
-<span id="cb419-10"><a href="#cb419-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span>
-<span id="cb419-11"><a href="#cb419-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb419-12"><a href="#cb419-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb419-13"><a href="#cb419-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb453"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb453-1"><a href="#cb453-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb453-2"><a href="#cb453-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hybrid]{<span class="ex">markdown</span>}</span>
+<span id="cb453-3"><a href="#cb453-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb453-4"><a href="#cb453-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb453-5"><a href="#cb453-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb453-6"><a href="#cb453-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span>
+<span id="cb453-7"><a href="#cb453-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb453-8"><a href="#cb453-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb453-9"><a href="#cb453-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[underscores=false]</span>
+<span id="cb453-10"><a href="#cb453-10" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span>
+<span id="cb453-11"><a href="#cb453-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb453-12"><a href="#cb453-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb453-13"><a href="#cb453-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb420"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb420-1"><a href="#cb420-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb454"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb454-1"><a href="#cb454-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7038,28 +7806,28 @@ contain the following text:</p>
<p>This is <em>emphasized text</em> and this is a math subscript:
<em>mₙ</em>.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-35">Con<span
+<h5 class="unnumbered" id="context-example-37">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb421"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb421-1"><a href="#cb421-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb421-2"><a href="#cb421-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
-<span id="cb421-3"><a href="#cb421-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb421-4"><a href="#cb421-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb421-5"><a href="#cb421-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb421-6"><a href="#cb421-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span>
-<span id="cb421-7"><a href="#cb421-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb421-8"><a href="#cb421-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb421-9"><a href="#cb421-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[underscores = yes]</span>
-<span id="cb421-10"><a href="#cb421-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb421-11"><a href="#cb421-11" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span>
-<span id="cb421-12"><a href="#cb421-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb421-13"><a href="#cb421-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb421-14"><a href="#cb421-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb455"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb455-1"><a href="#cb455-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb455-2"><a href="#cb455-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
+<span id="cb455-3"><a href="#cb455-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb455-4"><a href="#cb455-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb455-5"><a href="#cb455-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb455-6"><a href="#cb455-6" aria-hidden="true" tabindex="-1"></a>This is _emphasized text_ and this is a math subscript: <span class="ss">$m</span><span class="sc">\_</span><span class="ss">n$</span>.</span>
+<span id="cb455-7"><a href="#cb455-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb455-8"><a href="#cb455-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb455-9"><a href="#cb455-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[underscores = yes]</span>
+<span id="cb455-10"><a href="#cb455-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb455-11"><a href="#cb455-11" aria-hidden="true" tabindex="-1"></a>This is *emphasized text* and this is a math subscript: <span class="ss">$m_n$</span>.</span>
+<span id="cb455-12"><a href="#cb455-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb455-13"><a href="#cb455-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb455-14"><a href="#cb455-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb422"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb422-1"><a href="#cb422-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb456"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb456-1"><a href="#cb456-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7086,8 +7854,16 @@ plain <span class="tex">T<sub>e</sub>X</span></h4>
<strong><code>taskLists</code></strong> Lua option to <code>true</code>,
you would include the following code in your plain <span
class="tex">T<sub>e</sub>X</span> document:</p>
-<div class="sourceCode" id="cb423"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb423-1"><a href="#cb423-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTaskLists</span>{true}</span></code></pre></div>
+<div class="sourceCode" id="cb457"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb457-1"><a href="#cb457-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTaskLists</span>{true}</span></code></pre></div>
+<p>Alternatively, you can also set plain <span
+class="tex">T<sub>e</sub>X</span> options using the
+<code>\markdownSetup</code> <span class="tex">T<sub>e</sub>X</span>
+macro. For example, to set the <strong><code>taskLists</code></strong>
+Lua option to <code>true</code>, you would include the following code in
+your plain <span class="tex">T<sub>e</sub>X</span> document:</p>
+<div class="sourceCode" id="cb458"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb458-1"><a href="#cb458-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{taskLists = true}</span></code></pre></div>
<h4 data-number="2.2.2.2" id="finalizing-and-freezing-the-cache"><span
class="header-section-number">2.2.2.2</span> Finalizing and Freezing the
Cache</h4>
@@ -7122,10 +7898,7 @@ the following commands that you can use to specify the location of
temporary files produced during the conversion from Markdown to <span
class="tex">T<sub>e</sub>X</span>:</p>
<ul>
-<li><code>\markdownOptionHelperScriptFileName</code>,</li>
<li><code>\markdownOptionInputTempFileName</code>,</li>
-<li><code>\markdownOptionOutputTempFileName</code>,</li>
-<li><code>\markdownOptionErrorTempFileName</code>,</li>
<li><code>\markdownOptionOutputDir</code>,</li>
<li><code>\markdownOptionCacheDir</code>, and</li>
<li><code>\markdownOptionFrozenCacheFileName</code>.</li>
@@ -7137,24 +7910,22 @@ options.</p>
<p>Using a text editor, create a folder named
<code>output-directory</code> and a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb424"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb424-1"><a href="#cb424-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb424-2"><a href="#cb424-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb424-3"><a href="#cb424-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHelperScriptFileName</span>{helper-script.lua}</span>
-<span id="cb424-4"><a href="#cb424-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionInputTempFileName</span>{temporary-input.md}</span>
-<span id="cb424-5"><a href="#cb424-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputTempFileName</span>{temporary-output.tex}</span>
-<span id="cb424-6"><a href="#cb424-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionErrorTempFileName</span>{error-output.txt}</span>
-<span id="cb424-7"><a href="#cb424-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputDir</span>{output-directory}</span>
-<span id="cb424-8"><a href="#cb424-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{output-directory/cache-directory}</span>
-<span id="cb424-9"><a href="#cb424-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownOptionFinalizeCachetrue</span></span>
-<span id="cb424-10"><a href="#cb424-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{output-directory/cache-directory/frozen-cache.tex}</span>
-<span id="cb424-11"><a href="#cb424-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb424-12"><a href="#cb424-12" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb424-13"><a href="#cb424-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb424-14"><a href="#cb424-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb459"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb459-1"><a href="#cb459-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb459-2"><a href="#cb459-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb459-3"><a href="#cb459-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionInputTempFileName</span>{temporary-input.md}</span>
+<span id="cb459-4"><a href="#cb459-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputDir</span>{output-directory}</span>
+<span id="cb459-5"><a href="#cb459-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{output-directory/cache-directory}</span>
+<span id="cb459-6"><a href="#cb459-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionEagerCache</span>{true}</span>
+<span id="cb459-7"><a href="#cb459-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span>
+<span id="cb459-8"><a href="#cb459-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{output-directory/cache-directory/frozen-cache.tex}</span>
+<span id="cb459-9"><a href="#cb459-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb459-10"><a href="#cb459-10" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb459-11"><a href="#cb459-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb459-12"><a href="#cb459-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb425"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb425-1"><a href="#cb425-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> <span class="at">--output-directory</span> output-directory document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb460"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb460-1"><a href="#cb460-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> <span class="at">--output-directory</span> output-directory document.tex</span></code></pre></div>
<p>A text document named <code>temporary-input.md</code> should be
produced in the folder named <code>output-directory</code> and contain
the following text:</p>
@@ -7167,23 +7938,65 @@ document. LuaTeX does not need other temporary files to perform the
conversion from markdown to <span class="tex">T<sub>e</sub>X</span>. To
produce the remaining temporary files, invoke pdfTeX from the
terminal:</p>
-<div class="sourceCode" id="cb426"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb426-1"><a href="#cb426-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--output-directory</span> output-directory <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
-<p>Text documents named <code>helper-script.lua</code>, and
-<code>temporary-output.md</code> should be produced in the folder named
-<code>output-directory</code>. The document named
-<code>helper-script.lua</code> will contain Lua code that was executed
-to convert markdown to plain <span class="tex">T<sub>e</sub>X</span>.
-The document named <code>temporary-output.tex</code> will contain the
-input markdown document converted to <span
+<div class="sourceCode" id="cb461"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb461-1"><a href="#cb461-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> <span class="at">--output-directory</span> output-directory <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<p>Text document named <code>temporary-output.md</code> should be
+produced in the folder named <code>output-directory</code>. The document
+will contain the input markdown document converted to <span
class="tex">T<sub>e</sub>X</span>.</p>
-<p>No document named <code>error-output.txt</code> should be produced in
-the folder named <code>output-directory</code>. This document would only
-be produced if an error had occured while executing the Lua code. If
-this happens, please <a
-href="https://github.com/witiko/markdown/issues">file a bug</a>.</p>
-<h4 data-number="2.2.2.4" id="package-documentation"><span
-class="header-section-number">2.2.2.4</span> Package Documentation</h4>
+<h4 data-number="2.2.2.4" id="plain"><span
+class="header-section-number">2.2.2.4</span> No default token renderer
+prototypes</h4>
+<p>The Markdown package provides default definitions for token renderer
+prototypes using the <code>witiko/markdown/defaults</code> theme.
+Although these default definitions provide a useful starting point for
+authors, they use extra resources, especially with higher-level <span
+class="tex">T<sub>e</sub>X</span> formats such as <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> and Con<span
+class="tex">T<sub>e</sub>X</span>t. Furthermore, the default definitions
+may change at any time, which may pose a problem for maintainers of
+Markdown themes and templates who may require a stable output.</p>
+<p>The <code>\markdownOptionPlain</code> macro specifies whether
+higher-level <span class="tex">T<sub>e</sub>X</span> formats should only
+use the plain <span class="tex">T<sub>e</sub>X</span> default
+definitions or whether they should also use the format-specific default
+definitions. Whereas plain <span class="tex">T<sub>e</sub>X</span>
+default definitions only provide definitions for simple elements such as
+emphasis, strong emphasis, and paragraph separators, format-specific
+default definitions add support for more complex elements such as lists,
+tables, and citations. On the flip side, plain <span
+class="tex">T<sub>e</sub>X</span> default definitions load no extra
+resources and are rather stable, whereas format-specific default
+definitions load extra resources and are subject to a more rapid
+change.</p>
+<p>Here is how you would enable the macro in a <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p>
+<div class="sourceCode" id="cb462"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb462-1"><a href="#cb462-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[plain]{<span class="ex">markdown</span>}</span></code></pre></div>
+<p>Here is how you would enable the macro in a Con<span
+class="tex">T<sub>e</sub>X</span>t document:</p>
+<div class="sourceCode" id="cb463"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb463-1"><a href="#cb463-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionPlain</span>{true}</span>
+<span id="cb463-2"><a href="#cb463-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span></code></pre></div>
+<p>The macro must be set before or during the loading of the package.
+Setting the macro after loading the package has no effect.</p>
+<p>The <code>\markdownOptionNoDefaults</code> macro specifies whether we
+should prevent the loading of default definitions or not. This is useful
+in contexts, where we want to have total control over how all elements
+are rendered.</p>
+<p>Here is how you would enable the macro in a <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p>
+<div class="sourceCode" id="cb464"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb464-1"><a href="#cb464-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[noDefaults]{<span class="ex">markdown</span>}</span></code></pre></div>
+<p>Here is how you would enable the macro in a Con<span
+class="tex">T<sub>e</sub>X</span>t document:</p>
+<div class="sourceCode" id="cb465"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb465-1"><a href="#cb465-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNoDefaults</span>{true}</span>
+<span id="cb465-2"><a href="#cb465-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span></code></pre></div>
+<p>The macro must be set before or during the loading of the package.
+Setting the macro after loading the package has no effect.</p>
+<h4 data-number="2.2.2.5" id="package-documentation"><span
+class="header-section-number">2.2.2.5</span> Package Documentation</h4>
<p>The <code>\markdownOptionStripPercentSigns</code> macro controls
whether a percent sign (<code>\%</code>) at the beginning of a line will
be discarded when reading Markdown input from a <span
@@ -7197,33 +8010,179 @@ Mittelbach. The recognized values of the macro are <code>true</code>
<code>false</code>.</p>
<p>Using a text editor, create a text document named
<code>document.dtx</code> with the following content:</p>
-<div class="sourceCode" id="cb427"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb427-1"><a href="#cb427-1" aria-hidden="true" tabindex="-1"></a><span class="co">% \iffalse</span></span>
-<span id="cb427-2"><a href="#cb427-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">ltxdoc</span>}</span>
-<span id="cb427-3"><a href="#cb427-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripPercentSigns]{<span class="ex">markdown</span>}</span>
-<span id="cb427-4"><a href="#cb427-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb427-5"><a href="#cb427-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\DocInput</span>{document.dtx}</span>
-<span id="cb427-6"><a href="#cb427-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span>
-<span id="cb427-7"><a href="#cb427-7" aria-hidden="true" tabindex="-1"></a><span class="co">% \fi</span></span>
-<span id="cb427-8"><a href="#cb427-8" aria-hidden="true" tabindex="-1"></a><span class="co">%</span></span>
-<span id="cb427-9"><a href="#cb427-9" aria-hidden="true" tabindex="-1"></a><span class="co">% \begin{markdown}</span></span>
-<span id="cb427-10"><a href="#cb427-10" aria-hidden="true" tabindex="-1"></a><span class="co">% Hello *world*!</span></span>
-<span id="cb427-11"><a href="#cb427-11" aria-hidden="true" tabindex="-1"></a><span class="co">% \end{markdown}</span></span></code></pre></div>
+<div class="sourceCode" id="cb466"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb466-1"><a href="#cb466-1" aria-hidden="true" tabindex="-1"></a><span class="co">% \iffalse</span></span>
+<span id="cb466-2"><a href="#cb466-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">ltxdoc</span>}</span>
+<span id="cb466-3"><a href="#cb466-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripPercentSigns]{<span class="ex">markdown</span>}</span>
+<span id="cb466-4"><a href="#cb466-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb466-5"><a href="#cb466-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\DocInput</span>{document.dtx}</span>
+<span id="cb466-6"><a href="#cb466-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span>
+<span id="cb466-7"><a href="#cb466-7" aria-hidden="true" tabindex="-1"></a><span class="co">% \fi</span></span>
+<span id="cb466-8"><a href="#cb466-8" aria-hidden="true" tabindex="-1"></a><span class="co">%</span></span>
+<span id="cb466-9"><a href="#cb466-9" aria-hidden="true" tabindex="-1"></a><span class="co">% \begin{markdown}</span></span>
+<span id="cb466-10"><a href="#cb466-10" aria-hidden="true" tabindex="-1"></a><span class="co">% Hello *world*!</span></span>
+<span id="cb466-11"><a href="#cb466-11" aria-hidden="true" tabindex="-1"></a><span class="co">% \end{markdown}</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb428"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb428-1"><a href="#cb428-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.dtx</span></code></pre></div>
+<div class="sourceCode" id="cb467"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb467-1"><a href="#cb467-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.dtx</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the text “Hello <em>world</em>!”</p>
-<h3 data-number="2.2.3" id="latex-1"><span
-class="header-section-number">2.2.3</span> <span
+<h3 data-number="2.2.3" id="themes"><span
+class="header-section-number">2.2.3</span> Themes</h3>
+<p>User-defined themes for the Markdown package provide a
+domain-specific interpretation of Markdown tokens. Themes allow the
+authors to achieve a specific look and other high-level goals without
+low-level programming.</p>
+<p>Built-in plain <span class="tex">T<sub>e</sub>X</span> themes
+provided with the Markdown package include:</p>
+<dl>
+<dt><strong><code>witiko/tilde</code></strong></dt>
+<dd>
+<p>A theme that makes tilde (<code>~</code>) always typeset the
+non-breaking space even when the <strong><code>hybrid</code></strong>
+Lua option is disabled.</p>
+</dd>
+</dl>
+<h5 class="unnumbered" id="plain-tex-example-24">Plain <span
+class="tex">T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb468"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb468-1"><a href="#cb468-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb468-2"><a href="#cb468-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=witiko/tilde}</span>
+<span id="cb468-3"><a href="#cb468-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb468-4"><a href="#cb468-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb468-5"><a href="#cb468-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb468-6"><a href="#cb468-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb469"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb469-1"><a href="#cb469-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text, where the middot (<code>·</code>) denotes a
+non-breaking space:</p>
+<blockquote>
+<p>Bartel·Leendert van·der·Waerden</p>
+</blockquote>
+<dl>
+<dt><strong><code>witiko/markdown/defaults</code></strong></dt>
+<dd>
+<p>A plain <span class="tex">T<sub>e</sub>X</span> theme with the
+default definitions of token renderer prototypes for plain <span
+class="tex">T<sub>e</sub>X</span>. This theme is loaded automatically
+together with the package and explicitly loading it has no effect.</p>
+</dd>
+</dl>
+<h3 data-number="2.2.4" id="snippets"><span
+class="header-section-number">2.2.4</span> Snippets</h3>
+<p>User-defined themes provide global control over high-level goals.
+However, it is often desirable to change only some local aspects of a
+document. Snippets provide syntactic sugar for defining and invoking
+various options locally.</p>
+<p>Here is how we can use snippets to store options and invoke them
+later in <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>:</p>
+<div class="sourceCode" id="cb470"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb470-1"><a href="#cb470-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{romanNumerals}{</span>
+<span id="cb470-2"><a href="#cb470-2" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb470-3"><a href="#cb470-3" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
+<span id="cb470-4"><a href="#cb470-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[<span class="fu">\romannumeral</span>#1<span class="fu">\relax</span>.]<span class="co">%</span></span>
+<span id="cb470-5"><a href="#cb470-5" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb470-6"><a href="#cb470-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb470-7"><a href="#cb470-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb470-8"><a href="#cb470-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb470-9"><a href="#cb470-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb470-10"><a href="#cb470-10" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by arabic numerals:</span>
+<span id="cb470-11"><a href="#cb470-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb470-12"><a href="#cb470-12" aria-hidden="true" tabindex="-1"></a>1. wahid</span>
+<span id="cb470-13"><a href="#cb470-13" aria-hidden="true" tabindex="-1"></a>2. aithnayn</span>
+<span id="cb470-14"><a href="#cb470-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb470-15"><a href="#cb470-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb470-16"><a href="#cb470-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=romanNumerals]</span>
+<span id="cb470-17"><a href="#cb470-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb470-18"><a href="#cb470-18" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb470-19"><a href="#cb470-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb470-20"><a href="#cb470-20" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb470-21"><a href="#cb470-21" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
+<span id="cb470-22"><a href="#cb470-22" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb470-23"><a href="#cb470-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div>
+<p>If the <code>romanNumerals</code> snippet were defined in the
+<code>jdoe/lists</code> theme, we could import the
+<code>jdoe/lists</code> theme and use the qualified name
+<code>jdoe/lists/romanNumerals</code> to invoke the snippet:</p>
+<div class="sourceCode" id="cb471"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb471-1"><a href="#cb471-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=jdoe/lists}</span>
+<span id="cb471-2"><a href="#cb471-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=jdoe/lists/romanNumerals]</span>
+<span id="cb471-3"><a href="#cb471-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb471-4"><a href="#cb471-4" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb471-5"><a href="#cb471-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb471-6"><a href="#cb471-6" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb471-7"><a href="#cb471-7" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
+<span id="cb471-8"><a href="#cb471-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb471-9"><a href="#cb471-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div>
+<p>Alternatively, we can use the extended variant of the
+<code>import</code> <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option that allows us
+to import the <code>romanNumerals</code> snippet to the current
+namespace for easier access:</p>
+<div class="sourceCode" id="cb472"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb472-1"><a href="#cb472-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb472-2"><a href="#cb472-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
+<span id="cb472-3"><a href="#cb472-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals,</span>
+<span id="cb472-4"><a href="#cb472-4" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb472-5"><a href="#cb472-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb472-6"><a href="#cb472-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=romanNumerals]</span>
+<span id="cb472-7"><a href="#cb472-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-8"><a href="#cb472-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb472-9"><a href="#cb472-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-10"><a href="#cb472-10" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb472-11"><a href="#cb472-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
+<span id="cb472-12"><a href="#cb472-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-13"><a href="#cb472-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div>
+<p>Furthermore, we can also specify the name of the snippet in the
+current namespace, which can be different from the name of the snippet
+in the <code>jdoe/lists</code> theme. For example, we can make the
+snippet <code>jdoe/lists/romanNumerals</code> available under the name
+<code>roman</code>.</p>
+<div class="sourceCode" id="cb473"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb473-1"><a href="#cb473-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb473-2"><a href="#cb473-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
+<span id="cb473-3"><a href="#cb473-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals as roman,</span>
+<span id="cb473-4"><a href="#cb473-4" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb473-5"><a href="#cb473-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb473-6"><a href="#cb473-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=roman]</span>
+<span id="cb473-7"><a href="#cb473-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb473-8"><a href="#cb473-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb473-9"><a href="#cb473-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb473-10"><a href="#cb473-10" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb473-11"><a href="#cb473-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
+<span id="cb473-12"><a href="#cb473-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb473-13"><a href="#cb473-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div>
+<p>Several themes and/or snippets can be loaded at once using the
+extended variant of the <code>import</code> <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option:</p>
+<div class="sourceCode" id="cb474"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb474-1"><a href="#cb474-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb474-2"><a href="#cb474-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
+<span id="cb474-3"><a href="#cb474-3" aria-hidden="true" tabindex="-1"></a> jdoe/longpackagename/lists = {</span>
+<span id="cb474-4"><a href="#cb474-4" aria-hidden="true" tabindex="-1"></a> arabic as arabic1,</span>
+<span id="cb474-5"><a href="#cb474-5" aria-hidden="true" tabindex="-1"></a> roman,</span>
+<span id="cb474-6"><a href="#cb474-6" aria-hidden="true" tabindex="-1"></a> alphabetic,</span>
+<span id="cb474-7"><a href="#cb474-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb474-8"><a href="#cb474-8" aria-hidden="true" tabindex="-1"></a> jdoe/anotherlongpackagename/lists = {</span>
+<span id="cb474-9"><a href="#cb474-9" aria-hidden="true" tabindex="-1"></a> arabic as arabic2,</span>
+<span id="cb474-10"><a href="#cb474-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb474-11"><a href="#cb474-11" aria-hidden="true" tabindex="-1"></a> jdoe/yetanotherlongpackagename,</span>
+<span id="cb474-12"><a href="#cb474-12" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb474-13"><a href="#cb474-13" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<h3 data-number="2.2.5" id="latex-1"><span
+class="header-section-number">2.2.5</span> <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h3>
<p><span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> options allow
us to disable the redefinition of the default renderer prototypes from
plain <span class="tex">T<sub>e</sub>X</span>, load user-defined themes,
and invoke user-defined set-up snippets.</p>
-<h4 data-number="2.2.3.1"
+<h4 data-number="2.2.5.1"
id="setting-lua-and-plain-tex-options-from-latex"><span
-class="header-section-number">2.2.3.1</span> Setting Lua and plain <span
+class="header-section-number">2.2.5.1</span> Setting Lua and plain <span
class="tex">T<sub>e</sub>X</span> options from <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span></h4>
<p>As a rule of thumb, we can set all Lua options directly from <span
@@ -7231,59 +8190,60 @@ class="latex">L<sup>a</sup>T<sub>e</sub>X</span>. For example, to set
the <strong><code>taskLists</code></strong> Lua option to
<code>true</code>, we would include the following code in our <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p>
-<div class="sourceCode" id="cb429"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb429-1"><a href="#cb429-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb429-2"><a href="#cb429-2" aria-hidden="true" tabindex="-1"></a> taskLists = true,</span>
-<span id="cb429-3"><a href="#cb429-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb475"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb475-1"><a href="#cb475-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb475-2"><a href="#cb475-2" aria-hidden="true" tabindex="-1"></a> taskLists = true,</span>
+<span id="cb475-3"><a href="#cb475-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>We can also set all plain <span class="tex">T<sub>e</sub>X</span>
options directly from <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span>. For example, to set
-the <code>\markdownOptionHelperScriptFileName</code> plain <span
+the <code>\markdownOptionInputTempFileName</code> plain <span
class="tex">T<sub>e</sub>X</span> option to
<code>helper-script.lua</code>, we would inclde the following code in
our <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document:</p>
-<div class="sourceCode" id="cb430"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb430-1"><a href="#cb430-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb430-2"><a href="#cb430-2" aria-hidden="true" tabindex="-1"></a> helperScriptFileName = helper-script.lua,</span>
-<span id="cb430-3"><a href="#cb430-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
-<h4 data-number="2.2.3.2" id="latexplain"><span
-class="header-section-number">2.2.3.2</span> No default token renderer
-prototypes</h4>
-<p>Default token renderer prototypes require <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> packages that may clash
-with other packages used in a document. Additionally, if we redefine
-token renderers and renderer prototypes ourselves, the default
-definitions will bring no benefit to us. Using the <code>plain</code>
-package option, we can keep the default definitions from the plain <span
-class="tex">T<sub>e</sub>X</span> implementation and prevent the soft
-<span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> prerequisites
-from being loaded: The plain option must be set before or when loading
-the package. Setting the option after loading the package will have no
-effect.</p>
-<div class="sourceCode" id="cb431"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb431-1"><a href="#cb431-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[plain]{<span class="ex">markdown</span>}</span></code></pre></div>
-<h4 data-number="2.2.3.3" id="latexthemes"><span
-class="header-section-number">2.2.3.3</span> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> themes</h4>
-<p>User-defined <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>
-themes for the Markdown package provide a domain-specific interpretation
-of Markdown tokens. Similarly to <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> packages, themes allow
-the authors to achieve a specific look and other high-level goals
-without low-level programming.</p>
+<div class="sourceCode" id="cb476"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb476-1"><a href="#cb476-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb476-2"><a href="#cb476-2" aria-hidden="true" tabindex="-1"></a> inputTempFileName = temporary-input.md,</span>
+<span id="cb476-3"><a href="#cb476-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<h3 data-number="2.2.6" id="latexthemes"><span
+class="header-section-number">2.2.6</span> Themes</h3>
+<p>In <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>, we expand
+on the concept of <a href="#themes">themes</a> by allowing a theme to be
+a full-blown <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>
+package. Specifically, the key-values <code>theme</code>=⟨<em>theme
+name</em>⟩ and <code>import</code>=⟨<em>theme name</em>⟩ load a <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package named
+<code>markdowntheme</code>⟨<em>munged theme name</em>⟩<code>.sty</code>
+if it exists and a <span class="tex">T<sub>e</sub>X</span> document
+named <code>markdowntheme</code>\meta{munged theme
+name}<code>.tex</code> otherwise.</p>
+<p>Having the Markdown package automatically load either the generic
+<code>.tex</code> <em>theme file</em> or the <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span>-specific
+<code>.sty</code> theme file allows developers to have a single
+<em>theme file</em>, when the theme is small or the difference between
+<span class="tex">T<sub>e</sub>X</span> formats is unimportant, and
+scale up to separate theme files native to different <span
+class="tex">T<sub>e</sub>X</span> formats for large multi-format themes,
+where different code is needed for different <span
+class="tex">T<sub>e</sub>X</span> formats. To enable code reuse,
+developers can load the <code>.tex</code> theme file from the
+<code>.sty</code> theme file using the
+<code>\markdownLoadPlainTeXTheme</code> macro.</p>
<p>For example, to load themes named <code>witiko/beamer/MU</code> and
<code>witiko/dot</code>, you would use the following code in the
preamble of your document:</p>
-<div class="sourceCode" id="cb432"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb432-1"><a href="#cb432-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
-<span id="cb432-2"><a href="#cb432-2" aria-hidden="true" tabindex="-1"></a> import=witiko/beamer/MU,</span>
-<span id="cb432-3"><a href="#cb432-3" aria-hidden="true" tabindex="-1"></a> import=witiko/dot,</span>
-<span id="cb432-4"><a href="#cb432-4" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb477"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb477-1"><a href="#cb477-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
+<span id="cb477-2"><a href="#cb477-2" aria-hidden="true" tabindex="-1"></a> import=witiko/beamer/MU,</span>
+<span id="cb477-3"><a href="#cb477-3" aria-hidden="true" tabindex="-1"></a> import=witiko/dot,</span>
+<span id="cb477-4"><a href="#cb477-4" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span></code></pre></div>
<p>Due to limitations of <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span>, themes may not be
loaded after the beginning of a <span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document.</p>
-<p>Example themes provided with the Markdown package include:</p>
+<p>Built-in <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>
+themes provided with the Markdown package include:</p>
<dl>
<dt><strong><code>witiko/dot</code></strong></dt>
<dd>
@@ -7296,48 +8256,48 @@ installed. The theme also requires shell access unless the
class="tex">T<sub>e</sub>X</span> option is enabled.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-51"><span
+<h5 class="unnumbered" id="latex-example-54"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb433"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb433-1"><a href="#cb433-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb433-2"><a href="#cb433-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/dot]{<span class="ex">markdown</span>}</span>
-<span id="cb433-3"><a href="#cb433-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\setkeys</span>{Gin}{</span>
-<span id="cb433-4"><a href="#cb433-4" aria-hidden="true" tabindex="-1"></a> width=<span class="fu">\columnwidth</span>,</span>
-<span id="cb433-5"><a href="#cb433-5" aria-hidden="true" tabindex="-1"></a> height=0.65<span class="fu">\paperheight</span>,</span>
-<span id="cb433-6"><a href="#cb433-6" aria-hidden="true" tabindex="-1"></a> keepaspectratio}</span>
-<span id="cb433-7"><a href="#cb433-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb433-8"><a href="#cb433-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb433-9"><a href="#cb433-9" aria-hidden="true" tabindex="-1"></a>``` dot Various formats of mathemathical formulae</span>
-<span id="cb433-10"><a href="#cb433-10" aria-hidden="true" tabindex="-1"></a>digraph tree {</span>
-<span id="cb433-11"><a href="#cb433-11" aria-hidden="true" tabindex="-1"></a> margin = 0;</span>
-<span id="cb433-12"><a href="#cb433-12" aria-hidden="true" tabindex="-1"></a> rankdir = &quot;LR&quot;;</span>
-<span id="cb433-13"><a href="#cb433-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb433-14"><a href="#cb433-14" aria-hidden="true" tabindex="-1"></a> latex -&gt; pmml;</span>
-<span id="cb433-15"><a href="#cb433-15" aria-hidden="true" tabindex="-1"></a> latex -&gt; cmml;</span>
-<span id="cb433-16"><a href="#cb433-16" aria-hidden="true" tabindex="-1"></a> pmml -&gt; slt;</span>
-<span id="cb433-17"><a href="#cb433-17" aria-hidden="true" tabindex="-1"></a> cmml -&gt; opt;</span>
-<span id="cb433-18"><a href="#cb433-18" aria-hidden="true" tabindex="-1"></a> cmml -&gt; prefix;</span>
-<span id="cb433-19"><a href="#cb433-19" aria-hidden="true" tabindex="-1"></a> cmml -&gt; infix;</span>
-<span id="cb433-20"><a href="#cb433-20" aria-hidden="true" tabindex="-1"></a> pmml -&gt; mterms [style=dashed];</span>
-<span id="cb433-21"><a href="#cb433-21" aria-hidden="true" tabindex="-1"></a> cmml -&gt; mterms;</span>
-<span id="cb433-22"><a href="#cb433-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb433-23"><a href="#cb433-23" aria-hidden="true" tabindex="-1"></a> latex [label = &quot;LaTeX&quot;];</span>
-<span id="cb433-24"><a href="#cb433-24" aria-hidden="true" tabindex="-1"></a> pmml [label = &quot;Presentation MathML&quot;];</span>
-<span id="cb433-25"><a href="#cb433-25" aria-hidden="true" tabindex="-1"></a> cmml [label = &quot;Content MathML&quot;];</span>
-<span id="cb433-26"><a href="#cb433-26" aria-hidden="true" tabindex="-1"></a> slt [label = &quot;Symbol Layout Tree&quot;];</span>
-<span id="cb433-27"><a href="#cb433-27" aria-hidden="true" tabindex="-1"></a> opt [label = &quot;Operator Tree&quot;];</span>
-<span id="cb433-28"><a href="#cb433-28" aria-hidden="true" tabindex="-1"></a> prefix [label = &quot;Prefix&quot;];</span>
-<span id="cb433-29"><a href="#cb433-29" aria-hidden="true" tabindex="-1"></a> infix [label = &quot;Infix&quot;];</span>
-<span id="cb433-30"><a href="#cb433-30" aria-hidden="true" tabindex="-1"></a> mterms [label = &quot;M-Terms&quot;];</span>
-<span id="cb433-31"><a href="#cb433-31" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb433-32"><a href="#cb433-32" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb433-33"><a href="#cb433-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb433-34"><a href="#cb433-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb478"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb478-1"><a href="#cb478-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb478-2"><a href="#cb478-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/dot]{<span class="ex">markdown</span>}</span>
+<span id="cb478-3"><a href="#cb478-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\setkeys</span>{Gin}{</span>
+<span id="cb478-4"><a href="#cb478-4" aria-hidden="true" tabindex="-1"></a> width=<span class="fu">\columnwidth</span>,</span>
+<span id="cb478-5"><a href="#cb478-5" aria-hidden="true" tabindex="-1"></a> height=0.65<span class="fu">\paperheight</span>,</span>
+<span id="cb478-6"><a href="#cb478-6" aria-hidden="true" tabindex="-1"></a> keepaspectratio}</span>
+<span id="cb478-7"><a href="#cb478-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb478-8"><a href="#cb478-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb478-9"><a href="#cb478-9" aria-hidden="true" tabindex="-1"></a>``` dot Various formats of mathemathical formulae</span>
+<span id="cb478-10"><a href="#cb478-10" aria-hidden="true" tabindex="-1"></a>digraph tree {</span>
+<span id="cb478-11"><a href="#cb478-11" aria-hidden="true" tabindex="-1"></a> margin = 0;</span>
+<span id="cb478-12"><a href="#cb478-12" aria-hidden="true" tabindex="-1"></a> rankdir = &quot;LR&quot;;</span>
+<span id="cb478-13"><a href="#cb478-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb478-14"><a href="#cb478-14" aria-hidden="true" tabindex="-1"></a> latex -&gt; pmml;</span>
+<span id="cb478-15"><a href="#cb478-15" aria-hidden="true" tabindex="-1"></a> latex -&gt; cmml;</span>
+<span id="cb478-16"><a href="#cb478-16" aria-hidden="true" tabindex="-1"></a> pmml -&gt; slt;</span>
+<span id="cb478-17"><a href="#cb478-17" aria-hidden="true" tabindex="-1"></a> cmml -&gt; opt;</span>
+<span id="cb478-18"><a href="#cb478-18" aria-hidden="true" tabindex="-1"></a> cmml -&gt; prefix;</span>
+<span id="cb478-19"><a href="#cb478-19" aria-hidden="true" tabindex="-1"></a> cmml -&gt; infix;</span>
+<span id="cb478-20"><a href="#cb478-20" aria-hidden="true" tabindex="-1"></a> pmml -&gt; mterms [style=dashed];</span>
+<span id="cb478-21"><a href="#cb478-21" aria-hidden="true" tabindex="-1"></a> cmml -&gt; mterms;</span>
+<span id="cb478-22"><a href="#cb478-22" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb478-23"><a href="#cb478-23" aria-hidden="true" tabindex="-1"></a> latex [label = &quot;LaTeX&quot;];</span>
+<span id="cb478-24"><a href="#cb478-24" aria-hidden="true" tabindex="-1"></a> pmml [label = &quot;Presentation MathML&quot;];</span>
+<span id="cb478-25"><a href="#cb478-25" aria-hidden="true" tabindex="-1"></a> cmml [label = &quot;Content MathML&quot;];</span>
+<span id="cb478-26"><a href="#cb478-26" aria-hidden="true" tabindex="-1"></a> slt [label = &quot;Symbol Layout Tree&quot;];</span>
+<span id="cb478-27"><a href="#cb478-27" aria-hidden="true" tabindex="-1"></a> opt [label = &quot;Operator Tree&quot;];</span>
+<span id="cb478-28"><a href="#cb478-28" aria-hidden="true" tabindex="-1"></a> prefix [label = &quot;Prefix&quot;];</span>
+<span id="cb478-29"><a href="#cb478-29" aria-hidden="true" tabindex="-1"></a> infix [label = &quot;Infix&quot;];</span>
+<span id="cb478-30"><a href="#cb478-30" aria-hidden="true" tabindex="-1"></a> mterms [label = &quot;M-Terms&quot;];</span>
+<span id="cb478-31"><a href="#cb478-31" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb478-32"><a href="#cb478-32" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb478-33"><a href="#cb478-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb478-34"><a href="#cb478-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb434"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb434-1"><a href="#cb434-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb479"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb479-1"><a href="#cb479-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain a drawing of a directed graph similar to Figure 1 from the
following conference article:</p>
@@ -7363,164 +8323,82 @@ Wget or cURL installed. The theme also requires shell access unless the
class="tex">T<sub>e</sub>X</span> option is enabled.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-52"><span
+<h5 class="unnumbered" id="latex-example-55"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb435"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb435-1"><a href="#cb435-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb435-2"><a href="#cb435-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/graphicx/http]{<span class="ex">markdown</span>}</span>
-<span id="cb435-3"><a href="#cb435-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb435-4"><a href="#cb435-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb435-5"><a href="#cb435-5" aria-hidden="true" tabindex="-1"></a>![img](https://github.com/witiko/markdown/raw/main/markdown.png</span>
-<span id="cb435-6"><a href="#cb435-6" aria-hidden="true" tabindex="-1"></a> &quot;The banner of the Markdown package&quot;)</span>
-<span id="cb435-7"><a href="#cb435-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb435-8"><a href="#cb435-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb480"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb480-1"><a href="#cb480-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb480-2"><a href="#cb480-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/graphicx/http]{<span class="ex">markdown</span>}</span>
+<span id="cb480-3"><a href="#cb480-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb480-4"><a href="#cb480-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb480-5"><a href="#cb480-5" aria-hidden="true" tabindex="-1"></a>![img](https://github.com/witiko/markdown/raw/main/markdown.png</span>
+<span id="cb480-6"><a href="#cb480-6" aria-hidden="true" tabindex="-1"></a> &quot;The banner of the Markdown package&quot;)</span>
+<span id="cb480-7"><a href="#cb480-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb480-8"><a href="#cb480-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb436"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb436-1"><a href="#cb436-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb481"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb481-1"><a href="#cb481-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following image:</p>
<blockquote>
<figure>
-<img
-src="https://github.com/witiko/markdown/raw/main/markdown.png%20%22The%20banner%20of%20the%20Markdown%20package%22"
-alt="img" />
+<img src="https://github.com/witiko/markdown/raw/main/markdown.png"
+title="The banner of the Markdown package" alt="img" />
<figcaption aria-hidden="true">img</figcaption>
</figure>
</blockquote>
<dl>
-<dt><strong><code>witiko/tilde</code></strong></dt>
+<dt><strong><code>witiko/markdown/defaults</code></strong></dt>
+<dd>
+<p>A <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span> theme with
+the default definitions of token renderer prototypes for plain <span
+class="tex">T<sub>e</sub>X</span>. This theme is loaded automatically
+together with the package and explicitly loading it has no effect.</p>
+</dd>
+</dl>
+<h3 data-number="2.2.7" id="themes-1"><span
+class="header-section-number">2.2.7</span> Themes</h3>
+<p>In Con<span class="tex">T<sub>e</sub>X</span>t, we expand on the
+concept of <a href="#themes">themes</a> by allowing a theme to be a
+full-blown Con<span class="tex">T<sub>e</sub>X</span>t module.
+Specifically, the key-values <code>theme</code>=⟨<em>theme name</em>⟩
+and <code>import</code>=⟨<em>theme name</em>⟩ load a Con<span
+class="tex">T<sub>e</sub>X</span>t module named
+<code>t-markdowntheme</code>⟨<em>munged theme
+name</em>⟩<code>.tex</code> if it exists and a <span
+class="tex">T<sub>e</sub>X</span> document named
+<code>markdowntheme</code>\meta{munged theme name}<code>.tex</code>
+otherwise.</p>
+<p>Having the Markdown package automatically load either the generic
+<code>.tex</code> <em>theme file</em> or the Con<span
+class="tex">T<sub>e</sub>X</span>t-specific <code>t-*.tex</code> theme
+file allows developers to have a single <em>theme file</em>, when the
+theme is small or the difference between <span
+class="tex">T<sub>e</sub>X</span> formats is unimportant, and scale up
+to separate theme files native to different <span
+class="tex">T<sub>e</sub>X</span> formats for large multi-format themes,
+where different code is needed for different <span
+class="tex">T<sub>e</sub>X</span> formats. To enable code reuse,
+developers can load the <code>.tex</code> theme file from the
+<code>t-*.tex</code> theme file using the
+<code>\markdownLoadPlainTeXTheme</code> macro.</p>
+<p>For example, to load a theme named <code>witiko/tilde</code> in your
+document:</p>
+<div class="sourceCode" id="cb482"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb482-1"><a href="#cb482-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb482-2"><a href="#cb482-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[import=witiko/tilde]</span></code></pre></div>
+<p>Built-in Con<span class="tex">T<sub>e</sub>X</span>t themes provided
+with the Markdown package include:</p>
+<dl>
+<dt><strong><code>witiko/markdown/defaults</code></strong></dt>
<dd>
-<p>A theme that makes tilde (<code>~</code>) always typeset the
-non-breaking space even when the <strong><code>hybrid</code></strong>
-Lua option is disabled.</p>
+<p>A Con<span class="tex">T<sub>e</sub>X</span>t theme with the default
+definitions of token renderer prototypes for plain <span
+class="tex">T<sub>e</sub>X</span>. This theme is loaded automatically
+together with the package and explicitly loading it has no effect.</p>
</dd>
</dl>
-<h5 class="unnumbered" id="latex-example-53"><span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
-<p>Using a text editor, create a text document named
-<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb437"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb437-1"><a href="#cb437-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb437-2"><a href="#cb437-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/tilde]{<span class="ex">markdown</span>}</span>
-<span id="cb437-3"><a href="#cb437-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb437-4"><a href="#cb437-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb437-5"><a href="#cb437-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb437-6"><a href="#cb437-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb437-7"><a href="#cb437-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb438"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb438-1"><a href="#cb438-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
-<p>A PDF document named <code>document.pdf</code> should be produced and
-contain the following text, where the middot (<code>·</code>) denotes a
-non-breaking space:</p>
-<blockquote>
-<p>Bartel·Leendert van·der·Waerden</p>
-</blockquote>
-<h4 data-number="2.2.3.4" id="latexsnippets"><span
-class="header-section-number">2.2.3.4</span> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> snippets</h4>
-<p>User-defined <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>
-themes provide global control over high-level goals. However, it is
-often desirable to change only some local aspects of a document. <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> snippets provide
-syntactic sugar for defining and invoking various options locally.</p>
-<p>Here is how we can use snippets to store options and invoke them
-later:</p>
-<div class="sourceCode" id="cb439"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb439-1"><a href="#cb439-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{romanNumerals}{</span>
-<span id="cb439-2"><a href="#cb439-2" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb439-3"><a href="#cb439-3" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
-<span id="cb439-4"><a href="#cb439-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[<span class="fu">\romannumeral</span>#1<span class="fu">\relax</span>.]<span class="co">%</span></span>
-<span id="cb439-5"><a href="#cb439-5" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb439-6"><a href="#cb439-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb439-7"><a href="#cb439-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb439-8"><a href="#cb439-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb439-9"><a href="#cb439-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb439-10"><a href="#cb439-10" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by arabic numerals:</span>
-<span id="cb439-11"><a href="#cb439-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb439-12"><a href="#cb439-12" aria-hidden="true" tabindex="-1"></a>1. wahid</span>
-<span id="cb439-13"><a href="#cb439-13" aria-hidden="true" tabindex="-1"></a>2. aithnayn</span>
-<span id="cb439-14"><a href="#cb439-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb439-15"><a href="#cb439-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb439-16"><a href="#cb439-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=romanNumerals}</span>
-<span id="cb439-17"><a href="#cb439-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb439-18"><a href="#cb439-18" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
-<span id="cb439-19"><a href="#cb439-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb439-20"><a href="#cb439-20" aria-hidden="true" tabindex="-1"></a>3. tres</span>
-<span id="cb439-21"><a href="#cb439-21" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
-<span id="cb439-22"><a href="#cb439-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb439-23"><a href="#cb439-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div>
-<p>If the <code>romanNumerals</code> snippet were defined in the
-<code>jdoe/lists</code> theme, we could import the
-<code>jdoe/lists</code> theme and use the qualified name
-<code>jdoe/lists/romanNumerals</code> to invoke the snippet:</p>
-<div class="sourceCode" id="cb440"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb440-1"><a href="#cb440-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=jdoe/lists}</span>
-<span id="cb440-2"><a href="#cb440-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=jdoe/lists/romanNumerals}</span>
-<span id="cb440-3"><a href="#cb440-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb440-4"><a href="#cb440-4" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
-<span id="cb440-5"><a href="#cb440-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb440-6"><a href="#cb440-6" aria-hidden="true" tabindex="-1"></a>3. tres</span>
-<span id="cb440-7"><a href="#cb440-7" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
-<span id="cb440-8"><a href="#cb440-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb440-9"><a href="#cb440-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div>
-<p>Alternatively, we can use the extended variant of the
-<code>import</code> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option that allows us
-to import the <code>romanNumerals</code> snippet to the current
-namespace for easier access:</p>
-<div class="sourceCode" id="cb441"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb441-1"><a href="#cb441-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb441-2"><a href="#cb441-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
-<span id="cb441-3"><a href="#cb441-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals,</span>
-<span id="cb441-4"><a href="#cb441-4" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb441-5"><a href="#cb441-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb441-6"><a href="#cb441-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=romanNumerals}</span>
-<span id="cb441-7"><a href="#cb441-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb441-8"><a href="#cb441-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
-<span id="cb441-9"><a href="#cb441-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb441-10"><a href="#cb441-10" aria-hidden="true" tabindex="-1"></a>3. tres</span>
-<span id="cb441-11"><a href="#cb441-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
-<span id="cb441-12"><a href="#cb441-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb441-13"><a href="#cb441-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div>
-<p>Furthermore, we can also specify the name of the snippet in the
-current namespace, which can be different from the name of the snippet
-in the <code>jdoe/lists</code> theme. For example, we can make the
-snippet <code>jdoe/lists/romanNumerals</code> available under the name
-<code>roman</code>.</p>
-<div class="sourceCode" id="cb442"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb442-1"><a href="#cb442-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb442-2"><a href="#cb442-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
-<span id="cb442-3"><a href="#cb442-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals as roman,</span>
-<span id="cb442-4"><a href="#cb442-4" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb442-5"><a href="#cb442-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb442-6"><a href="#cb442-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{snippet=roman}</span>
-<span id="cb442-7"><a href="#cb442-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb442-8"><a href="#cb442-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
-<span id="cb442-9"><a href="#cb442-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb442-10"><a href="#cb442-10" aria-hidden="true" tabindex="-1"></a>3. tres</span>
-<span id="cb442-11"><a href="#cb442-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
-<span id="cb442-12"><a href="#cb442-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb442-13"><a href="#cb442-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span></code></pre></div>
-<p>Several themes and/or snippets can be loaded at once using the
-extended variant of the <code>import</code> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> option:</p>
-<div class="sourceCode" id="cb443"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb443-1"><a href="#cb443-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb443-2"><a href="#cb443-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
-<span id="cb443-3"><a href="#cb443-3" aria-hidden="true" tabindex="-1"></a> jdoe/longpackagename/lists = {</span>
-<span id="cb443-4"><a href="#cb443-4" aria-hidden="true" tabindex="-1"></a> arabic as arabic1,</span>
-<span id="cb443-5"><a href="#cb443-5" aria-hidden="true" tabindex="-1"></a> roman,</span>
-<span id="cb443-6"><a href="#cb443-6" aria-hidden="true" tabindex="-1"></a> alphabetic,</span>
-<span id="cb443-7"><a href="#cb443-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb443-8"><a href="#cb443-8" aria-hidden="true" tabindex="-1"></a> jdoe/anotherlongpackagename/lists = {</span>
-<span id="cb443-9"><a href="#cb443-9" aria-hidden="true" tabindex="-1"></a> arabic as arabic2,</span>
-<span id="cb443-10"><a href="#cb443-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb443-11"><a href="#cb443-11" aria-hidden="true" tabindex="-1"></a> jdoe/yetanotherlongpackagename,</span>
-<span id="cb443-12"><a href="#cb443-12" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb443-13"><a href="#cb443-13" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<h2 data-number="2.3" id="markdown-tokens"><span
class="header-section-number">2.3</span> Markdown Tokens</h2>
<p>A key feature of the Markdown package is the support for manipulating
@@ -7536,67 +8414,74 @@ class="tex">T<sub>e</sub>X</span> macros, which render markdown tokens.
In this section, I will describe the individual token renderers.</p>
<h4 data-number="2.3.1.1" id="attribute-renderers"><span
class="header-section-number">2.3.1.1</span> Attribute Renderers</h4>
-<p>The following macros are only produced, when the
-<strong><code>headerAttributes</code></strong> option is enabled.</p>
+<p>The following macros are only produced, when at least one of the
+following options for markdown attributes on different elements is
+enabled:</p>
+<ul>
+<li><strong><code>autoIdentifiers</code></strong></li>
+<li><strong><code>fencedCodeAttributes</code></strong></li>
+<li><strong><code>gfmAutoIdentifiers</code></strong></li>
+<li><strong><code>headerAttributes</code></strong></li>
+<li><strong><code>inlineCodeAttributes</code></strong></li>
+<li><strong><code>linkAttributes</code></strong></li>
+</ul>
<p><code>\markdownRendererAttributeIdentifier</code> represents the
⟨<em>identifier</em>⟩ of a markdown element
(<code>id="</code>⟨<em>identifier</em>⟩<code>"</code> in HTML and
-<code>#</code>⟨<em>identifier</em>⟩ in Markdown’s
-<strong><code>headerAttributes</code></strong> syntax extension). The
-macro receives a single attribute that corresponds to the
+<code>#</code>⟨<em>identifier</em>⟩ in markdown attributes). The macro
+receives a single attribute that corresponds to the
⟨<em>identifier</em>⟩.</p>
<p><code>\markdownRendererAttributeClassName</code> represents the
⟨<em>class name</em>⟩ of a markdown element
(<code>class="</code>⟨<em>class name</em>⟩ …<code>"</code> in HTML and
-<code>.</code>⟨<em>class name</em>⟩ in Markdown’s
-<strong><code>headerAttributes</code></strong> syntax extension). The
-macro receives a single attribute that corresponds to the \meta{class
-name}.</p>
+<code>.</code>⟨<em>class name</em>⟩ in markdown attributes). The macro
+receives a single attribute that corresponds to the ⟨<em>class
+name</em>⟩.</p>
<p><code>\markdownRendererAttributeKeyValue</code> represents a HTML
attribute in the form ⟨<em>key</em>⟩<code>=</code>⟨<em>value</em>⟩ that
is neither an identifier nor a class name. The macro receives two
attributes that correspond to the ⟨<em>key</em>⟩ and the
⟨<em>value</em>⟩, respectively.</p>
-<h5 class="unnumbered" id="latex-example-54"><span
+<h5 class="unnumbered" id="latex-example-56"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb444"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb444-1"><a href="#cb444-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb444-2"><a href="#cb444-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, underscores=false]{<span class="ex">markdown</span>}</span>
-<span id="cb444-3"><a href="#cb444-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb444-4"><a href="#cb444-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb444-5"><a href="#cb444-5" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {<span class="co">%</span></span>
-<span id="cb444-6"><a href="#cb444-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb444-7"><a href="#cb444-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Identifier: #1)}</span>
-<span id="cb444-8"><a href="#cb444-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb444-9"><a href="#cb444-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb444-10"><a href="#cb444-10" aria-hidden="true" tabindex="-1"></a> attributeClassName = {<span class="co">%</span></span>
-<span id="cb444-11"><a href="#cb444-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb444-12"><a href="#cb444-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Class name: #1)}</span>
-<span id="cb444-13"><a href="#cb444-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb444-14"><a href="#cb444-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb444-15"><a href="#cb444-15" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
-<span id="cb444-16"><a href="#cb444-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb444-17"><a href="#cb444-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Key: #1, Value: #2)}</span>
-<span id="cb444-18"><a href="#cb444-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb444-19"><a href="#cb444-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb444-20"><a href="#cb444-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb444-21"><a href="#cb444-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb444-22"><a href="#cb444-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb444-23"><a href="#cb444-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb444-24"><a href="#cb444-24" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb444-25"><a href="#cb444-25" aria-hidden="true" tabindex="-1"></a># First top-level heading {jane=doe}</span>
-<span id="cb444-26"><a href="#cb444-26" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb444-27"><a href="#cb444-27" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span>
-<span id="cb444-28"><a href="#cb444-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb444-29"><a href="#cb444-29" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span>
-<span id="cb444-30"><a href="#cb444-30" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb444-31"><a href="#cb444-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb444-32"><a href="#cb444-32" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb483"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb483-1"><a href="#cb483-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb483-2"><a href="#cb483-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, underscores=false]{<span class="ex">markdown</span>}</span>
+<span id="cb483-3"><a href="#cb483-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb483-4"><a href="#cb483-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb483-5"><a href="#cb483-5" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {<span class="co">%</span></span>
+<span id="cb483-6"><a href="#cb483-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb483-7"><a href="#cb483-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Identifier: #1)}</span>
+<span id="cb483-8"><a href="#cb483-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb483-9"><a href="#cb483-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb483-10"><a href="#cb483-10" aria-hidden="true" tabindex="-1"></a> attributeClassName = {<span class="co">%</span></span>
+<span id="cb483-11"><a href="#cb483-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb483-12"><a href="#cb483-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Class name: #1)}</span>
+<span id="cb483-13"><a href="#cb483-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb483-14"><a href="#cb483-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb483-15"><a href="#cb483-15" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
+<span id="cb483-16"><a href="#cb483-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb483-17"><a href="#cb483-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Key: #1, Value: #2)}</span>
+<span id="cb483-18"><a href="#cb483-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb483-19"><a href="#cb483-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb483-20"><a href="#cb483-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb483-21"><a href="#cb483-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb483-22"><a href="#cb483-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb483-23"><a href="#cb483-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb483-24"><a href="#cb483-24" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb483-25"><a href="#cb483-25" aria-hidden="true" tabindex="-1"></a># First top-level heading {jane=doe}</span>
+<span id="cb483-26"><a href="#cb483-26" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb483-27"><a href="#cb483-27" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span>
+<span id="cb483-28"><a href="#cb483-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb483-29"><a href="#cb483-29" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span>
+<span id="cb483-30"><a href="#cb483-30" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb483-31"><a href="#cb483-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb483-32"><a href="#cb483-32" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb445"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb445-1"><a href="#cb445-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb484"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb484-1"><a href="#cb484-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7613,35 +8498,35 @@ class="header-section-number">2.3.1.2</span> Block Quote Renderers</h4>
the beginning of a block quote. The macro receives no arguments.</p>
<p>The <code>\markdownRendererBlockQuoteEnd</code> macro represents the
end of a block quote. The macro receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-22">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-25">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb446"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb446-1"><a href="#cb446-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb446-2"><a href="#cb446-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="co">%</span></span>
-<span id="cb446-3"><a href="#cb446-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb446-4"><a href="#cb446-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
-<span id="cb446-5"><a href="#cb446-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\leftskip</span>=2<span class="fu">\parindent</span></span>
-<span id="cb446-6"><a href="#cb446-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span>
-<span id="cb446-7"><a href="#cb446-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb446-8"><a href="#cb446-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="co">%</span></span>
-<span id="cb446-9"><a href="#cb446-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb446-10"><a href="#cb446-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
-<span id="cb446-11"><a href="#cb446-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb446-12"><a href="#cb446-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb446-13"><a href="#cb446-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb446-14"><a href="#cb446-14" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
-<span id="cb446-15"><a href="#cb446-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb446-16"><a href="#cb446-16" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
-<span id="cb446-17"><a href="#cb446-17" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
-<span id="cb446-18"><a href="#cb446-18" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
-<span id="cb446-19"><a href="#cb446-19" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
-<span id="cb446-20"><a href="#cb446-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb446-21"><a href="#cb446-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb485"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb485-1"><a href="#cb485-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb485-2"><a href="#cb485-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="co">%</span></span>
+<span id="cb485-3"><a href="#cb485-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb485-4"><a href="#cb485-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
+<span id="cb485-5"><a href="#cb485-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\leftskip</span>=2<span class="fu">\parindent</span></span>
+<span id="cb485-6"><a href="#cb485-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span>
+<span id="cb485-7"><a href="#cb485-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb485-8"><a href="#cb485-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="co">%</span></span>
+<span id="cb485-9"><a href="#cb485-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb485-10"><a href="#cb485-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
+<span id="cb485-11"><a href="#cb485-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb485-12"><a href="#cb485-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb485-13"><a href="#cb485-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb485-14"><a href="#cb485-14" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
+<span id="cb485-15"><a href="#cb485-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb485-16"><a href="#cb485-16" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
+<span id="cb485-17"><a href="#cb485-17" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
+<span id="cb485-18"><a href="#cb485-18" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
+<span id="cb485-19"><a href="#cb485-19" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
+<span id="cb485-20"><a href="#cb485-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb485-21"><a href="#cb485-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb447"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb447-1"><a href="#cb447-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb486"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb486-1"><a href="#cb486-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7652,32 +8537,32 @@ fortune—often the surfeit of our own behavior—we make guilty of our
disasters the sun, the moon, and the stars […]</p>
</blockquote>
</blockquote>
-<h5 class="unnumbered" id="latex-example-55"><span
+<h5 class="unnumbered" id="latex-example-57"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb448"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb448-1"><a href="#cb448-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb448-2"><a href="#cb448-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb448-3"><a href="#cb448-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb448-4"><a href="#cb448-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb448-5"><a href="#cb448-5" aria-hidden="true" tabindex="-1"></a> blockQuoteBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span>
-<span id="cb448-6"><a href="#cb448-6" aria-hidden="true" tabindex="-1"></a> blockQuoteEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</span>
-<span id="cb448-7"><a href="#cb448-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb448-8"><a href="#cb448-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb448-9"><a href="#cb448-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb448-10"><a href="#cb448-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb448-11"><a href="#cb448-11" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
-<span id="cb448-12"><a href="#cb448-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb448-13"><a href="#cb448-13" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
-<span id="cb448-14"><a href="#cb448-14" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
-<span id="cb448-15"><a href="#cb448-15" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
-<span id="cb448-16"><a href="#cb448-16" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
-<span id="cb448-17"><a href="#cb448-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb448-18"><a href="#cb448-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb487"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb487-1"><a href="#cb487-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb487-2"><a href="#cb487-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb487-3"><a href="#cb487-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb487-4"><a href="#cb487-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb487-5"><a href="#cb487-5" aria-hidden="true" tabindex="-1"></a> blockQuoteBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span>
+<span id="cb487-6"><a href="#cb487-6" aria-hidden="true" tabindex="-1"></a> blockQuoteEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</span>
+<span id="cb487-7"><a href="#cb487-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb487-8"><a href="#cb487-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb487-9"><a href="#cb487-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb487-10"><a href="#cb487-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb487-11"><a href="#cb487-11" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
+<span id="cb487-12"><a href="#cb487-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb487-13"><a href="#cb487-13" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
+<span id="cb487-14"><a href="#cb487-14" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
+<span id="cb487-15"><a href="#cb487-15" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
+<span id="cb487-16"><a href="#cb487-16" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
+<span id="cb487-17"><a href="#cb487-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb487-18"><a href="#cb487-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb449"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb449-1"><a href="#cb449-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb488"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb488-1"><a href="#cb488-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7688,27 +8573,27 @@ fortune—often the surfeit of our own behavior—we make guilty of our
disasters the sun, the moon, and the stars […]</p>
</blockquote>
</blockquote>
-<h5 class="unnumbered" id="context-example-36">Con<span
+<h5 class="unnumbered" id="context-example-38">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb450"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb450-1"><a href="#cb450-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb450-2"><a href="#cb450-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="fu">\startquotation</span>}</span>
-<span id="cb450-3"><a href="#cb450-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="fu">\stopquotation</span>}</span>
-<span id="cb450-4"><a href="#cb450-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb450-5"><a href="#cb450-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb450-6"><a href="#cb450-6" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
-<span id="cb450-7"><a href="#cb450-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb450-8"><a href="#cb450-8" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
-<span id="cb450-9"><a href="#cb450-9" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
-<span id="cb450-10"><a href="#cb450-10" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
-<span id="cb450-11"><a href="#cb450-11" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
-<span id="cb450-12"><a href="#cb450-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb450-13"><a href="#cb450-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb489"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb489-1"><a href="#cb489-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb489-2"><a href="#cb489-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="fu">\startquotation</span>}</span>
+<span id="cb489-3"><a href="#cb489-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="fu">\stopquotation</span>}</span>
+<span id="cb489-4"><a href="#cb489-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb489-5"><a href="#cb489-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb489-6"><a href="#cb489-6" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
+<span id="cb489-7"><a href="#cb489-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb489-8"><a href="#cb489-8" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
+<span id="cb489-9"><a href="#cb489-9" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
+<span id="cb489-10"><a href="#cb489-10" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
+<span id="cb489-11"><a href="#cb489-11" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
+<span id="cb489-12"><a href="#cb489-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb489-13"><a href="#cb489-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb451"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb451-1"><a href="#cb451-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb490"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb490-1"><a href="#cb490-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7727,32 +8612,32 @@ Context Renderers</h4>
<strong><code>bracketedSpans</code></strong> option is enabled.</p>
<p>The <code>\markdownRendererBracketedSpanAttributeContextBegin</code>
and <code>\markdownRendererBracketedSpanAttributeContextEnd</code>
-macros represent the beginning and the end of an inline bracketed span
-in which the attributes of the span apply. The macros receive no
+macros represent the beginning and the end of a context in which the
+attributes of an inline bracketed span apply. The macros receive no
arguments.</p>
-<h5 class="unnumbered" id="latex-example-56"><span
+<h5 class="unnumbered" id="latex-example-58"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb452"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb452-1"><a href="#cb452-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb452-2"><a href="#cb452-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span>
-<span id="cb452-3"><a href="#cb452-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb452-4"><a href="#cb452-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb452-5"><a href="#cb452-5" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {(},</span>
-<span id="cb452-6"><a href="#cb452-6" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {)},</span>
-<span id="cb452-7"><a href="#cb452-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb452-8"><a href="#cb452-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb452-9"><a href="#cb452-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb452-10"><a href="#cb452-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb452-11"><a href="#cb452-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb452-12"><a href="#cb452-12" aria-hidden="true" tabindex="-1"></a>[foo [bar]{#identifier}]{key=value} [baz]{.class_name}</span>
-<span id="cb452-13"><a href="#cb452-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb452-14"><a href="#cb452-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb452-15"><a href="#cb452-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb491"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb491-1"><a href="#cb491-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb491-2"><a href="#cb491-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span>
+<span id="cb491-3"><a href="#cb491-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb491-4"><a href="#cb491-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb491-5"><a href="#cb491-5" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {(},</span>
+<span id="cb491-6"><a href="#cb491-6" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {)},</span>
+<span id="cb491-7"><a href="#cb491-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb491-8"><a href="#cb491-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb491-9"><a href="#cb491-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb491-10"><a href="#cb491-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb491-11"><a href="#cb491-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb491-12"><a href="#cb491-12" aria-hidden="true" tabindex="-1"></a>[foo [bar]{#identifier}]{key=value} [baz]{.class_name}</span>
+<span id="cb491-13"><a href="#cb491-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb491-14"><a href="#cb491-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb491-15"><a href="#cb491-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb453"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb453-1"><a href="#cb453-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb492"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb492-1"><a href="#cb492-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7781,56 +8666,56 @@ of a bulleted list that contains no item with several paragraphs of text
(the list is tight). This macro will only be produced, when the
<strong><code>tightLists</code></strong> option is disabled. The macro
receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-23">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-26">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb454"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb454-1"><a href="#cb454-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb454-2"><a href="#cb454-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
-<span id="cb454-3"><a href="#cb454-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-4"><a href="#cb454-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb454-5"><a href="#cb454-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
-<span id="cb454-6"><a href="#cb454-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb454-7"><a href="#cb454-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb454-8"><a href="#cb454-8" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb454-9"><a href="#cb454-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
-<span id="cb454-10"><a href="#cb454-10" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb454-11"><a href="#cb454-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb454-12"><a href="#cb454-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
-<span id="cb454-13"><a href="#cb454-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
-<span id="cb454-14"><a href="#cb454-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-15"><a href="#cb454-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb454-16"><a href="#cb454-16" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb454-17"><a href="#cb454-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-18"><a href="#cb454-18" aria-hidden="true" tabindex="-1"></a>- the first item</span>
-<span id="cb454-19"><a href="#cb454-19" aria-hidden="true" tabindex="-1"></a>- the second item</span>
-<span id="cb454-20"><a href="#cb454-20" aria-hidden="true" tabindex="-1"></a>- the third item</span>
-<span id="cb454-21"><a href="#cb454-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb454-22"><a href="#cb454-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-23"><a href="#cb454-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb454-24"><a href="#cb454-24" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb454-25"><a href="#cb454-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb454-26"><a href="#cb454-26" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb454-27"><a href="#cb454-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{}</span>
-<span id="cb454-28"><a href="#cb454-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{--<span class="fu">\kern</span> 0.5em}</span>
-<span id="cb454-29"><a href="#cb454-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.<span class="fu">\par</span>}</span>
-<span id="cb454-30"><a href="#cb454-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{}</span>
-<span id="cb454-31"><a href="#cb454-31" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-32"><a href="#cb454-32" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb454-33"><a href="#cb454-33" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb454-34"><a href="#cb454-34" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-35"><a href="#cb454-35" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
-<span id="cb454-36"><a href="#cb454-36" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-37"><a href="#cb454-37" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
-<span id="cb454-38"><a href="#cb454-38" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-39"><a href="#cb454-39" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
-<span id="cb454-40"><a href="#cb454-40" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb454-41"><a href="#cb454-41" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-42"><a href="#cb454-42" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb493"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb493-1"><a href="#cb493-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb493-2"><a href="#cb493-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
+<span id="cb493-3"><a href="#cb493-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-4"><a href="#cb493-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb493-5"><a href="#cb493-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
+<span id="cb493-6"><a href="#cb493-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb493-7"><a href="#cb493-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb493-8"><a href="#cb493-8" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb493-9"><a href="#cb493-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
+<span id="cb493-10"><a href="#cb493-10" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb493-11"><a href="#cb493-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb493-12"><a href="#cb493-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
+<span id="cb493-13"><a href="#cb493-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
+<span id="cb493-14"><a href="#cb493-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-15"><a href="#cb493-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb493-16"><a href="#cb493-16" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb493-17"><a href="#cb493-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-18"><a href="#cb493-18" aria-hidden="true" tabindex="-1"></a>- the first item</span>
+<span id="cb493-19"><a href="#cb493-19" aria-hidden="true" tabindex="-1"></a>- the second item</span>
+<span id="cb493-20"><a href="#cb493-20" aria-hidden="true" tabindex="-1"></a>- the third item</span>
+<span id="cb493-21"><a href="#cb493-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb493-22"><a href="#cb493-22" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-23"><a href="#cb493-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb493-24"><a href="#cb493-24" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb493-25"><a href="#cb493-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb493-26"><a href="#cb493-26" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb493-27"><a href="#cb493-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{}</span>
+<span id="cb493-28"><a href="#cb493-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{--<span class="fu">\kern</span> 0.5em}</span>
+<span id="cb493-29"><a href="#cb493-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.<span class="fu">\par</span>}</span>
+<span id="cb493-30"><a href="#cb493-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{}</span>
+<span id="cb493-31"><a href="#cb493-31" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-32"><a href="#cb493-32" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb493-33"><a href="#cb493-33" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb493-34"><a href="#cb493-34" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-35"><a href="#cb493-35" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
+<span id="cb493-36"><a href="#cb493-36" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-37"><a href="#cb493-37" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
+<span id="cb493-38"><a href="#cb493-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-39"><a href="#cb493-39" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
+<span id="cb493-40"><a href="#cb493-40" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb493-41"><a href="#cb493-41" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-42"><a href="#cb493-42" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb455"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb455-1"><a href="#cb455-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb494"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb494-1"><a href="#cb494-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7843,61 +8728,61 @@ item).</p>
<li><p>This is the third item.</p></li>
</ul>
</blockquote>
-<h5 class="unnumbered" id="latex-example-57"><span
+<h5 class="unnumbered" id="latex-example-59"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb456"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb456-1"><a href="#cb456-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb456-2"><a href="#cb456-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists]{<span class="ex">markdown</span>}</span>
-<span id="cb456-3"><a href="#cb456-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb456-4"><a href="#cb456-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-5"><a href="#cb456-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span>
-<span id="cb456-6"><a href="#cb456-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb456-7"><a href="#cb456-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
-<span id="cb456-8"><a href="#cb456-8" aria-hidden="true" tabindex="-1"></a> ulBeginTight = { (},</span>
-<span id="cb456-9"><a href="#cb456-9" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="co">%</span></span>
-<span id="cb456-10"><a href="#cb456-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb456-11"><a href="#cb456-11" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb456-12"><a href="#cb456-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
-<span id="cb456-13"><a href="#cb456-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb456-14"><a href="#cb456-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb456-15"><a href="#cb456-15" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {},</span>
-<span id="cb456-16"><a href="#cb456-16" aria-hidden="true" tabindex="-1"></a> ulEndTight = {).},</span>
-<span id="cb456-17"><a href="#cb456-17" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb456-18"><a href="#cb456-18" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb456-19"><a href="#cb456-19" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb456-20"><a href="#cb456-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-21"><a href="#cb456-21" aria-hidden="true" tabindex="-1"></a>- the first item</span>
-<span id="cb456-22"><a href="#cb456-22" aria-hidden="true" tabindex="-1"></a>- the second item</span>
-<span id="cb456-23"><a href="#cb456-23" aria-hidden="true" tabindex="-1"></a>- the third item</span>
-<span id="cb456-24"><a href="#cb456-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb456-25"><a href="#cb456-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-26"><a href="#cb456-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span>
-<span id="cb456-27"><a href="#cb456-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb456-28"><a href="#cb456-28" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb456-29"><a href="#cb456-29" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb456-30"><a href="#cb456-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb456-31"><a href="#cb456-31" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb456-32"><a href="#cb456-32" aria-hidden="true" tabindex="-1"></a> ulBeginTight = {<span class="kw">\begin</span>{<span class="ex">itemize</span>}},</span>
-<span id="cb456-33"><a href="#cb456-33" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="fu">\item</span>},</span>
-<span id="cb456-34"><a href="#cb456-34" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {.},</span>
-<span id="cb456-35"><a href="#cb456-35" aria-hidden="true" tabindex="-1"></a> ulEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
-<span id="cb456-36"><a href="#cb456-36" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb456-37"><a href="#cb456-37" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb456-38"><a href="#cb456-38" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb456-39"><a href="#cb456-39" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-40"><a href="#cb456-40" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
-<span id="cb456-41"><a href="#cb456-41" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-42"><a href="#cb456-42" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
-<span id="cb456-43"><a href="#cb456-43" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-44"><a href="#cb456-44" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
-<span id="cb456-45"><a href="#cb456-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb456-46"><a href="#cb456-46" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-47"><a href="#cb456-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb495"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb495-1"><a href="#cb495-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb495-2"><a href="#cb495-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists]{<span class="ex">markdown</span>}</span>
+<span id="cb495-3"><a href="#cb495-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb495-4"><a href="#cb495-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-5"><a href="#cb495-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb495-6"><a href="#cb495-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb495-7"><a href="#cb495-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
+<span id="cb495-8"><a href="#cb495-8" aria-hidden="true" tabindex="-1"></a> ulBeginTight = { (},</span>
+<span id="cb495-9"><a href="#cb495-9" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="co">%</span></span>
+<span id="cb495-10"><a href="#cb495-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb495-11"><a href="#cb495-11" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb495-12"><a href="#cb495-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
+<span id="cb495-13"><a href="#cb495-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb495-14"><a href="#cb495-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb495-15"><a href="#cb495-15" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {},</span>
+<span id="cb495-16"><a href="#cb495-16" aria-hidden="true" tabindex="-1"></a> ulEndTight = {).},</span>
+<span id="cb495-17"><a href="#cb495-17" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb495-18"><a href="#cb495-18" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb495-19"><a href="#cb495-19" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb495-20"><a href="#cb495-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-21"><a href="#cb495-21" aria-hidden="true" tabindex="-1"></a>- the first item</span>
+<span id="cb495-22"><a href="#cb495-22" aria-hidden="true" tabindex="-1"></a>- the second item</span>
+<span id="cb495-23"><a href="#cb495-23" aria-hidden="true" tabindex="-1"></a>- the third item</span>
+<span id="cb495-24"><a href="#cb495-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb495-25"><a href="#cb495-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-26"><a href="#cb495-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb495-27"><a href="#cb495-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb495-28"><a href="#cb495-28" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb495-29"><a href="#cb495-29" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb495-30"><a href="#cb495-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb495-31"><a href="#cb495-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb495-32"><a href="#cb495-32" aria-hidden="true" tabindex="-1"></a> ulBeginTight = {<span class="kw">\begin</span>{<span class="ex">itemize</span>}},</span>
+<span id="cb495-33"><a href="#cb495-33" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="fu">\item</span>},</span>
+<span id="cb495-34"><a href="#cb495-34" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {.},</span>
+<span id="cb495-35"><a href="#cb495-35" aria-hidden="true" tabindex="-1"></a> ulEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
+<span id="cb495-36"><a href="#cb495-36" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb495-37"><a href="#cb495-37" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb495-38"><a href="#cb495-38" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb495-39"><a href="#cb495-39" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-40"><a href="#cb495-40" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
+<span id="cb495-41"><a href="#cb495-41" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-42"><a href="#cb495-42" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
+<span id="cb495-43"><a href="#cb495-43" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-44"><a href="#cb495-44" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
+<span id="cb495-45"><a href="#cb495-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb495-46"><a href="#cb495-46" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-47"><a href="#cb495-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb457"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb457-1"><a href="#cb457-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb496"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb496-1"><a href="#cb496-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7910,57 +8795,57 @@ item).</p>
<li><p>This is the third item.</p></li>
</ul>
</blockquote>
-<h5 class="unnumbered" id="context-example-37">Con<span
+<h5 class="unnumbered" id="context-example-39">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb458"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb458-1"><a href="#cb458-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb458-2"><a href="#cb458-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[tightLists = yes]</span>
-<span id="cb458-3"><a href="#cb458-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb458-4"><a href="#cb458-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-5"><a href="#cb458-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb458-6"><a href="#cb458-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
-<span id="cb458-7"><a href="#cb458-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb458-8"><a href="#cb458-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb458-9"><a href="#cb458-9" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb458-10"><a href="#cb458-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
-<span id="cb458-11"><a href="#cb458-11" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb458-12"><a href="#cb458-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb458-13"><a href="#cb458-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
-<span id="cb458-14"><a href="#cb458-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
-<span id="cb458-15"><a href="#cb458-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-16"><a href="#cb458-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb458-17"><a href="#cb458-17" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb458-18"><a href="#cb458-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-19"><a href="#cb458-19" aria-hidden="true" tabindex="-1"></a>- the first item</span>
-<span id="cb458-20"><a href="#cb458-20" aria-hidden="true" tabindex="-1"></a>- the second item</span>
-<span id="cb458-21"><a href="#cb458-21" aria-hidden="true" tabindex="-1"></a>- the third item</span>
-<span id="cb458-22"><a href="#cb458-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb458-23"><a href="#cb458-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-24"><a href="#cb458-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb458-25"><a href="#cb458-25" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb458-26"><a href="#cb458-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb458-27"><a href="#cb458-27" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb458-28"><a href="#cb458-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{<span class="fu">\startitemize</span>}</span>
-<span id="cb458-29"><a href="#cb458-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="fu">\item</span>}</span>
-<span id="cb458-30"><a href="#cb458-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.}</span>
-<span id="cb458-31"><a href="#cb458-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{<span class="fu">\stopitemize</span>}</span>
-<span id="cb458-32"><a href="#cb458-32" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-33"><a href="#cb458-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb458-34"><a href="#cb458-34" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb458-35"><a href="#cb458-35" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-36"><a href="#cb458-36" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
-<span id="cb458-37"><a href="#cb458-37" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-38"><a href="#cb458-38" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
-<span id="cb458-39"><a href="#cb458-39" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-40"><a href="#cb458-40" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
-<span id="cb458-41"><a href="#cb458-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb458-42"><a href="#cb458-42" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb458-43"><a href="#cb458-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb497"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb497-1"><a href="#cb497-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb497-2"><a href="#cb497-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[tightLists = yes]</span>
+<span id="cb497-3"><a href="#cb497-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb497-4"><a href="#cb497-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-5"><a href="#cb497-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb497-6"><a href="#cb497-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
+<span id="cb497-7"><a href="#cb497-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb497-8"><a href="#cb497-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb497-9"><a href="#cb497-9" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb497-10"><a href="#cb497-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
+<span id="cb497-11"><a href="#cb497-11" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb497-12"><a href="#cb497-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb497-13"><a href="#cb497-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
+<span id="cb497-14"><a href="#cb497-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
+<span id="cb497-15"><a href="#cb497-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-16"><a href="#cb497-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb497-17"><a href="#cb497-17" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb497-18"><a href="#cb497-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-19"><a href="#cb497-19" aria-hidden="true" tabindex="-1"></a>- the first item</span>
+<span id="cb497-20"><a href="#cb497-20" aria-hidden="true" tabindex="-1"></a>- the second item</span>
+<span id="cb497-21"><a href="#cb497-21" aria-hidden="true" tabindex="-1"></a>- the third item</span>
+<span id="cb497-22"><a href="#cb497-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb497-23"><a href="#cb497-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-24"><a href="#cb497-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb497-25"><a href="#cb497-25" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb497-26"><a href="#cb497-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb497-27"><a href="#cb497-27" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb497-28"><a href="#cb497-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{<span class="fu">\startitemize</span>}</span>
+<span id="cb497-29"><a href="#cb497-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="fu">\item</span>}</span>
+<span id="cb497-30"><a href="#cb497-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.}</span>
+<span id="cb497-31"><a href="#cb497-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{<span class="fu">\stopitemize</span>}</span>
+<span id="cb497-32"><a href="#cb497-32" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-33"><a href="#cb497-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb497-34"><a href="#cb497-34" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb497-35"><a href="#cb497-35" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-36"><a href="#cb497-36" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
+<span id="cb497-37"><a href="#cb497-37" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-38"><a href="#cb497-38" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
+<span id="cb497-39"><a href="#cb497-39" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-40"><a href="#cb497-40" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
+<span id="cb497-41"><a href="#cb497-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb497-42"><a href="#cb497-42" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-43"><a href="#cb497-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb459"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb459-1"><a href="#cb459-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb498"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb498-1"><a href="#cb498-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7973,124 +8858,252 @@ item).</p>
<li><p>This is the third item.</p></li>
</ul>
</blockquote>
-<h4 data-number="2.3.1.5" id="code-block-renderers"><span
-class="header-section-number">2.3.1.5</span> Code Block Renderers</h4>
+<h4 data-number="2.3.1.5" id="citation-renderers"><span
+class="header-section-number">2.3.1.5</span> Citation Renderers</h4>
+<p>The <code>\markdownRendererCite</code> macro represents a string of
+one or more parenthetical citations. This macro will only be produced,
+when the <strong><code>citations</code></strong> option is enabled. The
+macro receives the parameter <code>{</code>⟨<em>number of
+citations</em>⟩<code>}</code> followed by ⟨<em>suppress author</em>⟩
+<code>{</code>⟨<em>prenote</em>⟩<code>}{</code>⟨<em>postnote</em>⟩<code>}{</code>⟨<em>name</em>⟩<code>}</code>
+repeated ⟨<em>number of citations</em>⟩ times. The ⟨<em>suppress
+author</em>⟩ parameter is either the token <code>-</code>, when the
+author’s name is to be suppressed, or <code>+</code> otherwise.</p>
+<h5 class="unnumbered" id="latex-example-60"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb499"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb499-1"><a href="#cb499-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb499-2"><a href="#cb499-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
+<span id="cb499-3"><a href="#cb499-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
+<span id="cb499-4"><a href="#cb499-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
+<span id="cb499-5"><a href="#cb499-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
+<span id="cb499-6"><a href="#cb499-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb499-7"><a href="#cb499-7" aria-hidden="true" tabindex="-1"></a> a parenthesized citation <span class="fu">\emph</span>{#4}</span>
+<span id="cb499-8"><a href="#cb499-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb499-9"><a href="#cb499-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
+<span id="cb499-10"><a href="#cb499-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb499-11"><a href="#cb499-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
+<span id="cb499-12"><a href="#cb499-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb499-13"><a href="#cb499-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb499-14"><a href="#cb499-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
+<span id="cb499-15"><a href="#cb499-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb499-16"><a href="#cb499-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
+<span id="cb499-17"><a href="#cb499-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb499-18"><a href="#cb499-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb499-19"><a href="#cb499-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
+<span id="cb499-20"><a href="#cb499-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
+<span id="cb499-21"><a href="#cb499-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
+<span id="cb499-22"><a href="#cb499-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb499-23"><a href="#cb499-23" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb499-24"><a href="#cb499-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
+<span id="cb499-25"><a href="#cb499-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
+<span id="cb499-26"><a href="#cb499-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb499-27"><a href="#cb499-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb499-28"><a href="#cb499-28" aria-hidden="true" tabindex="-1"></a> cite = {<span class="co">%</span></span>
+<span id="cb499-29"><a href="#cb499-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
+<span id="cb499-30"><a href="#cb499-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
+<span id="cb499-31"><a href="#cb499-31" aria-hidden="true" tabindex="-1"></a> This is</span>
+<span id="cb499-32"><a href="#cb499-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span>
+<span id="cb499-33"><a href="#cb499-33" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb499-34"><a href="#cb499-34" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb499-35"><a href="#cb499-35" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb499-36"><a href="#cb499-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb499-37"><a href="#cb499-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb499-38"><a href="#cb499-38" aria-hidden="true" tabindex="-1"></a>[see @abrahams90, pp. 12; @eijkhout91, pp. 34]</span>
+<span id="cb499-39"><a href="#cb499-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb499-40"><a href="#cb499-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb500"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb500-1"><a href="#cb500-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>This is a parenthesized citation <em>abrahams90</em> with a prefix
+see and a postfix <em>pp. 12</em>, and a citation <em>eijkhout91</em>
+with a postfix <em>pp. 34</em>.</p>
+</blockquote>
+<p>The <code>\markdownRendererTextCite</code> macro represents a string
+of one or more text citations. This macro will only be produced, when
+the <strong><code>citations</code></strong> option is enabled. The macro
+receives parameters in the same format as the
+<code>\markdownRendererCite</code> macro.</p>
+<h5 class="unnumbered" id="latex-example-61"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb501"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb501-1"><a href="#cb501-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb501-2"><a href="#cb501-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
+<span id="cb501-3"><a href="#cb501-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
+<span id="cb501-4"><a href="#cb501-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
+<span id="cb501-5"><a href="#cb501-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
+<span id="cb501-6"><a href="#cb501-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb501-7"><a href="#cb501-7" aria-hidden="true" tabindex="-1"></a> a text citation <span class="fu">\emph</span>{#4}</span>
+<span id="cb501-8"><a href="#cb501-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb501-9"><a href="#cb501-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
+<span id="cb501-10"><a href="#cb501-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb501-11"><a href="#cb501-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
+<span id="cb501-12"><a href="#cb501-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb501-13"><a href="#cb501-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb501-14"><a href="#cb501-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
+<span id="cb501-15"><a href="#cb501-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb501-16"><a href="#cb501-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
+<span id="cb501-17"><a href="#cb501-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb501-18"><a href="#cb501-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb501-19"><a href="#cb501-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
+<span id="cb501-20"><a href="#cb501-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
+<span id="cb501-21"><a href="#cb501-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
+<span id="cb501-22"><a href="#cb501-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb501-23"><a href="#cb501-23" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb501-24"><a href="#cb501-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
+<span id="cb501-25"><a href="#cb501-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
+<span id="cb501-26"><a href="#cb501-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb501-27"><a href="#cb501-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb501-28"><a href="#cb501-28" aria-hidden="true" tabindex="-1"></a> textCite = {<span class="co">%</span></span>
+<span id="cb501-29"><a href="#cb501-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
+<span id="cb501-30"><a href="#cb501-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
+<span id="cb501-31"><a href="#cb501-31" aria-hidden="true" tabindex="-1"></a> This is</span>
+<span id="cb501-32"><a href="#cb501-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span>
+<span id="cb501-33"><a href="#cb501-33" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb501-34"><a href="#cb501-34" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb501-35"><a href="#cb501-35" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb501-36"><a href="#cb501-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb501-37"><a href="#cb501-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb501-38"><a href="#cb501-38" aria-hidden="true" tabindex="-1"></a>@abrahams90 [pp. 12; also @eijkhout91]</span>
+<span id="cb501-39"><a href="#cb501-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb501-40"><a href="#cb501-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb502"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb502-1"><a href="#cb502-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>This is a text citation <em>abrahams90</em> with a postfix
+<em>pp. 12</em>, and a citation <em>eijkhout91</em> with a prefix
+<em>also</em>.</p>
+</blockquote>
+<h4 data-number="2.3.1.6" id="code-block-renderers"><span
+class="header-section-number">2.3.1.6</span> Code Block Renderers</h4>
<p>The <code>\markdownRendererInputVerbatim</code> macro represents a
code block. The macro receives a single argument that corresponds to the
filename of a file contaning the code block contents.</p>
<p>The <code>\markdownRendererInputFencedCode</code> macro represents a
fenced code block. This macro will only be produced, when the
<strong><code>fencedCode</code></strong> option is enabled. The macro
-receives two arguments that correspond to the filename of a file
-contaning the code block contents and to the code fence infostring.</p>
-<h5 class="unnumbered" id="latex-example-58"><span
+receives three arguments that correspond to the filename of a file
+contaning the code block contents, the fully escaped code fence
+infostring that can be directly typeset, and the raw code fence
+infostring that can be used outside typesetting.</p>
+<h5 class="unnumbered" id="latex-example-62"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb460"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb460-1"><a href="#cb460-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb460-2"><a href="#cb460-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
-<span id="cb460-3"><a href="#cb460-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hyphens]{<span class="ex">url</span>}</span>
-<span id="cb460-4"><a href="#cb460-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb460-5"><a href="#cb460-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb460-6"><a href="#cb460-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb460-7"><a href="#cb460-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {</span>
-<span id="cb460-8"><a href="#cb460-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb460-9"><a href="#cb460-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb460-10"><a href="#cb460-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb460-11"><a href="#cb460-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb460-12"><a href="#cb460-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb460-13"><a href="#cb460-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb460-14"><a href="#cb460-14" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb460-15"><a href="#cb460-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb460-16"><a href="#cb460-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb460-17"><a href="#cb460-17" aria-hidden="true" tabindex="-1"></a> inputVerbatim = {</span>
-<span id="cb460-18"><a href="#cb460-18" aria-hidden="true" tabindex="-1"></a> is contained in file <span class="fu">\url</span>{#1}:<span class="co">%</span></span>
-<span id="cb460-19"><a href="#cb460-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\verbatiminput</span>{#1}<span class="co">%</span></span>
-<span id="cb460-20"><a href="#cb460-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb460-21"><a href="#cb460-21" aria-hidden="true" tabindex="-1"></a> inputFencedCode = {</span>
-<span id="cb460-22"><a href="#cb460-22" aria-hidden="true" tabindex="-1"></a> in #2 <span class="fu">\markdownRendererInputVerbatim</span>{#1}<span class="co">%</span></span>
-<span id="cb460-23"><a href="#cb460-23" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb460-24"><a href="#cb460-24" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb460-25"><a href="#cb460-25" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb460-26"><a href="#cb460-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb460-27"><a href="#cb460-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb460-28"><a href="#cb460-28" aria-hidden="true" tabindex="-1"></a>The following code</span>
-<span id="cb460-29"><a href="#cb460-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb460-30"><a href="#cb460-30" aria-hidden="true" tabindex="-1"></a> def foo(bar):</span>
-<span id="cb460-31"><a href="#cb460-31" aria-hidden="true" tabindex="-1"></a> if len(bar) &lt;= 1:</span>
-<span id="cb460-32"><a href="#cb460-32" aria-hidden="true" tabindex="-1"></a> return bar[0]</span>
-<span id="cb460-33"><a href="#cb460-33" aria-hidden="true" tabindex="-1"></a> elif len(bar) == 2:</span>
-<span id="cb460-34"><a href="#cb460-34" aria-hidden="true" tabindex="-1"></a> return sorted(bar)</span>
-<span id="cb460-35"><a href="#cb460-35" aria-hidden="true" tabindex="-1"></a> else:</span>
-<span id="cb460-36"><a href="#cb460-36" aria-hidden="true" tabindex="-1"></a> baz = len(bar) // 2</span>
-<span id="cb460-37"><a href="#cb460-37" aria-hidden="true" tabindex="-1"></a> return foo(bar[baz:], bar[:baz])</span>
-<span id="cb460-38"><a href="#cb460-38" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb460-39"><a href="#cb460-39" aria-hidden="true" tabindex="-1"></a>The following code</span>
-<span id="cb460-40"><a href="#cb460-40" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb460-41"><a href="#cb460-41" aria-hidden="true" tabindex="-1"></a>~~~ Python</span>
-<span id="cb460-42"><a href="#cb460-42" aria-hidden="true" tabindex="-1"></a>&gt;&gt;&gt; foo([4, 2, 1, 3])</span>
-<span id="cb460-43"><a href="#cb460-43" aria-hidden="true" tabindex="-1"></a>[1, 2, 3, 4]</span>
-<span id="cb460-44"><a href="#cb460-44" aria-hidden="true" tabindex="-1"></a>~~~~~~~~~~</span>
-<span id="cb460-45"><a href="#cb460-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb460-46"><a href="#cb460-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb503"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb503-1"><a href="#cb503-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb503-2"><a href="#cb503-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
+<span id="cb503-3"><a href="#cb503-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hyphens]{<span class="ex">url</span>}</span>
+<span id="cb503-4"><a href="#cb503-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span>
+<span id="cb503-5"><a href="#cb503-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb503-6"><a href="#cb503-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb503-7"><a href="#cb503-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {</span>
+<span id="cb503-8"><a href="#cb503-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb503-9"><a href="#cb503-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb503-10"><a href="#cb503-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb503-11"><a href="#cb503-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb503-12"><a href="#cb503-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb503-13"><a href="#cb503-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb503-14"><a href="#cb503-14" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb503-15"><a href="#cb503-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb503-16"><a href="#cb503-16" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb503-17"><a href="#cb503-17" aria-hidden="true" tabindex="-1"></a> inputVerbatim = {</span>
+<span id="cb503-18"><a href="#cb503-18" aria-hidden="true" tabindex="-1"></a> is contained in file <span class="fu">\url</span>{#1}:<span class="co">%</span></span>
+<span id="cb503-19"><a href="#cb503-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\verbatiminput</span>{#1}<span class="co">%</span></span>
+<span id="cb503-20"><a href="#cb503-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb503-21"><a href="#cb503-21" aria-hidden="true" tabindex="-1"></a> inputFencedCode = {</span>
+<span id="cb503-22"><a href="#cb503-22" aria-hidden="true" tabindex="-1"></a> in #2 <span class="fu">\markdownRendererInputVerbatim</span>{#1}<span class="co">%</span></span>
+<span id="cb503-23"><a href="#cb503-23" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb503-24"><a href="#cb503-24" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb503-25"><a href="#cb503-25" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb503-26"><a href="#cb503-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb503-27"><a href="#cb503-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb503-28"><a href="#cb503-28" aria-hidden="true" tabindex="-1"></a>The following code</span>
+<span id="cb503-29"><a href="#cb503-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb503-30"><a href="#cb503-30" aria-hidden="true" tabindex="-1"></a> def foo(bar):</span>
+<span id="cb503-31"><a href="#cb503-31" aria-hidden="true" tabindex="-1"></a> if len(bar) &lt;= 1:</span>
+<span id="cb503-32"><a href="#cb503-32" aria-hidden="true" tabindex="-1"></a> return bar[0]</span>
+<span id="cb503-33"><a href="#cb503-33" aria-hidden="true" tabindex="-1"></a> elif len(bar) == 2:</span>
+<span id="cb503-34"><a href="#cb503-34" aria-hidden="true" tabindex="-1"></a> return sorted(bar)</span>
+<span id="cb503-35"><a href="#cb503-35" aria-hidden="true" tabindex="-1"></a> else:</span>
+<span id="cb503-36"><a href="#cb503-36" aria-hidden="true" tabindex="-1"></a> baz = len(bar) // 2</span>
+<span id="cb503-37"><a href="#cb503-37" aria-hidden="true" tabindex="-1"></a> return foo(bar[baz:], bar[:baz])</span>
+<span id="cb503-38"><a href="#cb503-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb503-39"><a href="#cb503-39" aria-hidden="true" tabindex="-1"></a>The following code</span>
+<span id="cb503-40"><a href="#cb503-40" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb503-41"><a href="#cb503-41" aria-hidden="true" tabindex="-1"></a>~~~ Python</span>
+<span id="cb503-42"><a href="#cb503-42" aria-hidden="true" tabindex="-1"></a>&gt;&gt;&gt; foo([4, 2, 1, 3])</span>
+<span id="cb503-43"><a href="#cb503-43" aria-hidden="true" tabindex="-1"></a>[1, 2, 3, 4]</span>
+<span id="cb503-44"><a href="#cb503-44" aria-hidden="true" tabindex="-1"></a>~~~~~~~~~~</span>
+<span id="cb503-45"><a href="#cb503-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb503-46"><a href="#cb503-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb461"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb461-1"><a href="#cb461-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb504"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb504-1"><a href="#cb504-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text except for the filename, which may
differ:</p>
<blockquote>
<p>The following code is contained in file
<code>./_markdown_document/882453149edcf288976647f6fe147ada.verbatim</code>:</p>
-<div class="sourceCode" id="cb462"><pre
-class="sourceCode py"><code class="sourceCode python"><span id="cb462-1"><a href="#cb462-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> foo(bar):</span>
-<span id="cb462-2"><a href="#cb462-2" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">len</span>(bar) <span class="op">&lt;=</span> <span class="dv">1</span>:</span>
-<span id="cb462-3"><a href="#cb462-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> bar[:<span class="dv">1</span>]</span>
-<span id="cb462-4"><a href="#cb462-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> <span class="bu">len</span>(bar) <span class="op">==</span> <span class="dv">2</span>:</span>
-<span id="cb462-5"><a href="#cb462-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="bu">sorted</span>(bar)</span>
-<span id="cb462-6"><a href="#cb462-6" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
-<span id="cb462-7"><a href="#cb462-7" aria-hidden="true" tabindex="-1"></a> baz <span class="op">=</span> bar[<span class="bu">len</span>(bar) <span class="op">//</span> <span class="dv">2</span>]</span>
-<span id="cb462-8"><a href="#cb462-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> (</span>
-<span id="cb462-9"><a href="#cb462-9" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op">&lt;</span> baz]) <span class="op">+</span> [baz] <span class="op">+</span></span>
-<span id="cb462-10"><a href="#cb462-10" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op">&gt;</span> baz])</span>
-<span id="cb462-11"><a href="#cb462-11" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div>
+<div class="sourceCode" id="cb505"><pre
+class="sourceCode py"><code class="sourceCode python"><span id="cb505-1"><a href="#cb505-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> foo(bar):</span>
+<span id="cb505-2"><a href="#cb505-2" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">len</span>(bar) <span class="op">&lt;=</span> <span class="dv">1</span>:</span>
+<span id="cb505-3"><a href="#cb505-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> bar[:<span class="dv">1</span>]</span>
+<span id="cb505-4"><a href="#cb505-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> <span class="bu">len</span>(bar) <span class="op">==</span> <span class="dv">2</span>:</span>
+<span id="cb505-5"><a href="#cb505-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="bu">sorted</span>(bar)</span>
+<span id="cb505-6"><a href="#cb505-6" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
+<span id="cb505-7"><a href="#cb505-7" aria-hidden="true" tabindex="-1"></a> baz <span class="op">=</span> bar[<span class="bu">len</span>(bar) <span class="op">//</span> <span class="dv">2</span>]</span>
+<span id="cb505-8"><a href="#cb505-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> (</span>
+<span id="cb505-9"><a href="#cb505-9" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op">&lt;</span> baz]) <span class="op">+</span> [baz] <span class="op">+</span></span>
+<span id="cb505-10"><a href="#cb505-10" aria-hidden="true" tabindex="-1"></a> foo([qux <span class="cf">for</span> qux <span class="kw">in</span> bar <span class="cf">if</span> qux <span class="op">&gt;</span> baz])</span>
+<span id="cb505-11"><a href="#cb505-11" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div>
<p>The following code in Python contained in file
<code>./_markdown_document/cf2a96e2120cef5b1fae5fea36fcc27b.verbatim</code>:</p>
-<div class="sourceCode" id="cb463"><pre
-class="sourceCode py"><code class="sourceCode python"><span id="cb463-1"><a href="#cb463-1" aria-hidden="true" tabindex="-1"></a><span class="op">&gt;&gt;&gt;</span> foo([<span class="dv">4</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="dv">3</span>])</span>
-<span id="cb463-2"><a href="#cb463-2" aria-hidden="true" tabindex="-1"></a>[<span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">3</span>, <span class="dv">4</span>]</span></code></pre></div>
+<div class="sourceCode" id="cb506"><pre
+class="sourceCode py"><code class="sourceCode python"><span id="cb506-1"><a href="#cb506-1" aria-hidden="true" tabindex="-1"></a><span class="op">&gt;&gt;&gt;</span> foo([<span class="dv">4</span>, <span class="dv">2</span>, <span class="dv">1</span>, <span class="dv">3</span>])</span>
+<span id="cb506-2"><a href="#cb506-2" aria-hidden="true" tabindex="-1"></a>[<span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">3</span>, <span class="dv">4</span>]</span></code></pre></div>
</blockquote>
-<h4 data-number="2.3.1.6" id="code-span-renderer"><span
-class="header-section-number">2.3.1.6</span> Code Span Renderer</h4>
+<h4 data-number="2.3.1.7" id="code-span-renderer"><span
+class="header-section-number">2.3.1.7</span> Code Span Renderer</h4>
<p>The <code>\markdownRendererCodeSpan</code> macro represents inline
code span in the input text. It receives a single argument that
corresponds to the inline code span.</p>
-<h5 class="unnumbered" id="plain-tex-example-24">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-27">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb464"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb464-1"><a href="#cb464-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb464-2"><a href="#cb464-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb464-3"><a href="#cb464-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb464-4"><a href="#cb464-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
-<span id="cb464-5"><a href="#cb464-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb464-6"><a href="#cb464-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb464-7"><a href="#cb464-7" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span>
-<span id="cb464-8"><a href="#cb464-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb464-9"><a href="#cb464-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb464-10"><a href="#cb464-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb464-11"><a href="#cb464-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb464-12"><a href="#cb464-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
-<span id="cb464-13"><a href="#cb464-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb464-14"><a href="#cb464-14" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb464-15"><a href="#cb464-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb464-16"><a href="#cb464-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb464-17"><a href="#cb464-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb507"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb507-1"><a href="#cb507-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb507-2"><a href="#cb507-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb507-3"><a href="#cb507-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-4"><a href="#cb507-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
+<span id="cb507-5"><a href="#cb507-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-6"><a href="#cb507-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb507-7"><a href="#cb507-7" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span>
+<span id="cb507-8"><a href="#cb507-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-9"><a href="#cb507-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb507-10"><a href="#cb507-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb507-11"><a href="#cb507-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-12"><a href="#cb507-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
+<span id="cb507-13"><a href="#cb507-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb507-14"><a href="#cb507-14" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb507-15"><a href="#cb507-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb507-16"><a href="#cb507-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-17"><a href="#cb507-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb465"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb465-1"><a href="#cb465-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb508"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb508-1"><a href="#cb508-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8099,34 +9112,34 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-59"><span
+<h5 class="unnumbered" id="latex-example-63"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb466"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb466-1"><a href="#cb466-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb466-2"><a href="#cb466-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span>
-<span id="cb466-3"><a href="#cb466-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb466-4"><a href="#cb466-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb466-5"><a href="#cb466-5" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span>
-<span id="cb466-6"><a href="#cb466-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb466-7"><a href="#cb466-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb466-8"><a href="#cb466-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb466-9"><a href="#cb466-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb466-10"><a href="#cb466-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb466-11"><a href="#cb466-11" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span>
-<span id="cb466-12"><a href="#cb466-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb466-13"><a href="#cb466-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb466-14"><a href="#cb466-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb466-15"><a href="#cb466-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb466-16"><a href="#cb466-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{hybrid}</span>
-<span id="cb466-17"><a href="#cb466-17" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb466-18"><a href="#cb466-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb466-19"><a href="#cb466-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb466-20"><a href="#cb466-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb509"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb509-1"><a href="#cb509-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb509-2"><a href="#cb509-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span>
+<span id="cb509-3"><a href="#cb509-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb509-4"><a href="#cb509-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb509-5"><a href="#cb509-5" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span>
+<span id="cb509-6"><a href="#cb509-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb509-7"><a href="#cb509-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb509-8"><a href="#cb509-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb509-9"><a href="#cb509-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb509-10"><a href="#cb509-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb509-11"><a href="#cb509-11" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span>
+<span id="cb509-12"><a href="#cb509-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb509-13"><a href="#cb509-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb509-14"><a href="#cb509-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb509-15"><a href="#cb509-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb509-16"><a href="#cb509-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</span>
+<span id="cb509-17"><a href="#cb509-17" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb509-18"><a href="#cb509-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb509-19"><a href="#cb509-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb509-20"><a href="#cb509-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb467"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb467-1"><a href="#cb467-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb510"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb510-1"><a href="#cb510-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8135,30 +9148,30 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-38">Con<span
+<h5 class="unnumbered" id="context-example-40">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb468"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb468-1"><a href="#cb468-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb468-2"><a href="#cb468-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
-<span id="cb468-3"><a href="#cb468-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb468-4"><a href="#cb468-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb468-5"><a href="#cb468-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb468-6"><a href="#cb468-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span>
-<span id="cb468-7"><a href="#cb468-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb468-8"><a href="#cb468-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb468-9"><a href="#cb468-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb468-10"><a href="#cb468-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb468-11"><a href="#cb468-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
-<span id="cb468-12"><a href="#cb468-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb468-13"><a href="#cb468-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
-<span id="cb468-14"><a href="#cb468-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb468-15"><a href="#cb468-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb468-16"><a href="#cb468-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb469"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb469-1"><a href="#cb469-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb511"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb511-1"><a href="#cb511-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb511-2"><a href="#cb511-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
+<span id="cb511-3"><a href="#cb511-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb511-4"><a href="#cb511-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-5"><a href="#cb511-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb511-6"><a href="#cb511-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span>`</span>
+<span id="cb511-7"><a href="#cb511-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-8"><a href="#cb511-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb511-9"><a href="#cb511-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb511-10"><a href="#cb511-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-11"><a href="#cb511-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
+<span id="cb511-12"><a href="#cb511-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb511-13"><a href="#cb511-13" aria-hidden="true" tabindex="-1"></a><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb511-14"><a href="#cb511-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb511-15"><a href="#cb511-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-16"><a href="#cb511-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb512"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb512-1"><a href="#cb512-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8167,61 +9180,60 @@ contain the following text:</p>
<p><math><mroot><msqrt><mo>−</mo><mn>1</mn></msqrt></mroot></math>
<em>equals</em> <math><mi>i</mi></math>.</p>
</blockquote>
-<h4 data-number="2.3.1.7"
+<h4 data-number="2.3.1.8"
id="code-span-attribute-context-renderers"><span
-class="header-section-number">2.3.1.7</span> Code Span Attribute Context
+class="header-section-number">2.3.1.8</span> Code Span Attribute Context
Renderers</h4>
<p>The following macros are only produced, when the
<strong><code>inlineCodeAttributes</code></strong> option is
enabled.</p>
<p>The <code>\markdownRendererCodeSpanAttributeContextBegin</code> and
<code>\markdownRendererCodeSpanAttributeContextEnd</code> macros
-represent the beginning and the end of an inline code span in which the
-attributes of the inline code span apply. The macros receive no
-arguments.</p>
-<h5 class="unnumbered" id="latex-example-60"><span
+represent the beginning and the end of a context in which the attributes
+of an inline code span apply. The macros receive no arguments.</p>
+<h5 class="unnumbered" id="latex-example-64"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb470"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb470-1"><a href="#cb470-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb470-2"><a href="#cb470-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb470-3"><a href="#cb470-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb470-4"><a href="#cb470-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb470-5"><a href="#cb470-5" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {(},</span>
-<span id="cb470-6"><a href="#cb470-6" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span>
-<span id="cb470-7"><a href="#cb470-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {)},</span>
-<span id="cb470-8"><a href="#cb470-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb470-9"><a href="#cb470-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb470-10"><a href="#cb470-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb470-11"><a href="#cb470-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb470-12"><a href="#cb470-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb470-13"><a href="#cb470-13" aria-hidden="true" tabindex="-1"></a>foo `bar`{key=value} baz</span>
-<span id="cb470-14"><a href="#cb470-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb470-15"><a href="#cb470-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb470-16"><a href="#cb470-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb513"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb513-1"><a href="#cb513-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb513-2"><a href="#cb513-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb513-3"><a href="#cb513-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb513-4"><a href="#cb513-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb513-5"><a href="#cb513-5" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {(},</span>
+<span id="cb513-6"><a href="#cb513-6" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span>
+<span id="cb513-7"><a href="#cb513-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {)},</span>
+<span id="cb513-8"><a href="#cb513-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb513-9"><a href="#cb513-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb513-10"><a href="#cb513-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb513-11"><a href="#cb513-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb513-12"><a href="#cb513-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb513-13"><a href="#cb513-13" aria-hidden="true" tabindex="-1"></a>foo `bar`{key=value} baz</span>
+<span id="cb513-14"><a href="#cb513-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb513-15"><a href="#cb513-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb513-16"><a href="#cb513-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb471"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb471-1"><a href="#cb471-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb514"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb514-1"><a href="#cb514-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>foo (bar) baz</p>
</blockquote>
-<h4 data-number="2.3.1.8" id="texcontentblockrenderers"><span
-class="header-section-number">2.3.1.8</span> Content Block
+<h4 data-number="2.3.1.9" id="texcontentblockrenderers"><span
+class="header-section-number">2.3.1.9</span> Content Block
Renderers</h4>
-<p>The <code>\markdownRendererContentBlock</code> macro represents an iA
-Writer content block. It receives four arguments: the local file or
+<p>The <code>\markdownRendererContentBlock</code> macro represents an
+iA Writer content block. It receives four arguments: the local file or
online image filename extension cast to the lower case, the fully
escaped <abbr>uri</abbr> that can be directly typeset, the raw
<abbr>uri</abbr> that can be used outside typesetting, and the title of
the content block.</p>
<p>The <code>\markdownRendererContentBlockOnlineImage</code> macro
-represents an iA Writer online image content block. The macro receives
+represents an iA Writer online image content block. The macro receives
the same arguments as <code>\markdownRendererContentBlock</code>.</p>
<p>The <code>\markdownRendererContentBlockCode</code> macro represents
-an iA Writer content block that was recognized as a file in a known
+an iA Writer content block that was recognized as a file in a known
programming language by its filename extension <span
class="math inline"><em>s</em></span>. If any
<code>markdown-languages.json</code> file found by
@@ -8249,38 +9261,38 @@ highlighting. <a href="https://github.com/iainc/Markdown-Content-Blocks"
title="File transclusion syntax for Markdown">The
<code>Languages.json</code> file provided by Anton Sotkov</a> is a good
starting point.</p>
-<h5 class="unnumbered" id="plain-tex-example-25">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-28">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb472"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb472-1"><a href="#cb472-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb472-2"><a href="#cb472-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentBlocks</span>{true}</span>
-<span id="cb472-3"><a href="#cb472-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb472-4"><a href="#cb472-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb472-5"><a href="#cb472-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb472-6"><a href="#cb472-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb472-7"><a href="#cb472-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb472-8"><a href="#cb472-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb472-9"><a href="#cb472-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span>
-<span id="cb472-10"><a href="#cb472-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span>
-<span id="cb472-11"><a href="#cb472-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb472-12"><a href="#cb472-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb472-13"><a href="#cb472-13" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
-<span id="cb472-14"><a href="#cb472-14" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
-<span id="cb472-15"><a href="#cb472-15" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
-<span id="cb472-16"><a href="#cb472-16" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
-<span id="cb472-17"><a href="#cb472-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb472-18"><a href="#cb472-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb515"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb515-1"><a href="#cb515-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb515-2"><a href="#cb515-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentBlocks</span>{true}</span>
+<span id="cb515-3"><a href="#cb515-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb515-4"><a href="#cb515-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb515-5"><a href="#cb515-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb515-6"><a href="#cb515-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb515-7"><a href="#cb515-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb515-8"><a href="#cb515-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb515-9"><a href="#cb515-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span>
+<span id="cb515-10"><a href="#cb515-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span>
+<span id="cb515-11"><a href="#cb515-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb515-12"><a href="#cb515-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb515-13"><a href="#cb515-13" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
+<span id="cb515-14"><a href="#cb515-14" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
+<span id="cb515-15"><a href="#cb515-15" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
+<span id="cb515-16"><a href="#cb515-16" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
+<span id="cb515-17"><a href="#cb515-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb515-18"><a href="#cb515-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Create also a text document named
<code>markdown-languages.json</code> with the following content:</p>
-<div class="sourceCode" id="cb473"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb473-1"><a href="#cb473-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb473-2"><a href="#cb473-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;json&quot;</span><span class="op">:</span> <span class="st">&quot;JavaScript Object Notation&quot;</span><span class="op">,</span></span>
-<span id="cb473-3"><a href="#cb473-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb516"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb516-1"><a href="#cb516-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb516-2"><a href="#cb516-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;json&quot;</span><span class="op">:</span> <span class="st">&quot;JavaScript Object Notation&quot;</span><span class="op">,</span></span>
+<span id="cb516-3"><a href="#cb516-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb474"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb474-1"><a href="#cb474-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb517"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb517-1"><a href="#cb517-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8292,38 +9304,38 @@ extensions and programming language names.</p>
<p>This is the image <code>https://tug.org/tugboat/noword.jpg</code>,
the logotype of TUGboat.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-61"><span
+<h5 class="unnumbered" id="latex-example-65"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb475"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb475-1"><a href="#cb475-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb475-2"><a href="#cb475-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{markdown-languages.json}</span>
-<span id="cb475-3"><a href="#cb475-3" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb475-4"><a href="#cb475-4" aria-hidden="true" tabindex="-1"></a> &quot;json&quot;: &quot;JavaScript Object Notation&quot;,</span>
-<span id="cb475-5"><a href="#cb475-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb475-6"><a href="#cb475-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
-<span id="cb475-7"><a href="#cb475-7" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb475-8"><a href="#cb475-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb475-9"><a href="#cb475-9" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb475-10"><a href="#cb475-10" aria-hidden="true" tabindex="-1"></a> contentBlock = {This is <span class="fu">\texttt</span>{#2}, #4.},</span>
-<span id="cb475-11"><a href="#cb475-11" aria-hidden="true" tabindex="-1"></a> contentBlockOnlineImage = {This is the image <span class="fu">\texttt</span>{#2}, #4.},</span>
-<span id="cb475-12"><a href="#cb475-12" aria-hidden="true" tabindex="-1"></a> contentBlockCode = {<span class="co">%</span></span>
-<span id="cb475-13"><a href="#cb475-13" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\MakeUppercase</span>{#1}) document <span class="fu">\texttt</span>{#3}, #5.</span>
-<span id="cb475-14"><a href="#cb475-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb475-15"><a href="#cb475-15" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb475-16"><a href="#cb475-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb475-17"><a href="#cb475-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb475-18"><a href="#cb475-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb475-19"><a href="#cb475-19" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
-<span id="cb475-20"><a href="#cb475-20" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
-<span id="cb475-21"><a href="#cb475-21" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
-<span id="cb475-22"><a href="#cb475-22" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
-<span id="cb475-23"><a href="#cb475-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb475-24"><a href="#cb475-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb518"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb518-1"><a href="#cb518-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb518-2"><a href="#cb518-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">filecontents</span>}[overwrite,nosearch,noheader]{markdown-languages.json}</span>
+<span id="cb518-3"><a href="#cb518-3" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb518-4"><a href="#cb518-4" aria-hidden="true" tabindex="-1"></a> &quot;json&quot;: &quot;JavaScript Object Notation&quot;,</span>
+<span id="cb518-5"><a href="#cb518-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb518-6"><a href="#cb518-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
+<span id="cb518-7"><a href="#cb518-7" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb518-8"><a href="#cb518-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb518-9"><a href="#cb518-9" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb518-10"><a href="#cb518-10" aria-hidden="true" tabindex="-1"></a> contentBlock = {This is <span class="fu">\texttt</span>{#2}, #4.},</span>
+<span id="cb518-11"><a href="#cb518-11" aria-hidden="true" tabindex="-1"></a> contentBlockOnlineImage = {This is the image <span class="fu">\texttt</span>{#2}, #4.},</span>
+<span id="cb518-12"><a href="#cb518-12" aria-hidden="true" tabindex="-1"></a> contentBlockCode = {<span class="co">%</span></span>
+<span id="cb518-13"><a href="#cb518-13" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\MakeUppercase</span>{#1}) document <span class="fu">\texttt</span>{#3}, #5.</span>
+<span id="cb518-14"><a href="#cb518-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb518-15"><a href="#cb518-15" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb518-16"><a href="#cb518-16" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb518-17"><a href="#cb518-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb518-18"><a href="#cb518-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb518-19"><a href="#cb518-19" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
+<span id="cb518-20"><a href="#cb518-20" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
+<span id="cb518-21"><a href="#cb518-21" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
+<span id="cb518-22"><a href="#cb518-22" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
+<span id="cb518-23"><a href="#cb518-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb518-24"><a href="#cb518-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb476"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb476-1"><a href="#cb476-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb519"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb519-1"><a href="#cb519-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8335,39 +9347,39 @@ extensions and programming language names.</p>
<p>This is the image <code>https://tug.org/tugboat/noword.jpg</code>,
the logotype of TUGboat.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-39">Con<span
+<h5 class="unnumbered" id="context-example-41">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb477"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb477-1"><a href="#cb477-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb477-2"><a href="#cb477-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span>
-<span id="cb477-3"><a href="#cb477-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb477-4"><a href="#cb477-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb477-5"><a href="#cb477-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb477-6"><a href="#cb477-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb477-7"><a href="#cb477-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb477-8"><a href="#cb477-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb477-9"><a href="#cb477-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span>
-<span id="cb477-10"><a href="#cb477-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span>
-<span id="cb477-11"><a href="#cb477-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb477-12"><a href="#cb477-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb477-13"><a href="#cb477-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb477-14"><a href="#cb477-14" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
-<span id="cb477-15"><a href="#cb477-15" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
-<span id="cb477-16"><a href="#cb477-16" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
-<span id="cb477-17"><a href="#cb477-17" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
-<span id="cb477-18"><a href="#cb477-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb477-19"><a href="#cb477-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb520"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb520-1"><a href="#cb520-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb520-2"><a href="#cb520-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span>
+<span id="cb520-3"><a href="#cb520-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb520-4"><a href="#cb520-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb520-5"><a href="#cb520-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb520-6"><a href="#cb520-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb520-7"><a href="#cb520-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb520-8"><a href="#cb520-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb520-9"><a href="#cb520-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockCode</span>#1#2#3#4#5{<span class="co">%</span></span>
+<span id="cb520-10"><a href="#cb520-10" aria-hidden="true" tabindex="-1"></a> This is the #2 (<span class="fu">\uppercase</span>{#1}) document {<span class="fu">\tt</span> #3}, #5.</span>
+<span id="cb520-11"><a href="#cb520-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb520-12"><a href="#cb520-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb520-13"><a href="#cb520-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb520-14"><a href="#cb520-14" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
+<span id="cb520-15"><a href="#cb520-15" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
+<span id="cb520-16"><a href="#cb520-16" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
+<span id="cb520-17"><a href="#cb520-17" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
+<span id="cb520-18"><a href="#cb520-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb520-19"><a href="#cb520-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Create also a text document named
<code>markdown-languages.json</code> with the following content:</p>
-<div class="sourceCode" id="cb478"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb478-1"><a href="#cb478-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb478-2"><a href="#cb478-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;json&quot;</span><span class="op">:</span> <span class="st">&quot;JavaScript Object Notation&quot;</span><span class="op">,</span></span>
-<span id="cb478-3"><a href="#cb478-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb521"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb521-1"><a href="#cb521-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb521-2"><a href="#cb521-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;json&quot;</span><span class="op">:</span> <span class="st">&quot;JavaScript Object Notation&quot;</span><span class="op">,</span></span>
+<span id="cb521-3"><a href="#cb521-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb479"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb479-1"><a href="#cb479-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb522"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb522-1"><a href="#cb522-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8379,8 +9391,8 @@ extensions and programming language names.</p>
<p>This is the image <code>https://tug.org/tugboat/noword.jpg</code>,
the logotype of TUGboat.</p>
</blockquote>
-<h4 data-number="2.3.1.9" id="definition-list-renderers"><span
-class="header-section-number">2.3.1.9</span> Definition List
+<h4 data-number="2.3.1.10" id="definition-list-renderers"><span
+class="header-section-number">2.3.1.10</span> Definition List
Renderers</h4>
<p>The following macros are only produced, when the
<strong><code>definitionLists</code></strong> option is enabled.</p>
@@ -8412,92 +9424,92 @@ of a definition list that contains no item with several paragraphs of
text (the list is tight). This macro will only be produced, when the
<strong><code>tightLists</code></strong> option is disabled. The macro
receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-26">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-29">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb480"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb480-1"><a href="#cb480-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb480-2"><a href="#cb480-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionDefinitionLists</span>{true}</span>
-<span id="cb480-3"><a href="#cb480-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
-<span id="cb480-4"><a href="#cb480-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-5"><a href="#cb480-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb480-6"><a href="#cb480-6" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
-<span id="cb480-7"><a href="#cb480-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb480-8"><a href="#cb480-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb480-9"><a href="#cb480-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{<span class="co">%</span></span>
-<span id="cb480-10"><a href="#cb480-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb480-11"><a href="#cb480-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span>
-<span id="cb480-12"><a href="#cb480-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb480-13"><a href="#cb480-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb480-14"><a href="#cb480-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span>
-<span id="cb480-15"><a href="#cb480-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb480-16"><a href="#cb480-16" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb480-17"><a href="#cb480-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb480-18"><a href="#cb480-18" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb480-19"><a href="#cb480-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
-<span id="cb480-20"><a href="#cb480-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb480-21"><a href="#cb480-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb480-22"><a href="#cb480-22" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb480-23"><a href="#cb480-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
-<span id="cb480-24"><a href="#cb480-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\par</span>--<span class="fu">\kern</span> 0.5em}</span>
-<span id="cb480-25"><a href="#cb480-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{<span class="fu">\endgroup</span>}</span>
-<span id="cb480-26"><a href="#cb480-26" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-27"><a href="#cb480-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb480-28"><a href="#cb480-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
-<span id="cb480-29"><a href="#cb480-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-30"><a href="#cb480-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb480-31"><a href="#cb480-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb480-32"><a href="#cb480-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb480-33"><a href="#cb480-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb480-34"><a href="#cb480-34" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-35"><a href="#cb480-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb480-36"><a href="#cb480-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb480-37"><a href="#cb480-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb480-38"><a href="#cb480-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb480-39"><a href="#cb480-39" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb480-40"><a href="#cb480-40" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-41"><a href="#cb480-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb480-42"><a href="#cb480-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb480-43"><a href="#cb480-43" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb480-44"><a href="#cb480-44" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
-<span id="cb480-45"><a href="#cb480-45" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb480-46"><a href="#cb480-46" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
-<span id="cb480-47"><a href="#cb480-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb480-48"><a href="#cb480-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb480-49"><a href="#cb480-49" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb480-50"><a href="#cb480-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
-<span id="cb480-51"><a href="#cb480-51" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb480-52"><a href="#cb480-52" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb480-53"><a href="#cb480-53" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb480-54"><a href="#cb480-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
-<span id="cb480-55"><a href="#cb480-55" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
-<span id="cb480-56"><a href="#cb480-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
-<span id="cb480-57"><a href="#cb480-57" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-58"><a href="#cb480-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb480-59"><a href="#cb480-59" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
-<span id="cb480-60"><a href="#cb480-60" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-61"><a href="#cb480-61" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb480-62"><a href="#cb480-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-63"><a href="#cb480-63" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb480-64"><a href="#cb480-64" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-65"><a href="#cb480-65" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb480-66"><a href="#cb480-66" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-67"><a href="#cb480-67" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb480-68"><a href="#cb480-68" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-69"><a href="#cb480-69" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb480-70"><a href="#cb480-70" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-71"><a href="#cb480-71" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb480-72"><a href="#cb480-72" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-73"><a href="#cb480-73" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb480-74"><a href="#cb480-74" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-75"><a href="#cb480-75" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb480-76"><a href="#cb480-76" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb480-77"><a href="#cb480-77" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb480-78"><a href="#cb480-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb523"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb523-1"><a href="#cb523-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb523-2"><a href="#cb523-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionDefinitionLists</span>{true}</span>
+<span id="cb523-3"><a href="#cb523-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
+<span id="cb523-4"><a href="#cb523-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-5"><a href="#cb523-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb523-6"><a href="#cb523-6" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
+<span id="cb523-7"><a href="#cb523-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb523-8"><a href="#cb523-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb523-9"><a href="#cb523-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{<span class="co">%</span></span>
+<span id="cb523-10"><a href="#cb523-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb523-11"><a href="#cb523-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span>
+<span id="cb523-12"><a href="#cb523-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb523-13"><a href="#cb523-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb523-14"><a href="#cb523-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span>
+<span id="cb523-15"><a href="#cb523-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb523-16"><a href="#cb523-16" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb523-17"><a href="#cb523-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb523-18"><a href="#cb523-18" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb523-19"><a href="#cb523-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
+<span id="cb523-20"><a href="#cb523-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb523-21"><a href="#cb523-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb523-22"><a href="#cb523-22" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb523-23"><a href="#cb523-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
+<span id="cb523-24"><a href="#cb523-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\par</span>--<span class="fu">\kern</span> 0.5em}</span>
+<span id="cb523-25"><a href="#cb523-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{<span class="fu">\endgroup</span>}</span>
+<span id="cb523-26"><a href="#cb523-26" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-27"><a href="#cb523-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb523-28"><a href="#cb523-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
+<span id="cb523-29"><a href="#cb523-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-30"><a href="#cb523-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb523-31"><a href="#cb523-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb523-32"><a href="#cb523-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb523-33"><a href="#cb523-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb523-34"><a href="#cb523-34" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-35"><a href="#cb523-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb523-36"><a href="#cb523-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb523-37"><a href="#cb523-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb523-38"><a href="#cb523-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb523-39"><a href="#cb523-39" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb523-40"><a href="#cb523-40" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-41"><a href="#cb523-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb523-42"><a href="#cb523-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb523-43"><a href="#cb523-43" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb523-44"><a href="#cb523-44" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
+<span id="cb523-45"><a href="#cb523-45" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb523-46"><a href="#cb523-46" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
+<span id="cb523-47"><a href="#cb523-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb523-48"><a href="#cb523-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb523-49"><a href="#cb523-49" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb523-50"><a href="#cb523-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
+<span id="cb523-51"><a href="#cb523-51" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb523-52"><a href="#cb523-52" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb523-53"><a href="#cb523-53" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb523-54"><a href="#cb523-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
+<span id="cb523-55"><a href="#cb523-55" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
+<span id="cb523-56"><a href="#cb523-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
+<span id="cb523-57"><a href="#cb523-57" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-58"><a href="#cb523-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb523-59"><a href="#cb523-59" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
+<span id="cb523-60"><a href="#cb523-60" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-61"><a href="#cb523-61" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb523-62"><a href="#cb523-62" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-63"><a href="#cb523-63" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb523-64"><a href="#cb523-64" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-65"><a href="#cb523-65" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb523-66"><a href="#cb523-66" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-67"><a href="#cb523-67" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb523-68"><a href="#cb523-68" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-69"><a href="#cb523-69" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb523-70"><a href="#cb523-70" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-71"><a href="#cb523-71" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb523-72"><a href="#cb523-72" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-73"><a href="#cb523-73" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb523-74"><a href="#cb523-74" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-75"><a href="#cb523-75" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb523-76"><a href="#cb523-76" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb523-77"><a href="#cb523-77" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb523-78"><a href="#cb523-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb481"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb481-1"><a href="#cb481-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb524"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb524-1"><a href="#cb524-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8519,94 +9531,94 @@ prepared from roasted coffee beans, and one of the most traded
agricultural commodities in the world. Milk is a white cold drink,
nutrient-rich, and produced on an industrial scale.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-62"><span
+<h5 class="unnumbered" id="latex-example-66"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb482"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb482-1"><a href="#cb482-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb482-2"><a href="#cb482-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists, tightLists]{<span class="ex">markdown</span>}</span>
-<span id="cb482-3"><a href="#cb482-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb482-4"><a href="#cb482-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-5"><a href="#cb482-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span>
-<span id="cb482-6"><a href="#cb482-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb482-7"><a href="#cb482-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb482-8"><a href="#cb482-8" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
-<span id="cb482-9"><a href="#cb482-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb482-10"><a href="#cb482-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb482-11"><a href="#cb482-11" aria-hidden="true" tabindex="-1"></a> dlBeginTight = {<span class="kw">\begin</span>{<span class="ex">description</span>}},</span>
-<span id="cb482-12"><a href="#cb482-12" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
-<span id="cb482-13"><a href="#cb482-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[#1]</span>
-<span id="cb482-14"><a href="#cb482-14" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">itemize</span>}</span>
-<span id="cb482-15"><a href="#cb482-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb482-16"><a href="#cb482-16" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb482-17"><a href="#cb482-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb482-18"><a href="#cb482-18" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb482-19"><a href="#cb482-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
-<span id="cb482-20"><a href="#cb482-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb482-21"><a href="#cb482-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb482-22"><a href="#cb482-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb482-23"><a href="#cb482-23" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
-<span id="cb482-24"><a href="#cb482-24" aria-hidden="true" tabindex="-1"></a> dlDefinitionBegin = <span class="fu">\item</span>,</span>
-<span id="cb482-25"><a href="#cb482-25" aria-hidden="true" tabindex="-1"></a> dlEndTight = {<span class="kw">\end</span>{<span class="ex">description</span>}},</span>
-<span id="cb482-26"><a href="#cb482-26" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb482-27"><a href="#cb482-27" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb482-28"><a href="#cb482-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
-<span id="cb482-29"><a href="#cb482-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-30"><a href="#cb482-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb482-31"><a href="#cb482-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb482-32"><a href="#cb482-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb482-33"><a href="#cb482-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb482-34"><a href="#cb482-34" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-35"><a href="#cb482-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb482-36"><a href="#cb482-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb482-37"><a href="#cb482-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb482-38"><a href="#cb482-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb482-39"><a href="#cb482-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb482-40"><a href="#cb482-40" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-41"><a href="#cb482-41" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span>
-<span id="cb482-42"><a href="#cb482-42" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb482-43"><a href="#cb482-43" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb482-44"><a href="#cb482-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb482-45"><a href="#cb482-45" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb482-46"><a href="#cb482-46" aria-hidden="true" tabindex="-1"></a> dlBegin = {},</span>
-<span id="cb482-47"><a href="#cb482-47" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
-<span id="cb482-48"><a href="#cb482-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
-<span id="cb482-49"><a href="#cb482-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb482-50"><a href="#cb482-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb482-51"><a href="#cb482-51" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb482-52"><a href="#cb482-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
-<span id="cb482-53"><a href="#cb482-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb482-54"><a href="#cb482-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb482-55"><a href="#cb482-55" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb482-56"><a href="#cb482-56" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {},</span>
-<span id="cb482-57"><a href="#cb482-57" aria-hidden="true" tabindex="-1"></a> dlDefinitionEnd = {},</span>
-<span id="cb482-58"><a href="#cb482-58" aria-hidden="true" tabindex="-1"></a> dlEnd = {.},</span>
-<span id="cb482-59"><a href="#cb482-59" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb482-60"><a href="#cb482-60" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb482-61"><a href="#cb482-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
-<span id="cb482-62"><a href="#cb482-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-63"><a href="#cb482-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb482-64"><a href="#cb482-64" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-65"><a href="#cb482-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb482-66"><a href="#cb482-66" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-67"><a href="#cb482-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb482-68"><a href="#cb482-68" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-69"><a href="#cb482-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb482-70"><a href="#cb482-70" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-71"><a href="#cb482-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb482-72"><a href="#cb482-72" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-73"><a href="#cb482-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb482-74"><a href="#cb482-74" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-75"><a href="#cb482-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb482-76"><a href="#cb482-76" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-77"><a href="#cb482-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb482-78"><a href="#cb482-78" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb482-79"><a href="#cb482-79" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb482-80"><a href="#cb482-80" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb525"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb525-1"><a href="#cb525-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb525-2"><a href="#cb525-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists, tightLists]{<span class="ex">markdown</span>}</span>
+<span id="cb525-3"><a href="#cb525-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb525-4"><a href="#cb525-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-5"><a href="#cb525-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb525-6"><a href="#cb525-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb525-7"><a href="#cb525-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb525-8"><a href="#cb525-8" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
+<span id="cb525-9"><a href="#cb525-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb525-10"><a href="#cb525-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb525-11"><a href="#cb525-11" aria-hidden="true" tabindex="-1"></a> dlBeginTight = {<span class="kw">\begin</span>{<span class="ex">description</span>}},</span>
+<span id="cb525-12"><a href="#cb525-12" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
+<span id="cb525-13"><a href="#cb525-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[#1]</span>
+<span id="cb525-14"><a href="#cb525-14" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">itemize</span>}</span>
+<span id="cb525-15"><a href="#cb525-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb525-16"><a href="#cb525-16" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb525-17"><a href="#cb525-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb525-18"><a href="#cb525-18" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb525-19"><a href="#cb525-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
+<span id="cb525-20"><a href="#cb525-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb525-21"><a href="#cb525-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb525-22"><a href="#cb525-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb525-23"><a href="#cb525-23" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
+<span id="cb525-24"><a href="#cb525-24" aria-hidden="true" tabindex="-1"></a> dlDefinitionBegin = <span class="fu">\item</span>,</span>
+<span id="cb525-25"><a href="#cb525-25" aria-hidden="true" tabindex="-1"></a> dlEndTight = {<span class="kw">\end</span>{<span class="ex">description</span>}},</span>
+<span id="cb525-26"><a href="#cb525-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb525-27"><a href="#cb525-27" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb525-28"><a href="#cb525-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
+<span id="cb525-29"><a href="#cb525-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-30"><a href="#cb525-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb525-31"><a href="#cb525-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb525-32"><a href="#cb525-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb525-33"><a href="#cb525-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb525-34"><a href="#cb525-34" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-35"><a href="#cb525-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb525-36"><a href="#cb525-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb525-37"><a href="#cb525-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb525-38"><a href="#cb525-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb525-39"><a href="#cb525-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb525-40"><a href="#cb525-40" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-41"><a href="#cb525-41" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb525-42"><a href="#cb525-42" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb525-43"><a href="#cb525-43" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb525-44"><a href="#cb525-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb525-45"><a href="#cb525-45" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb525-46"><a href="#cb525-46" aria-hidden="true" tabindex="-1"></a> dlBegin = {},</span>
+<span id="cb525-47"><a href="#cb525-47" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
+<span id="cb525-48"><a href="#cb525-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
+<span id="cb525-49"><a href="#cb525-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb525-50"><a href="#cb525-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb525-51"><a href="#cb525-51" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb525-52"><a href="#cb525-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
+<span id="cb525-53"><a href="#cb525-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb525-54"><a href="#cb525-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb525-55"><a href="#cb525-55" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb525-56"><a href="#cb525-56" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {},</span>
+<span id="cb525-57"><a href="#cb525-57" aria-hidden="true" tabindex="-1"></a> dlDefinitionEnd = {},</span>
+<span id="cb525-58"><a href="#cb525-58" aria-hidden="true" tabindex="-1"></a> dlEnd = {.},</span>
+<span id="cb525-59"><a href="#cb525-59" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb525-60"><a href="#cb525-60" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb525-61"><a href="#cb525-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
+<span id="cb525-62"><a href="#cb525-62" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-63"><a href="#cb525-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb525-64"><a href="#cb525-64" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-65"><a href="#cb525-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb525-66"><a href="#cb525-66" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-67"><a href="#cb525-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb525-68"><a href="#cb525-68" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-69"><a href="#cb525-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb525-70"><a href="#cb525-70" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-71"><a href="#cb525-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb525-72"><a href="#cb525-72" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-73"><a href="#cb525-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb525-74"><a href="#cb525-74" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-75"><a href="#cb525-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb525-76"><a href="#cb525-76" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-77"><a href="#cb525-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb525-78"><a href="#cb525-78" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb525-79"><a href="#cb525-79" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb525-80"><a href="#cb525-80" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb483"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb483-1"><a href="#cb483-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb526"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb526-1"><a href="#cb526-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8628,94 +9640,94 @@ prepared from roasted coffee beans, and one of the most traded
agricultural commodities in the world. Milk is a white cold drink,
nutrient-rich, and produced on an industrial scale.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-40">Con<span
+<h5 class="unnumbered" id="context-example-42">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb484"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb484-1"><a href="#cb484-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb484-2"><a href="#cb484-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb484-3"><a href="#cb484-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb484-4"><a href="#cb484-4" aria-hidden="true" tabindex="-1"></a> definitionLists = yes,</span>
-<span id="cb484-5"><a href="#cb484-5" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span>
-<span id="cb484-6"><a href="#cb484-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb484-7"><a href="#cb484-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb484-8"><a href="#cb484-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-9"><a href="#cb484-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb484-10"><a href="#cb484-10" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
-<span id="cb484-11"><a href="#cb484-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb484-12"><a href="#cb484-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb484-13"><a href="#cb484-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{}</span>
-<span id="cb484-14"><a href="#cb484-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb484-15"><a href="#cb484-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span>
-<span id="cb484-16"><a href="#cb484-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startitemize</span></span>
-<span id="cb484-17"><a href="#cb484-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb484-18"><a href="#cb484-18" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb484-19"><a href="#cb484-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb484-20"><a href="#cb484-20" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb484-21"><a href="#cb484-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
-<span id="cb484-22"><a href="#cb484-22" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb484-23"><a href="#cb484-23" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb484-24"><a href="#cb484-24" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb484-25"><a href="#cb484-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{<span class="fu">\stopitemize</span>}</span>
-<span id="cb484-26"><a href="#cb484-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\item</span>}</span>
-<span id="cb484-27"><a href="#cb484-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{}</span>
-<span id="cb484-28"><a href="#cb484-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-29"><a href="#cb484-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb484-30"><a href="#cb484-30" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
-<span id="cb484-31"><a href="#cb484-31" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-32"><a href="#cb484-32" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb484-33"><a href="#cb484-33" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb484-34"><a href="#cb484-34" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb484-35"><a href="#cb484-35" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb484-36"><a href="#cb484-36" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-37"><a href="#cb484-37" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb484-38"><a href="#cb484-38" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb484-39"><a href="#cb484-39" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb484-40"><a href="#cb484-40" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb484-41"><a href="#cb484-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb484-42"><a href="#cb484-42" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-43"><a href="#cb484-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb484-44"><a href="#cb484-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb484-45"><a href="#cb484-45" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb484-46"><a href="#cb484-46" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
-<span id="cb484-47"><a href="#cb484-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb484-48"><a href="#cb484-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
-<span id="cb484-49"><a href="#cb484-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb484-50"><a href="#cb484-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb484-51"><a href="#cb484-51" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb484-52"><a href="#cb484-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
-<span id="cb484-53"><a href="#cb484-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb484-54"><a href="#cb484-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb484-55"><a href="#cb484-55" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb484-56"><a href="#cb484-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
-<span id="cb484-57"><a href="#cb484-57" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
-<span id="cb484-58"><a href="#cb484-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
-<span id="cb484-59"><a href="#cb484-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-60"><a href="#cb484-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb484-61"><a href="#cb484-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
-<span id="cb484-62"><a href="#cb484-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-63"><a href="#cb484-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb484-64"><a href="#cb484-64" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-65"><a href="#cb484-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb484-66"><a href="#cb484-66" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-67"><a href="#cb484-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb484-68"><a href="#cb484-68" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-69"><a href="#cb484-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb484-70"><a href="#cb484-70" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-71"><a href="#cb484-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb484-72"><a href="#cb484-72" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-73"><a href="#cb484-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb484-74"><a href="#cb484-74" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-75"><a href="#cb484-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb484-76"><a href="#cb484-76" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-77"><a href="#cb484-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb484-78"><a href="#cb484-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb484-79"><a href="#cb484-79" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-80"><a href="#cb484-80" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb527"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb527-1"><a href="#cb527-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb527-2"><a href="#cb527-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb527-3"><a href="#cb527-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb527-4"><a href="#cb527-4" aria-hidden="true" tabindex="-1"></a> definitionLists = yes,</span>
+<span id="cb527-5"><a href="#cb527-5" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span>
+<span id="cb527-6"><a href="#cb527-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb527-7"><a href="#cb527-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb527-8"><a href="#cb527-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-9"><a href="#cb527-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb527-10"><a href="#cb527-10" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
+<span id="cb527-11"><a href="#cb527-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb527-12"><a href="#cb527-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb527-13"><a href="#cb527-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{}</span>
+<span id="cb527-14"><a href="#cb527-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb527-15"><a href="#cb527-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span>{<span class="fu">\bf</span>#1}<span class="co">%</span></span>
+<span id="cb527-16"><a href="#cb527-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startitemize</span></span>
+<span id="cb527-17"><a href="#cb527-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb527-18"><a href="#cb527-18" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb527-19"><a href="#cb527-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb527-20"><a href="#cb527-20" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb527-21"><a href="#cb527-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
+<span id="cb527-22"><a href="#cb527-22" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb527-23"><a href="#cb527-23" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb527-24"><a href="#cb527-24" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb527-25"><a href="#cb527-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{<span class="fu">\stopitemize</span>}</span>
+<span id="cb527-26"><a href="#cb527-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\item</span>}</span>
+<span id="cb527-27"><a href="#cb527-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{}</span>
+<span id="cb527-28"><a href="#cb527-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-29"><a href="#cb527-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb527-30"><a href="#cb527-30" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
+<span id="cb527-31"><a href="#cb527-31" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-32"><a href="#cb527-32" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb527-33"><a href="#cb527-33" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb527-34"><a href="#cb527-34" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb527-35"><a href="#cb527-35" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb527-36"><a href="#cb527-36" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-37"><a href="#cb527-37" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb527-38"><a href="#cb527-38" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb527-39"><a href="#cb527-39" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb527-40"><a href="#cb527-40" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb527-41"><a href="#cb527-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb527-42"><a href="#cb527-42" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-43"><a href="#cb527-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb527-44"><a href="#cb527-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb527-45"><a href="#cb527-45" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb527-46"><a href="#cb527-46" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
+<span id="cb527-47"><a href="#cb527-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb527-48"><a href="#cb527-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
+<span id="cb527-49"><a href="#cb527-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb527-50"><a href="#cb527-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb527-51"><a href="#cb527-51" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb527-52"><a href="#cb527-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
+<span id="cb527-53"><a href="#cb527-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb527-54"><a href="#cb527-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb527-55"><a href="#cb527-55" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb527-56"><a href="#cb527-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
+<span id="cb527-57"><a href="#cb527-57" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
+<span id="cb527-58"><a href="#cb527-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
+<span id="cb527-59"><a href="#cb527-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-60"><a href="#cb527-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb527-61"><a href="#cb527-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
+<span id="cb527-62"><a href="#cb527-62" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-63"><a href="#cb527-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb527-64"><a href="#cb527-64" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-65"><a href="#cb527-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb527-66"><a href="#cb527-66" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-67"><a href="#cb527-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb527-68"><a href="#cb527-68" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-69"><a href="#cb527-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb527-70"><a href="#cb527-70" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-71"><a href="#cb527-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb527-72"><a href="#cb527-72" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-73"><a href="#cb527-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb527-74"><a href="#cb527-74" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-75"><a href="#cb527-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb527-76"><a href="#cb527-76" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-77"><a href="#cb527-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb527-78"><a href="#cb527-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb527-79"><a href="#cb527-79" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-80"><a href="#cb527-80" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb485"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb485-1"><a href="#cb485-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb528"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb528-1"><a href="#cb528-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8737,73 +9749,73 @@ prepared from roasted coffee beans, and one of the most traded
agricultural commodities in the world. Milk is a white cold drink,
nutrient-rich, and produced on an industrial scale.</p>
</blockquote>
-<h4 data-number="2.3.1.10" id="ellipsis-renderer"><span
-class="header-section-number">2.3.1.10</span> Ellipsis Renderer</h4>
+<h4 data-number="2.3.1.11" id="ellipsis-renderer"><span
+class="header-section-number">2.3.1.11</span> Ellipsis Renderer</h4>
<p>The <code>\markdownRendererEllipsis</code> macro replaces any
occurance of ASCII ellipses in the input text. This macro will only be
produced, when the <strong><code>smartEllipses</code></strong> option is
enabled. The macro receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-27">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-30">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb486"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb486-1"><a href="#cb486-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb486-2"><a href="#cb486-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
-<span id="cb486-3"><a href="#cb486-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{{<span class="fu">\it</span> SHAZAM}!}</span>
-<span id="cb486-4"><a href="#cb486-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb486-5"><a href="#cb486-5" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
-<span id="cb486-6"><a href="#cb486-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb486-7"><a href="#cb486-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb529"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb529-1"><a href="#cb529-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb529-2"><a href="#cb529-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
+<span id="cb529-3"><a href="#cb529-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{{<span class="fu">\it</span> SHAZAM}!}</span>
+<span id="cb529-4"><a href="#cb529-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb529-5"><a href="#cb529-5" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
+<span id="cb529-6"><a href="#cb529-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb529-7"><a href="#cb529-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb487"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb487-1"><a href="#cb487-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb530"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb530-1"><a href="#cb530-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>The secret word is <em>SHAZAM</em>!</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-63"><span
+<h5 class="unnumbered" id="latex-example-67"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb488"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb488-1"><a href="#cb488-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb488-2"><a href="#cb488-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span>
-<span id="cb488-3"><a href="#cb488-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb488-4"><a href="#cb488-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb488-5"><a href="#cb488-5" aria-hidden="true" tabindex="-1"></a> ellipsis = <span class="fu">\emph</span>{SHAZAM}!,</span>
-<span id="cb488-6"><a href="#cb488-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb488-7"><a href="#cb488-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb488-8"><a href="#cb488-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb488-9"><a href="#cb488-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb488-10"><a href="#cb488-10" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
-<span id="cb488-11"><a href="#cb488-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb488-12"><a href="#cb488-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb531"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb531-1"><a href="#cb531-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb531-2"><a href="#cb531-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span>
+<span id="cb531-3"><a href="#cb531-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb531-4"><a href="#cb531-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb531-5"><a href="#cb531-5" aria-hidden="true" tabindex="-1"></a> ellipsis = <span class="fu">\emph</span>{SHAZAM}!,</span>
+<span id="cb531-6"><a href="#cb531-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb531-7"><a href="#cb531-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb531-8"><a href="#cb531-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb531-9"><a href="#cb531-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb531-10"><a href="#cb531-10" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
+<span id="cb531-11"><a href="#cb531-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb531-12"><a href="#cb531-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb489"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb489-1"><a href="#cb489-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb532"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb532-1"><a href="#cb532-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>The secret word is <em>SHAZAM</em>!</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-41">Con<span
+<h5 class="unnumbered" id="context-example-43">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb490"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb490-1"><a href="#cb490-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb490-2"><a href="#cb490-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
-<span id="cb490-3"><a href="#cb490-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{<span class="fu">\emph</span>{SHAZAM}!}</span>
-<span id="cb490-4"><a href="#cb490-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb490-5"><a href="#cb490-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb490-6"><a href="#cb490-6" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
-<span id="cb490-7"><a href="#cb490-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb490-8"><a href="#cb490-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb533"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb533-1"><a href="#cb533-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb533-2"><a href="#cb533-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
+<span id="cb533-3"><a href="#cb533-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{<span class="fu">\emph</span>{SHAZAM}!}</span>
+<span id="cb533-4"><a href="#cb533-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb533-5"><a href="#cb533-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb533-6"><a href="#cb533-6" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
+<span id="cb533-7"><a href="#cb533-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb533-8"><a href="#cb533-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb491"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb491-1"><a href="#cb491-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb534"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb534-1"><a href="#cb534-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -8811,93 +9823,93 @@ contain the following text:</p>
<p><em>(The end of a block)</em></p>
<p><em>Foo</em> bar!</p>
</blockquote>
-<h4 data-number="2.3.1.11" id="emphasis-renderers"><span
-class="header-section-number">2.3.1.11</span> Emphasis Renderers</h4>
+<h4 data-number="2.3.1.12" id="emphasis-renderers"><span
+class="header-section-number">2.3.1.12</span> Emphasis Renderers</h4>
<p>The <code>\markdownRendererEmphasis</code> macro represents an
emphasized span of text. The macro receives a single argument that
corresponds to the emphasized span of text.</p>
-<h5 class="unnumbered" id="plain-tex-example-28">Plain <span
+<p>The <code>\markdownRendererStrongEmphasis</code> macro represents a
+strongly emphasized span of text. The macro receives a single argument
+that corresponds to the emphasized span of text.</p>
+<h5 class="unnumbered" id="plain-tex-example-31">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb492"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb492-1"><a href="#cb492-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb492-2"><a href="#cb492-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{{<span class="fu">\it</span>#1}}</span>
-<span id="cb492-3"><a href="#cb492-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{{<span class="fu">\bf</span>#1}}</span>
-<span id="cb492-4"><a href="#cb492-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb492-5"><a href="#cb492-5" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
-<span id="cb492-6"><a href="#cb492-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb492-7"><a href="#cb492-7" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
-<span id="cb492-8"><a href="#cb492-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb492-9"><a href="#cb492-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb535"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb535-1"><a href="#cb535-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb535-2"><a href="#cb535-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{{<span class="fu">\it</span>#1}}</span>
+<span id="cb535-3"><a href="#cb535-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{{<span class="fu">\bf</span>#1}}</span>
+<span id="cb535-4"><a href="#cb535-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb535-5"><a href="#cb535-5" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
+<span id="cb535-6"><a href="#cb535-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb535-7"><a href="#cb535-7" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
+<span id="cb535-8"><a href="#cb535-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb535-9"><a href="#cb535-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb493"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb493-1"><a href="#cb493-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb536"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb536-1"><a href="#cb536-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <em>emphasis</em>.</p>
<p>This is <strong>strong emphasis</strong>.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-64"><span
+<h5 class="unnumbered" id="latex-example-68"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb494"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb494-1"><a href="#cb494-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb494-2"><a href="#cb494-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb494-3"><a href="#cb494-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb494-4"><a href="#cb494-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb494-5"><a href="#cb494-5" aria-hidden="true" tabindex="-1"></a> emphasis = {<span class="fu">\emph</span>{#1}},</span>
-<span id="cb494-6"><a href="#cb494-6" aria-hidden="true" tabindex="-1"></a> strongEmphasis = {<span class="fu">\textbf</span>{#1}},</span>
-<span id="cb494-7"><a href="#cb494-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb494-8"><a href="#cb494-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb494-9"><a href="#cb494-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb494-10"><a href="#cb494-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb494-11"><a href="#cb494-11" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
-<span id="cb494-12"><a href="#cb494-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-13"><a href="#cb494-13" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
-<span id="cb494-14"><a href="#cb494-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb494-15"><a href="#cb494-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb537"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb537-1"><a href="#cb537-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb537-2"><a href="#cb537-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb537-3"><a href="#cb537-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb537-4"><a href="#cb537-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb537-5"><a href="#cb537-5" aria-hidden="true" tabindex="-1"></a> emphasis = {<span class="fu">\emph</span>{#1}},</span>
+<span id="cb537-6"><a href="#cb537-6" aria-hidden="true" tabindex="-1"></a> strongEmphasis = {<span class="fu">\textbf</span>{#1}},</span>
+<span id="cb537-7"><a href="#cb537-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb537-8"><a href="#cb537-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb537-9"><a href="#cb537-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb537-10"><a href="#cb537-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb537-11"><a href="#cb537-11" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
+<span id="cb537-12"><a href="#cb537-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb537-13"><a href="#cb537-13" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
+<span id="cb537-14"><a href="#cb537-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb537-15"><a href="#cb537-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb495"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb495-1"><a href="#cb495-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb538"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb538-1"><a href="#cb538-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <em>emphasis</em>.</p>
<p>This is <strong>strong emphasis</strong>.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-42">Con<span
+<h5 class="unnumbered" id="context-example-44">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb496"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb496-1"><a href="#cb496-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb496-2"><a href="#cb496-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{<span class="fu">\emph</span>{#1}}</span>
-<span id="cb496-3"><a href="#cb496-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{<span class="fu">\bold</span>{#1}}</span>
-<span id="cb496-4"><a href="#cb496-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb496-5"><a href="#cb496-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb496-6"><a href="#cb496-6" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
-<span id="cb496-7"><a href="#cb496-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-8"><a href="#cb496-8" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
-<span id="cb496-9"><a href="#cb496-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb496-10"><a href="#cb496-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb539"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb539-1"><a href="#cb539-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb539-2"><a href="#cb539-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{<span class="fu">\emph</span>{#1}}</span>
+<span id="cb539-3"><a href="#cb539-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{<span class="fu">\bold</span>{#1}}</span>
+<span id="cb539-4"><a href="#cb539-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb539-5"><a href="#cb539-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb539-6"><a href="#cb539-6" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
+<span id="cb539-7"><a href="#cb539-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb539-8"><a href="#cb539-8" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
+<span id="cb539-9"><a href="#cb539-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb539-10"><a href="#cb539-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb497"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb497-1"><a href="#cb497-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb540"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb540-1"><a href="#cb540-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <em>emphasis</em>.</p>
<p>This is <strong>strong emphasis</strong>.</p>
</blockquote>
-<p>The <code>\markdownRendererStrongEmphasis</code> macro represents a
-strongly emphasized span of text. The macro receives a single argument
-that corresponds to the emphasized span of text.</p>
-<h4 data-number="2.3.1.12"
+<h4 data-number="2.3.1.13"
id="fenced-code-attribute-context-renderers"><span
-class="header-section-number">2.3.1.12</span> Fenced Code Attribute
+class="header-section-number">2.3.1.13</span> Fenced Code Attribute
Context Renderers</h4>
<p>The following macros are only produced, when the
<strong><code>fencedCode</code></strong> option is enabled.</p>
@@ -8905,107 +9917,109 @@ Context Renderers</h4>
<code>\markdownRendererFencedCodeAttributeContextEnd</code> macros
represent the beginning and the end of a context in which the attributes
of a fenced code apply. The macros receive no arguments.</p>
-<h5 class="unnumbered" id="latex-example-65"><span
+<h5 class="unnumbered" id="latex-example-69"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb498"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb498-1"><a href="#cb498-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb498-2"><a href="#cb498-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span>
-<span id="cb498-3"><a href="#cb498-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb498-4"><a href="#cb498-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
-<span id="cb498-5"><a href="#cb498-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb498-6"><a href="#cb498-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb498-7"><a href="#cb498-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span>
-<span id="cb498-8"><a href="#cb498-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb498-9"><a href="#cb498-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb498-10"><a href="#cb498-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb498-11"><a href="#cb498-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
-<span id="cb498-12"><a href="#cb498-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span>
-<span id="cb498-13"><a href="#cb498-13" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb498-14"><a href="#cb498-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb498-15"><a href="#cb498-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb498-16"><a href="#cb498-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb498-17"><a href="#cb498-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span>
-<span id="cb498-18"><a href="#cb498-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb498-19"><a href="#cb498-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb498-20"><a href="#cb498-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb498-21"><a href="#cb498-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb498-22"><a href="#cb498-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb498-23"><a href="#cb498-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb498-24"><a href="#cb498-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span>
-<span id="cb498-25"><a href="#cb498-25" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
-<span id="cb498-26"><a href="#cb498-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
-<span id="cb498-27"><a href="#cb498-27" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb498-28"><a href="#cb498-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
-<span id="cb498-29"><a href="#cb498-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb498-30"><a href="#cb498-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb541"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb541-1"><a href="#cb541-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb541-2"><a href="#cb541-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span>
+<span id="cb541-3"><a href="#cb541-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb541-4"><a href="#cb541-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
+<span id="cb541-5"><a href="#cb541-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb541-6"><a href="#cb541-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb541-7"><a href="#cb541-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span>
+<span id="cb541-8"><a href="#cb541-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb541-9"><a href="#cb541-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb541-10"><a href="#cb541-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb541-11"><a href="#cb541-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
+<span id="cb541-12"><a href="#cb541-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span>
+<span id="cb541-13"><a href="#cb541-13" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb541-14"><a href="#cb541-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb541-15"><a href="#cb541-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb541-16"><a href="#cb541-16" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb541-17"><a href="#cb541-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span>
+<span id="cb541-18"><a href="#cb541-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb541-19"><a href="#cb541-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb541-20"><a href="#cb541-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb541-21"><a href="#cb541-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb541-22"><a href="#cb541-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb541-23"><a href="#cb541-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb541-24"><a href="#cb541-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span>
+<span id="cb541-25"><a href="#cb541-25" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
+<span id="cb541-26"><a href="#cb541-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
+<span id="cb541-27"><a href="#cb541-27" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb541-28"><a href="#cb541-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
+<span id="cb541-29"><a href="#cb541-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb541-30"><a href="#cb541-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb499"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb499-1"><a href="#cb499-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb542"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb542-1"><a href="#cb542-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
-<p>``` js {.linenos} 1. if (a &gt; 3) { 2. moveShip(5 * gravity, DOWN);
-3. } ``````</p>
+<div class="sourceCode" id="cb543"><pre
+class="sourceCode js linenos"><code class="sourceCode javascript"><span id="cb543-1"><a href="#cb543-1" aria-hidden="true" tabindex="-1"></a><span class="fl">1.</span> <span class="cf">if</span> (a <span class="op">&gt;</span> <span class="dv">3</span>) {</span>
+<span id="cb543-2"><a href="#cb543-2" aria-hidden="true" tabindex="-1"></a><span class="fl">2.</span> <span class="fu">moveShip</span>(<span class="dv">5</span> <span class="op">*</span> gravity<span class="op">,</span> DOWN)<span class="op">;</span></span>
+<span id="cb543-3"><a href="#cb543-3" aria-hidden="true" tabindex="-1"></a><span class="fl">3.</span> }</span></code></pre></div>
</blockquote>
-<h4 data-number="2.3.1.13"
+<h4 data-number="2.3.1.14"
id="fenced-div-attribute-context-renderers"><span
-class="header-section-number">2.3.1.13</span> Fenced Div Attribute
+class="header-section-number">2.3.1.14</span> Fenced Div Attribute
Context Renderers</h4>
<p>The following macros are only produced, when the
<strong><code>fencedDiv</code></strong> option is enabled.</p>
<p>The <code>\markdownRendererFencedDivAttributeContextBegin</code> and
<code>\markdownRendererFencedDivAttributeContextEnd</code> macros
-represent the beginning and the end of a div in which the attributes of
-the div apply. The macros receive no arguments.</p>
-<h5 class="unnumbered" id="latex-example-66"><span
+represent the beginning and the end of a context in which the attributes
+of a div apply. The macros receive no arguments.</p>
+<h5 class="unnumbered" id="latex-example-70"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb500"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb500-1"><a href="#cb500-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb500-2"><a href="#cb500-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
-<span id="cb500-3"><a href="#cb500-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb500-4"><a href="#cb500-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb500-5"><a href="#cb500-5" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextBegin = {<span class="co">%</span></span>
-<span id="cb500-6"><a href="#cb500-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb500-7"><a href="#cb500-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a fenced div attribute context)}</span>
-<span id="cb500-8"><a href="#cb500-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb500-9"><a href="#cb500-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb500-10"><a href="#cb500-10" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextEnd = {<span class="co">%</span></span>
-<span id="cb500-11"><a href="#cb500-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb500-12"><a href="#cb500-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a fenced div attribute context)}</span>
-<span id="cb500-13"><a href="#cb500-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb500-14"><a href="#cb500-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb500-15"><a href="#cb500-15" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb500-16"><a href="#cb500-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb500-17"><a href="#cb500-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb500-18"><a href="#cb500-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb500-19"><a href="#cb500-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-20"><a href="#cb500-20" aria-hidden="true" tabindex="-1"></a>::: {key=value}</span>
-<span id="cb500-21"><a href="#cb500-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-22"><a href="#cb500-22" aria-hidden="true" tabindex="-1"></a>foo</span>
-<span id="cb500-23"><a href="#cb500-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-24"><a href="#cb500-24" aria-hidden="true" tabindex="-1"></a>:::: {#identifier}</span>
-<span id="cb500-25"><a href="#cb500-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-26"><a href="#cb500-26" aria-hidden="true" tabindex="-1"></a>bar</span>
-<span id="cb500-27"><a href="#cb500-27" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-28"><a href="#cb500-28" aria-hidden="true" tabindex="-1"></a>::::</span>
-<span id="cb500-29"><a href="#cb500-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-30"><a href="#cb500-30" aria-hidden="true" tabindex="-1"></a>:::</span>
-<span id="cb500-31"><a href="#cb500-31" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-32"><a href="#cb500-32" aria-hidden="true" tabindex="-1"></a>::: {.class_name}</span>
-<span id="cb500-33"><a href="#cb500-33" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-34"><a href="#cb500-34" aria-hidden="true" tabindex="-1"></a>baz</span>
-<span id="cb500-35"><a href="#cb500-35" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-36"><a href="#cb500-36" aria-hidden="true" tabindex="-1"></a>:::</span>
-<span id="cb500-37"><a href="#cb500-37" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb500-38"><a href="#cb500-38" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb500-39"><a href="#cb500-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb544"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb544-1"><a href="#cb544-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb544-2"><a href="#cb544-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
+<span id="cb544-3"><a href="#cb544-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb544-4"><a href="#cb544-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb544-5"><a href="#cb544-5" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextBegin = {<span class="co">%</span></span>
+<span id="cb544-6"><a href="#cb544-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb544-7"><a href="#cb544-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a fenced div attribute context)}</span>
+<span id="cb544-8"><a href="#cb544-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb544-9"><a href="#cb544-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb544-10"><a href="#cb544-10" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextEnd = {<span class="co">%</span></span>
+<span id="cb544-11"><a href="#cb544-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb544-12"><a href="#cb544-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a fenced div attribute context)}</span>
+<span id="cb544-13"><a href="#cb544-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb544-14"><a href="#cb544-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb544-15"><a href="#cb544-15" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb544-16"><a href="#cb544-16" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb544-17"><a href="#cb544-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb544-18"><a href="#cb544-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb544-19"><a href="#cb544-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-20"><a href="#cb544-20" aria-hidden="true" tabindex="-1"></a>::: {key=value}</span>
+<span id="cb544-21"><a href="#cb544-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-22"><a href="#cb544-22" aria-hidden="true" tabindex="-1"></a>foo</span>
+<span id="cb544-23"><a href="#cb544-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-24"><a href="#cb544-24" aria-hidden="true" tabindex="-1"></a>:::: {#identifier}</span>
+<span id="cb544-25"><a href="#cb544-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-26"><a href="#cb544-26" aria-hidden="true" tabindex="-1"></a>bar</span>
+<span id="cb544-27"><a href="#cb544-27" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-28"><a href="#cb544-28" aria-hidden="true" tabindex="-1"></a>::::</span>
+<span id="cb544-29"><a href="#cb544-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-30"><a href="#cb544-30" aria-hidden="true" tabindex="-1"></a>:::</span>
+<span id="cb544-31"><a href="#cb544-31" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-32"><a href="#cb544-32" aria-hidden="true" tabindex="-1"></a>::: {.class_name}</span>
+<span id="cb544-33"><a href="#cb544-33" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-34"><a href="#cb544-34" aria-hidden="true" tabindex="-1"></a>baz</span>
+<span id="cb544-35"><a href="#cb544-35" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-36"><a href="#cb544-36" aria-hidden="true" tabindex="-1"></a>:::</span>
+<span id="cb544-37"><a href="#cb544-37" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb544-38"><a href="#cb544-38" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb544-39"><a href="#cb544-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb501"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb501-1"><a href="#cb501-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb545"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb545-1"><a href="#cb545-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9019,50 +10033,52 @@ contain the following text:</p>
<p>baz</p>
<p><em>(The end of a fenced div attribute context)</em></p>
</blockquote>
-<h4 data-number="2.3.1.14" id="header-attribute-context-renderers"><span
-class="header-section-number">2.3.1.14</span> Header Attribute Context
+<h4 data-number="2.3.1.15" id="header-attribute-context-renderers"><span
+class="header-section-number">2.3.1.15</span> Header Attribute Context
Renderers</h4>
<p>The following macros are only produced, when the
-<strong><code>headerAttributes</code></strong> option is enabled.</p>
+<strong><code>autoIdentifiers</code></strong>,
+<strong><code>gfmAutoIdentifiers</code></strong>, or
+<strong><code>headerAttributes</code></strong> options are enabled.</p>
<p>The <code>\markdownRendererHeaderAttributeContextBegin</code> and
<code>\markdownRendererHeaderAttributeContextEnd</code> macros represent
-the beginning and the end of a section in which the attributes of a
+the beginning and the end of a context in which the attributes of a
heading apply. The macros receive no arguments.</p>
-<h5 class="unnumbered" id="latex-example-67"><span
+<h5 class="unnumbered" id="latex-example-71"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb502"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb502-1"><a href="#cb502-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb502-2"><a href="#cb502-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb502-3"><a href="#cb502-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb502-4"><a href="#cb502-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb502-5"><a href="#cb502-5" aria-hidden="true" tabindex="-1"></a> headerAttributeContextBegin = {<span class="co">%</span></span>
-<span id="cb502-6"><a href="#cb502-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb502-7"><a href="#cb502-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a header attribute context)}</span>
-<span id="cb502-8"><a href="#cb502-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb502-9"><a href="#cb502-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb502-10"><a href="#cb502-10" aria-hidden="true" tabindex="-1"></a> headerAttributeContextEnd = {<span class="co">%</span></span>
-<span id="cb502-11"><a href="#cb502-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb502-12"><a href="#cb502-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a header attribute context)}</span>
-<span id="cb502-13"><a href="#cb502-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb502-14"><a href="#cb502-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb502-15"><a href="#cb502-15" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb502-16"><a href="#cb502-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb502-17"><a href="#cb502-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb502-18"><a href="#cb502-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb502-19"><a href="#cb502-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb502-20"><a href="#cb502-20" aria-hidden="true" tabindex="-1"></a># First top-level heading</span>
-<span id="cb502-21"><a href="#cb502-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb502-22"><a href="#cb502-22" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span>
-<span id="cb502-23"><a href="#cb502-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb502-24"><a href="#cb502-24" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span>
-<span id="cb502-25"><a href="#cb502-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb502-26"><a href="#cb502-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb502-27"><a href="#cb502-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb546"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb546-1"><a href="#cb546-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb546-2"><a href="#cb546-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb546-3"><a href="#cb546-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb546-4"><a href="#cb546-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb546-5"><a href="#cb546-5" aria-hidden="true" tabindex="-1"></a> headerAttributeContextBegin = {<span class="co">%</span></span>
+<span id="cb546-6"><a href="#cb546-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb546-7"><a href="#cb546-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a header attribute context)}</span>
+<span id="cb546-8"><a href="#cb546-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb546-9"><a href="#cb546-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb546-10"><a href="#cb546-10" aria-hidden="true" tabindex="-1"></a> headerAttributeContextEnd = {<span class="co">%</span></span>
+<span id="cb546-11"><a href="#cb546-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb546-12"><a href="#cb546-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a header attribute context)}</span>
+<span id="cb546-13"><a href="#cb546-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb546-14"><a href="#cb546-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb546-15"><a href="#cb546-15" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb546-16"><a href="#cb546-16" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb546-17"><a href="#cb546-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb546-18"><a href="#cb546-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb546-19"><a href="#cb546-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb546-20"><a href="#cb546-20" aria-hidden="true" tabindex="-1"></a># First top-level heading</span>
+<span id="cb546-21"><a href="#cb546-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb546-22"><a href="#cb546-22" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span>
+<span id="cb546-23"><a href="#cb546-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb546-24"><a href="#cb546-24" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span>
+<span id="cb546-25"><a href="#cb546-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb546-26"><a href="#cb546-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb546-27"><a href="#cb546-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb503"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb503-1"><a href="#cb503-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb547"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb547-1"><a href="#cb547-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9074,8 +10090,8 @@ contain the following text:</p>
<h1 id="second-top-level-heading-1">Second top-level heading</h1>
<p><em>(The end of a header attribute context)</em></p>
</blockquote>
-<h4 data-number="2.3.1.15" id="heading-renderers"><span
-class="header-section-number">2.3.1.15</span> Heading Renderers</h4>
+<h4 data-number="2.3.1.16" id="heading-renderers"><span
+class="header-section-number">2.3.1.16</span> Heading Renderers</h4>
<p>The <code>\markdownRendererHeadingOne</code> macro represents a first
level heading. The macro receives a single argument that corresponds to
the heading text.</p>
@@ -9094,156 +10110,136 @@ corresponds to the heading text.</p>
<p>The <code>\markdownRendererHeadingSix</code> macro represents a sixth
level heading. The macro receives a single argument that corresponds to
the heading text.</p>
-<h5 class="unnumbered" id="plain-tex-example-29">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-32">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb504"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb504-1"><a href="#cb504-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb504-2"><a href="#cb504-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb504-3"><a href="#cb504-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span>
-<span id="cb504-4"><a href="#cb504-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span>
-<span id="cb504-5"><a href="#cb504-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span>
-<span id="cb504-6"><a href="#cb504-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span>
-<span id="cb504-7"><a href="#cb504-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span>
-<span id="cb504-8"><a href="#cb504-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span>
-<span id="cb504-9"><a href="#cb504-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb504-10"><a href="#cb504-10" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb504-11"><a href="#cb504-11" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb504-12"><a href="#cb504-12" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb504-13"><a href="#cb504-13" aria-hidden="true" tabindex="-1"></a>###</span>
-<span id="cb504-14"><a href="#cb504-14" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb504-15"><a href="#cb504-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb504-16"><a href="#cb504-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb548"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb548-1"><a href="#cb548-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb548-2"><a href="#cb548-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb548-3"><a href="#cb548-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span>
+<span id="cb548-4"><a href="#cb548-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span>
+<span id="cb548-5"><a href="#cb548-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span>
+<span id="cb548-6"><a href="#cb548-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span>
+<span id="cb548-7"><a href="#cb548-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span>
+<span id="cb548-8"><a href="#cb548-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span>
+<span id="cb548-9"><a href="#cb548-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb548-10"><a href="#cb548-10" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb548-11"><a href="#cb548-11" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb548-12"><a href="#cb548-12" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb548-13"><a href="#cb548-13" aria-hidden="true" tabindex="-1"></a>###</span>
+<span id="cb548-14"><a href="#cb548-14" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb548-15"><a href="#cb548-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb548-16"><a href="#cb548-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb505"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb505-1"><a href="#cb505-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb549"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb549-1"><a href="#cb549-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>65536</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-68"><span
+<h5 class="unnumbered" id="latex-example-72"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb506"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb506-1"><a href="#cb506-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb506-2"><a href="#cb506-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb506-3"><a href="#cb506-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb506-4"><a href="#cb506-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb506-5"><a href="#cb506-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
-<span id="cb506-6"><a href="#cb506-6" aria-hidden="true" tabindex="-1"></a> headingOne = 1,</span>
-<span id="cb506-7"><a href="#cb506-7" aria-hidden="true" tabindex="-1"></a> headingTwo = 2,</span>
-<span id="cb506-8"><a href="#cb506-8" aria-hidden="true" tabindex="-1"></a> headingThree = 3,</span>
-<span id="cb506-9"><a href="#cb506-9" aria-hidden="true" tabindex="-1"></a> headingFour = 4,</span>
-<span id="cb506-10"><a href="#cb506-10" aria-hidden="true" tabindex="-1"></a> headingFive = 5,</span>
-<span id="cb506-11"><a href="#cb506-11" aria-hidden="true" tabindex="-1"></a> headingSix = 6,</span>
-<span id="cb506-12"><a href="#cb506-12" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb506-13"><a href="#cb506-13" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb506-14"><a href="#cb506-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb506-15"><a href="#cb506-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb506-16"><a href="#cb506-16" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb506-17"><a href="#cb506-17" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb506-18"><a href="#cb506-18" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb506-19"><a href="#cb506-19" aria-hidden="true" tabindex="-1"></a>###</span>
-<span id="cb506-20"><a href="#cb506-20" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb506-21"><a href="#cb506-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb506-22"><a href="#cb506-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb550"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb550-1"><a href="#cb550-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb550-2"><a href="#cb550-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb550-3"><a href="#cb550-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb550-4"><a href="#cb550-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb550-5"><a href="#cb550-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
+<span id="cb550-6"><a href="#cb550-6" aria-hidden="true" tabindex="-1"></a> headingOne = 1,</span>
+<span id="cb550-7"><a href="#cb550-7" aria-hidden="true" tabindex="-1"></a> headingTwo = 2,</span>
+<span id="cb550-8"><a href="#cb550-8" aria-hidden="true" tabindex="-1"></a> headingThree = 3,</span>
+<span id="cb550-9"><a href="#cb550-9" aria-hidden="true" tabindex="-1"></a> headingFour = 4,</span>
+<span id="cb550-10"><a href="#cb550-10" aria-hidden="true" tabindex="-1"></a> headingFive = 5,</span>
+<span id="cb550-11"><a href="#cb550-11" aria-hidden="true" tabindex="-1"></a> headingSix = 6,</span>
+<span id="cb550-12"><a href="#cb550-12" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb550-13"><a href="#cb550-13" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb550-14"><a href="#cb550-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb550-15"><a href="#cb550-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb550-16"><a href="#cb550-16" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb550-17"><a href="#cb550-17" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb550-18"><a href="#cb550-18" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb550-19"><a href="#cb550-19" aria-hidden="true" tabindex="-1"></a>###</span>
+<span id="cb550-20"><a href="#cb550-20" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb550-21"><a href="#cb550-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb550-22"><a href="#cb550-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb507"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb507-1"><a href="#cb507-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb551"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb551-1"><a href="#cb551-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>65536</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-43">Con<span
+<h5 class="unnumbered" id="context-example-45">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb508"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb508-1"><a href="#cb508-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb508-2"><a href="#cb508-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb508-3"><a href="#cb508-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span>
-<span id="cb508-4"><a href="#cb508-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span>
-<span id="cb508-5"><a href="#cb508-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span>
-<span id="cb508-6"><a href="#cb508-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span>
-<span id="cb508-7"><a href="#cb508-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span>
-<span id="cb508-8"><a href="#cb508-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span>
-<span id="cb508-9"><a href="#cb508-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb508-10"><a href="#cb508-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb508-11"><a href="#cb508-11" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb508-12"><a href="#cb508-12" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb508-13"><a href="#cb508-13" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb508-14"><a href="#cb508-14" aria-hidden="true" tabindex="-1"></a>###</span>
-<span id="cb508-15"><a href="#cb508-15" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb508-16"><a href="#cb508-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb508-17"><a href="#cb508-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb552"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb552-1"><a href="#cb552-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb552-2"><a href="#cb552-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb552-3"><a href="#cb552-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span>
+<span id="cb552-4"><a href="#cb552-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span>
+<span id="cb552-5"><a href="#cb552-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span>
+<span id="cb552-6"><a href="#cb552-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span>
+<span id="cb552-7"><a href="#cb552-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span>
+<span id="cb552-8"><a href="#cb552-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span>
+<span id="cb552-9"><a href="#cb552-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb552-10"><a href="#cb552-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb552-11"><a href="#cb552-11" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb552-12"><a href="#cb552-12" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb552-13"><a href="#cb552-13" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb552-14"><a href="#cb552-14" aria-hidden="true" tabindex="-1"></a>###</span>
+<span id="cb552-15"><a href="#cb552-15" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb552-16"><a href="#cb552-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb552-17"><a href="#cb552-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb509"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb509-1"><a href="#cb509-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb553"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb553-1"><a href="#cb553-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>65536</p>
</blockquote>
-<h4 data-number="2.3.1.16" id="html-comment-renderers"><span
-class="header-section-number">2.3.1.16</span> HTML Comment
-Renderers</h4>
+<h4 data-number="2.3.1.17" id="inline-html-comment-renderer"><span
+class="header-section-number">2.3.1.17</span> Inline HTML Comment
+Renderer</h4>
<p>The <code>\markdownRendererInlineHtmlComment</code> macro represents
the contents of an inline <abbr>HTML</abbr> comment. This macro will
only be produced, when the <strong><code>html</code></strong> option is
enabled. The macro receives a single argument that corresponds to the
contents of the <abbr>HTML</abbr> comment.</p>
-<p>The <code>\markdownRendererBlockHtmlCommentBegin</code> and
-<code>\markdownRendererBlockHtmlCommentEnd</code> macros represent the
-beginning and the end of a block <abbr>HTML</abbr> comment. The macros
-receive no arguments.</p>
-<h5 class="unnumbered" id="latex-example-69"><span
+<h5 class="unnumbered" id="latex-example-73"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb510"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb510-1"><a href="#cb510-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb510-2"><a href="#cb510-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span>
-<span id="cb510-3"><a href="#cb510-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
-<span id="cb510-4"><a href="#cb510-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb510-5"><a href="#cb510-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb510-6"><a href="#cb510-6" aria-hidden="true" tabindex="-1"></a> inlineHtmlComment = {<span class="fu">\marginnote</span>{#1}},</span>
-<span id="cb510-7"><a href="#cb510-7" aria-hidden="true" tabindex="-1"></a> blockHtmlCommentBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span>
-<span id="cb510-8"><a href="#cb510-8" aria-hidden="true" tabindex="-1"></a> blockHtmlCommentEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</span>
-<span id="cb510-9"><a href="#cb510-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb510-10"><a href="#cb510-10" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb510-11"><a href="#cb510-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb510-12"><a href="#cb510-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb510-13"><a href="#cb510-13" aria-hidden="true" tabindex="-1"></a>A useful use of inline HTML comments are side notes.</span>
-<span id="cb510-14"><a href="#cb510-14" aria-hidden="true" tabindex="-1"></a>&lt;!-- Side notes are displayed in the horizontal margins next to the relevant</span>
-<span id="cb510-15"><a href="#cb510-15" aria-hidden="true" tabindex="-1"></a>passages, which makes them *easier for the reader to find* than notes. --&gt;</span>
-<span id="cb510-16"><a href="#cb510-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb510-17"><a href="#cb510-17" aria-hidden="true" tabindex="-1"></a>We can render block HTML comments as blockquotes:</span>
-<span id="cb510-18"><a href="#cb510-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb510-19"><a href="#cb510-19" aria-hidden="true" tabindex="-1"></a>&lt;!--</span>
-<span id="cb510-20"><a href="#cb510-20" aria-hidden="true" tabindex="-1"></a>Here is a block HTML comment with a code example that a programmer might understand:</span>
-<span id="cb510-21"><a href="#cb510-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb510-22"><a href="#cb510-22" aria-hidden="true" tabindex="-1"></a> foo = bar + baz - 42</span>
-<span id="cb510-23"><a href="#cb510-23" aria-hidden="true" tabindex="-1"></a>--&gt;</span>
-<span id="cb510-24"><a href="#cb510-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb510-25"><a href="#cb510-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb554"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb554-1"><a href="#cb554-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb554-2"><a href="#cb554-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span>
+<span id="cb554-3"><a href="#cb554-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
+<span id="cb554-4"><a href="#cb554-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb554-5"><a href="#cb554-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb554-6"><a href="#cb554-6" aria-hidden="true" tabindex="-1"></a> inlineHtmlComment = {<span class="fu">\marginnote</span>{#1}},</span>
+<span id="cb554-7"><a href="#cb554-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb554-8"><a href="#cb554-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb554-9"><a href="#cb554-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb554-10"><a href="#cb554-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb554-11"><a href="#cb554-11" aria-hidden="true" tabindex="-1"></a>A useful use of inline HTML comments are side notes.</span>
+<span id="cb554-12"><a href="#cb554-12" aria-hidden="true" tabindex="-1"></a>&lt;!-- Side notes are displayed in the horizontal margins next to the relevant</span>
+<span id="cb554-13"><a href="#cb554-13" aria-hidden="true" tabindex="-1"></a>passages, which makes them *easier for the reader to find* than notes. --&gt;</span>
+<span id="cb554-14"><a href="#cb554-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb554-15"><a href="#cb554-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb511"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb511-1"><a href="#cb511-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb511-2"><a href="#cb511-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb555"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb555-1"><a href="#cb555-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb555-2"><a href="#cb555-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following body text:</p>
<blockquote>
<p>A useful use of HTML comments are side notes.</p>
-<p>We can render block HTML comments as blockquotes:</p>
-<blockquote>
-<p>Here is a block HTML comment with a code example that a programmer
-might understand:</p>
-<pre><code>foo = bar + baz - 42</code></pre>
-</blockquote>
</blockquote>
<p>The horizontal margins should contain the following text:</p>
<blockquote>
@@ -9251,8 +10247,8 @@ might understand:</p>
relevant passages, which makes them <em>easier for the reader to
find</em> than notes.</p>
</blockquote>
-<h4 data-number="2.3.1.17" id="html-tag-and-element-renderers"><span
-class="header-section-number">2.3.1.17</span> HTML Tag and Element
+<h4 data-number="2.3.1.18" id="html-tag-and-element-renderers"><span
+class="header-section-number">2.3.1.18</span> HTML Tag and Element
Renderers</h4>
<p>The <code>\markdownRendererInlineHtmlTag</code> macro represents an
opening, closing, or empty inline <abbr>HTML</abbr> tag. This macro will
@@ -9264,86 +10260,86 @@ represents a block <abbr>HTML</abbr> element. This macro will only be
produced, when the <strong><code>html</code></strong> option is enabled.
The macro receives a single argument that filename of a file containing
the contents of the <abbr>HTML</abbr> element.</p>
-<h5 class="unnumbered" id="latex-example-70"><span
+<h5 class="unnumbered" id="latex-example-74"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb513"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb513-1"><a href="#cb513-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb513-2"><a href="#cb513-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span>
-<span id="cb513-3"><a href="#cb513-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
-<span id="cb513-4"><a href="#cb513-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
-<span id="cb513-5"><a href="#cb513-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb513-6"><a href="#cb513-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb513-7"><a href="#cb513-7" aria-hidden="true" tabindex="-1"></a> inlineHtmlTag = {<span class="fu">\textbf</span>{#1}},</span>
-<span id="cb513-8"><a href="#cb513-8" aria-hidden="true" tabindex="-1"></a> inputBlockHtmlElement = {<span class="fu">\verbatiminput</span>{#1}},</span>
-<span id="cb513-9"><a href="#cb513-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb513-10"><a href="#cb513-10" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb513-11"><a href="#cb513-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb513-12"><a href="#cb513-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb513-13"><a href="#cb513-13" aria-hidden="true" tabindex="-1"></a>&lt;b&gt;_Hello,_ world!&lt;/b&gt;&lt;br/&gt;</span>
-<span id="cb513-14"><a href="#cb513-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb513-15"><a href="#cb513-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;_Hello,_ world!&lt;/div&gt;</span>
-<span id="cb513-16"><a href="#cb513-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb513-17"><a href="#cb513-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb556"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb556-1"><a href="#cb556-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb556-2"><a href="#cb556-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span>
+<span id="cb556-3"><a href="#cb556-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
+<span id="cb556-4"><a href="#cb556-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
+<span id="cb556-5"><a href="#cb556-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb556-6"><a href="#cb556-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb556-7"><a href="#cb556-7" aria-hidden="true" tabindex="-1"></a> inlineHtmlTag = {<span class="fu">\textbf</span>{#1}},</span>
+<span id="cb556-8"><a href="#cb556-8" aria-hidden="true" tabindex="-1"></a> inputBlockHtmlElement = {<span class="fu">\verbatiminput</span>{#1}},</span>
+<span id="cb556-9"><a href="#cb556-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb556-10"><a href="#cb556-10" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb556-11"><a href="#cb556-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb556-12"><a href="#cb556-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb556-13"><a href="#cb556-13" aria-hidden="true" tabindex="-1"></a>&lt;b&gt;_Hello,_ world!&lt;/b&gt;&lt;br/&gt;</span>
+<span id="cb556-14"><a href="#cb556-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb556-15"><a href="#cb556-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;_Hello,_ world!&lt;/div&gt;</span>
+<span id="cb556-16"><a href="#cb556-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb556-17"><a href="#cb556-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb514"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb514-1"><a href="#cb514-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb514-2"><a href="#cb514-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb557"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb557-1"><a href="#cb557-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb557-2"><a href="#cb557-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following body text:</p>
<blockquote>
<p><strong><b></strong>_Hello,_ world!<strong></b><br/></strong></p>
<pre><code>&lt;div&gt;_Hello,_ world!&lt;/div&gt;</code></pre>
</blockquote>
-<h4 data-number="2.3.1.18" id="image-renderer"><span
-class="header-section-number">2.3.1.18</span> Image Renderer</h4>
+<h4 data-number="2.3.1.19" id="image-renderer"><span
+class="header-section-number">2.3.1.19</span> Image Renderer</h4>
<p>The <code>\markdownRendererImage</code> macro represents an image. It
receives four arguments: the label, the fully escaped <abbr>uri</abbr>
that can be directly typeset, the raw <abbr>uri</abbr> that can be used
outside typesetting, and the title of the link.</p>
-<h5 class="unnumbered" id="latex-example-71"><span
+<h5 class="unnumbered" id="latex-example-75"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb516"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb516-1"><a href="#cb516-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb516-2"><a href="#cb516-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb516-3"><a href="#cb516-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb516-4"><a href="#cb516-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\@</span>=11</span>
-<span id="cb516-5"><a href="#cb516-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb516-6"><a href="#cb516-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\^</span>^A=14</span>
-<span id="cb516-7"><a href="#cb516-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\global\def\markdownRendererImage</span>#1#2#3#4{^^A</span>
-<span id="cb516-8"><a href="#cb516-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\immediate\write</span>18{^^A</span></code></pre></div>
-<div class="sourceCode" id="cb517"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb517-1"><a href="#cb517-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">printf</span> <span class="st">&#39;%s&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="kw">|</span> <span class="fu">grep</span> <span class="at">-q</span> ^http<span class="kw">;</span> <span class="cf">then</span></span>
-<span id="cb517-2"><a href="#cb517-2" aria-hidden="true" tabindex="-1"></a> <span class="va">OUTPUT</span><span class="op">=</span><span class="st">&quot;</span><span class="va">$(</span><span class="bu">printf</span> <span class="st">&#39;%s&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="kw">|</span> <span class="fu">md5sum</span> <span class="kw">|</span> <span class="fu">cut</span> <span class="at">-d</span><span class="st">&#39; &#39;</span> <span class="at">-f1</span><span class="va">)</span><span class="st">.^^A</span></span>
-<span id="cb517-3"><a href="#cb517-3" aria-hidden="true" tabindex="-1"></a><span class="st"> </span><span class="va">$(</span><span class="bu">printf</span> <span class="st">&#39;%s&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="kw">|</span> <span class="fu">sed</span> <span class="st">&#39;s/.*[.]//&#39;</span><span class="va">)</span><span class="st">&quot;</span><span class="kw">;</span></span>
-<span id="cb517-4"><a href="#cb517-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="ot">! </span><span class="bu">[</span> <span class="ot">-e</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> <span class="bu">]</span><span class="kw">;</span> <span class="cf">then</span></span>
-<span id="cb517-5"><a href="#cb517-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">wget</span> <span class="at">-O</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> <span class="st">&#39;#3&#39;</span> <span class="kw">||</span> <span class="fu">rm</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span><span class="kw">;</span></span>
-<span id="cb517-6"><a href="#cb517-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">convert</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> png:<span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span><span class="kw">;</span></span>
-<span id="cb517-7"><a href="#cb517-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">fi</span><span class="kw">;</span></span>
-<span id="cb517-8"><a href="#cb517-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">&#39;%s%%&#39;</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> <span class="op">&gt;</span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span>
-<span id="cb517-9"><a href="#cb517-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span></span>
-<span id="cb517-10"><a href="#cb517-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">&#39;%s%%&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="op">&gt;</span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span>
-<span id="cb517-11"><a href="#cb517-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">fi^^A</span></span></code></pre></div>
-<div class="sourceCode" id="cb518"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb518-1"><a href="#cb518-1" aria-hidden="true" tabindex="-1"></a> }^^A</span>
-<span id="cb518-2"><a href="#cb518-2" aria-hidden="true" tabindex="-1"></a> {^^A</span>
-<span id="cb518-3"><a href="#cb518-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\everyeof</span>={<span class="fu">\noexpand</span>}^^A</span>
-<span id="cb518-4"><a href="#cb518-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\edef\filename</span>{<span class="fu">\_</span>_markdowninput&quot;<span class="fu">\jobname</span>.fetched&quot; }^^A</span>
-<span id="cb518-5"><a href="#cb518-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">\includegraphics</span>[width=<span class="fu">\textwidth</span>]{<span class="fu">\filename</span>}^^A</span>
-<span id="cb518-6"><a href="#cb518-6" aria-hidden="true" tabindex="-1"></a> }^^A</span>
-<span id="cb518-7"><a href="#cb518-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb518-8"><a href="#cb518-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb518-9"><a href="#cb518-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb518-10"><a href="#cb518-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb518-11"><a href="#cb518-11" aria-hidden="true" tabindex="-1"></a>![TUGboat](https://tug.org/tugboat/noword.jpg)</span>
-<span id="cb518-12"><a href="#cb518-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb518-13"><a href="#cb518-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb559"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb559-1"><a href="#cb559-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb559-2"><a href="#cb559-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb559-3"><a href="#cb559-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb559-4"><a href="#cb559-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\@</span>=11</span>
+<span id="cb559-5"><a href="#cb559-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb559-6"><a href="#cb559-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\^</span>^A=14</span>
+<span id="cb559-7"><a href="#cb559-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\global\def\markdownRendererImage</span>#1#2#3#4{^^A</span>
+<span id="cb559-8"><a href="#cb559-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\immediate\write</span>18{^^A</span></code></pre></div>
+<div class="sourceCode" id="cb560"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb560-1"><a href="#cb560-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="bu">printf</span> <span class="st">&#39;%s&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="kw">|</span> <span class="fu">grep</span> <span class="at">-q</span> ^http<span class="kw">;</span> <span class="cf">then</span></span>
+<span id="cb560-2"><a href="#cb560-2" aria-hidden="true" tabindex="-1"></a> <span class="va">OUTPUT</span><span class="op">=</span><span class="st">&quot;</span><span class="va">$(</span><span class="bu">printf</span> <span class="st">&#39;%s&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="kw">|</span> <span class="fu">md5sum</span> <span class="kw">|</span> <span class="fu">cut</span> <span class="at">-d</span><span class="st">&#39; &#39;</span> <span class="at">-f1</span><span class="va">)</span><span class="st">.^^A</span></span>
+<span id="cb560-3"><a href="#cb560-3" aria-hidden="true" tabindex="-1"></a><span class="st"> </span><span class="va">$(</span><span class="bu">printf</span> <span class="st">&#39;%s&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="kw">|</span> <span class="fu">sed</span> <span class="st">&#39;s/.*[.]//&#39;</span><span class="va">)</span><span class="st">&quot;</span><span class="kw">;</span></span>
+<span id="cb560-4"><a href="#cb560-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="ot">! </span><span class="bu">[</span> <span class="ot">-e</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> <span class="bu">]</span><span class="kw">;</span> <span class="cf">then</span></span>
+<span id="cb560-5"><a href="#cb560-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">wget</span> <span class="at">-O</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> <span class="st">&#39;#3&#39;</span> <span class="kw">||</span> <span class="fu">rm</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span><span class="kw">;</span></span>
+<span id="cb560-6"><a href="#cb560-6" aria-hidden="true" tabindex="-1"></a> <span class="ex">convert</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> png:<span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span><span class="kw">;</span></span>
+<span id="cb560-7"><a href="#cb560-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">fi</span><span class="kw">;</span></span>
+<span id="cb560-8"><a href="#cb560-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">&#39;%s%%&#39;</span> <span class="st">&quot;</span><span class="va">$OUTPUT</span><span class="st">&quot;</span> <span class="op">&gt;</span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span>
+<span id="cb560-9"><a href="#cb560-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span></span>
+<span id="cb560-10"><a href="#cb560-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">printf</span> <span class="st">&#39;%s%%&#39;</span> <span class="st">&quot;#3&quot;</span> <span class="op">&gt;</span> <span class="dt">\j</span>obname.fetched<span class="kw">;</span></span>
+<span id="cb560-11"><a href="#cb560-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">fi^^A</span></span></code></pre></div>
+<div class="sourceCode" id="cb561"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb561-1"><a href="#cb561-1" aria-hidden="true" tabindex="-1"></a> }^^A</span>
+<span id="cb561-2"><a href="#cb561-2" aria-hidden="true" tabindex="-1"></a> {^^A</span>
+<span id="cb561-3"><a href="#cb561-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\everyeof</span>={<span class="fu">\noexpand</span>}^^A</span>
+<span id="cb561-4"><a href="#cb561-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\edef\filename</span>{<span class="fu">\@@input</span>&quot;<span class="fu">\jobname</span>.fetched&quot; }^^A</span>
+<span id="cb561-5"><a href="#cb561-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">\includegraphics</span>[width=<span class="fu">\textwidth</span>]{<span class="fu">\filename</span>}^^A</span>
+<span id="cb561-6"><a href="#cb561-6" aria-hidden="true" tabindex="-1"></a> }^^A</span>
+<span id="cb561-7"><a href="#cb561-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb561-8"><a href="#cb561-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb561-9"><a href="#cb561-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb561-10"><a href="#cb561-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb561-11"><a href="#cb561-11" aria-hidden="true" tabindex="-1"></a>![TUGboat](https://tug.org/tugboat/noword.jpg)</span>
+<span id="cb561-12"><a href="#cb561-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb561-13"><a href="#cb561-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb519"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb519-1"><a href="#cb519-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb562"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb562-1"><a href="#cb562-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following content. This assumes that you use a Unix-like
operating system with Bourne or Bourne again shell as the default shell
@@ -9358,163 +10354,209 @@ title="The Communications of the TeX Users Group" alt="TUGboat" />
<figcaption aria-hidden="true">TUGboat</figcaption>
</figure>
</blockquote>
-<h4 data-number="2.3.1.19" id="image-attribute-context-renderers"><span
-class="header-section-number">2.3.1.19</span> Image Attribute Context
+<h4 data-number="2.3.1.20" id="image-attribute-context-renderers"><span
+class="header-section-number">2.3.1.20</span> Image Attribute Context
Renderers</h4>
<p>The following macros are only produced, when the
<strong><code>linkAttributes</code></strong> option is enabled.</p>
<p>The <code>\markdownRendererImageAttributeContextBegin</code> and
<code>\markdownRendererImageAttributeContextEnd</code> macros represent
-the beginning and the end of an image in which the attributes of the
+the beginning and the end of a context in which the attributes of an
image apply. The macros receive no arguments.</p>
-<h5 class="unnumbered" id="latex-example-72"><span
+<h5 class="unnumbered" id="latex-example-76"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb520"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb520-1"><a href="#cb520-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb520-2"><a href="#cb520-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb520-3"><a href="#cb520-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb520-4"><a href="#cb520-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb520-5"><a href="#cb520-5" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {(},</span>
-<span id="cb520-6"><a href="#cb520-6" aria-hidden="true" tabindex="-1"></a> image = {#1},</span>
-<span id="cb520-7"><a href="#cb520-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {)},</span>
-<span id="cb520-8"><a href="#cb520-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb520-9"><a href="#cb520-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb520-10"><a href="#cb520-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb520-11"><a href="#cb520-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb520-12"><a href="#cb520-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb520-13"><a href="#cb520-13" aria-hidden="true" tabindex="-1"></a>foo ![bar](#bar){key=value} baz</span>
-<span id="cb520-14"><a href="#cb520-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb520-15"><a href="#cb520-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb520-16"><a href="#cb520-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb563"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb563-1"><a href="#cb563-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb563-2"><a href="#cb563-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb563-3"><a href="#cb563-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb563-4"><a href="#cb563-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb563-5"><a href="#cb563-5" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {(},</span>
+<span id="cb563-6"><a href="#cb563-6" aria-hidden="true" tabindex="-1"></a> image = {#1},</span>
+<span id="cb563-7"><a href="#cb563-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {)},</span>
+<span id="cb563-8"><a href="#cb563-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb563-9"><a href="#cb563-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb563-10"><a href="#cb563-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb563-11"><a href="#cb563-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb563-12"><a href="#cb563-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb563-13"><a href="#cb563-13" aria-hidden="true" tabindex="-1"></a>foo ![bar](#bar){key=value} baz</span>
+<span id="cb563-14"><a href="#cb563-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb563-15"><a href="#cb563-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb563-16"><a href="#cb563-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb521"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb521-1"><a href="#cb521-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb564"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb564-1"><a href="#cb564-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>foo (bar) baz</p>
</blockquote>
-<h4 data-number="2.3.1.20" id="interblock-separator-renderer"><span
-class="header-section-number">2.3.1.20</span> Interblock Separator
-Renderer</h4>
+<h4 data-number="2.3.1.21" id="interblock-separator-renderers"><span
+class="header-section-number">2.3.1.21</span> Interblock Separator
+Renderers</h4>
<p>The <code>\markdownRendererInterblockSeparator</code> macro
-represents a separator between two markdown block elements. The macro
-receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-30">Plain <span
+represents an interblock separator between two markdown block elements.
+The macro receives no arguments.</p>
+<h5 class="unnumbered" id="plain-tex-example-33">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb522"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb522-1"><a href="#cb522-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb522-2"><a href="#cb522-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb522-3"><a href="#cb522-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb522-4"><a href="#cb522-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(The end of a block)}<span class="co">%</span></span>
-<span id="cb522-5"><a href="#cb522-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb522-6"><a href="#cb522-6" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb522-7"><a href="#cb522-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb522-8"><a href="#cb522-8" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb522-9"><a href="#cb522-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb522-10"><a href="#cb522-10" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb522-11"><a href="#cb522-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb522-12"><a href="#cb522-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb565"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb565-1"><a href="#cb565-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb565-2"><a href="#cb565-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb565-3"><a href="#cb565-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb565-4"><a href="#cb565-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(The end of a block)}<span class="co">%</span></span>
+<span id="cb565-5"><a href="#cb565-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb565-6"><a href="#cb565-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb565-7"><a href="#cb565-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb565-8"><a href="#cb565-8" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
+<span id="cb565-9"><a href="#cb565-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb565-10"><a href="#cb565-10" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb565-11"><a href="#cb565-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb565-12"><a href="#cb565-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb523"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb523-1"><a href="#cb523-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb566"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb566-1"><a href="#cb566-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
-<p>Hello <em>world</em>!</p>
+<ul>
+<li>Hello <em>world</em>!</li>
+</ul>
<p><em>(The end of a block)</em></p>
<p><em>Foo</em> bar!</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-73"><span
+<h5 class="unnumbered" id="latex-example-77"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb524"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb524-1"><a href="#cb524-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb524-2"><a href="#cb524-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb524-3"><a href="#cb524-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb524-4"><a href="#cb524-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb524-5"><a href="#cb524-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb524-6"><a href="#cb524-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb524-7"><a href="#cb524-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span>
-<span id="cb524-8"><a href="#cb524-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb524-9"><a href="#cb524-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb524-10"><a href="#cb524-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb524-11"><a href="#cb524-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb524-12"><a href="#cb524-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb524-13"><a href="#cb524-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb524-14"><a href="#cb524-14" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb524-15"><a href="#cb524-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-16"><a href="#cb524-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb524-17"><a href="#cb524-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb524-18"><a href="#cb524-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb567"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb567-1"><a href="#cb567-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb567-2"><a href="#cb567-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb567-3"><a href="#cb567-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb567-4"><a href="#cb567-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb567-5"><a href="#cb567-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb567-6"><a href="#cb567-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb567-7"><a href="#cb567-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span>
+<span id="cb567-8"><a href="#cb567-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb567-9"><a href="#cb567-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb567-10"><a href="#cb567-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb567-11"><a href="#cb567-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb567-12"><a href="#cb567-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb567-13"><a href="#cb567-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb567-14"><a href="#cb567-14" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
+<span id="cb567-15"><a href="#cb567-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb567-16"><a href="#cb567-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb567-17"><a href="#cb567-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb567-18"><a href="#cb567-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb525"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb525-1"><a href="#cb525-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb568"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb568-1"><a href="#cb568-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
-<p>Hello <em>world</em>!</p>
+<ul>
+<li>Hello <em>world</em>!</li>
+</ul>
<p><em>(The end of a block)</em></p>
<p><em>Foo</em> bar!</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-44">Con<span
+<h5 class="unnumbered" id="context-example-46">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb526"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb526-1"><a href="#cb526-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb526-2"><a href="#cb526-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb526-3"><a href="#cb526-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb526-4"><a href="#cb526-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span>
-<span id="cb526-5"><a href="#cb526-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb526-6"><a href="#cb526-6" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb526-7"><a href="#cb526-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb526-8"><a href="#cb526-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb526-9"><a href="#cb526-9" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb526-10"><a href="#cb526-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-11"><a href="#cb526-11" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb526-12"><a href="#cb526-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb526-13"><a href="#cb526-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb569"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb569-1"><a href="#cb569-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb569-2"><a href="#cb569-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb569-3"><a href="#cb569-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb569-4"><a href="#cb569-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span>
+<span id="cb569-5"><a href="#cb569-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb569-6"><a href="#cb569-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb569-7"><a href="#cb569-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb569-8"><a href="#cb569-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb569-9"><a href="#cb569-9" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
+<span id="cb569-10"><a href="#cb569-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb569-11"><a href="#cb569-11" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb569-12"><a href="#cb569-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb569-13"><a href="#cb569-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb527"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb527-1"><a href="#cb527-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb570"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb570-1"><a href="#cb570-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
-<p>Hello <em>world</em>!</p>
+<ul>
+<li>Hello <em>world</em>!</li>
+</ul>
<p><em>(The end of a block)</em></p>
<p><em>Foo</em> bar!</p>
</blockquote>
-<h4 data-number="2.3.1.21" id="line-block-renderer"><span
-class="header-section-number">2.3.1.21</span> Line Block Renderer</h4>
+<p>Users can use more than one blank line to delimit two block to
+indicate the end of a series of blocks that make up a logical paragraph.
+This produces a paragraph separator instead of an interblock separator.
+Between some blocks, such as markdown paragraphs, a paragraph separator
+is always produced.</p>
+<p>The <code>\markdownRendererParagraphSeparator</code> macro represents
+a paragraph separator. The macro receives no arguments.</p>
+<h5 class="unnumbered" id="latex-example-78"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb571"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb571-1"><a href="#cb571-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb571-2"><a href="#cb571-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb571-3"><a href="#cb571-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb571-4"><a href="#cb571-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb571-5"><a href="#cb571-5" aria-hidden="true" tabindex="-1"></a> paragraphSeparator = {<span class="co">%</span></span>
+<span id="cb571-6"><a href="#cb571-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb571-7"><a href="#cb571-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a paragraph)}<span class="co">%</span></span>
+<span id="cb571-8"><a href="#cb571-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb571-9"><a href="#cb571-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb571-10"><a href="#cb571-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb571-11"><a href="#cb571-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb571-12"><a href="#cb571-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb571-13"><a href="#cb571-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb571-14"><a href="#cb571-14" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb571-15"><a href="#cb571-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb571-16"><a href="#cb571-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb571-17"><a href="#cb571-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb571-18"><a href="#cb571-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb572"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb572-1"><a href="#cb572-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>Hello <em>world</em>!</p>
+<p><em>(The end of a paragraph)</em></p>
+<p><em>Foo</em> bar!</p>
+</blockquote>
+<h4 data-number="2.3.1.22" id="line-block-renderers"><span
+class="header-section-number">2.3.1.22</span> Line Block Renderers</h4>
<p>The following macros are only produced, when the
<strong><code>lineBlocks</code></strong> option is enabled.</p>
<p>The <code>\markdownRendererLineBlockBegin</code> and
<code>\markdownRendererLineBlockEnd</code> macros represent the
beginning and the end of a line block. The macros receive no
arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-31">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-34">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb528"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb528-1"><a href="#cb528-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb528-2"><a href="#cb528-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span>
-<span id="cb528-3"><a href="#cb528-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb528-4"><a href="#cb528-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb528-5"><a href="#cb528-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb528-6"><a href="#cb528-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb528-7"><a href="#cb528-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb528-8"><a href="#cb528-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb528-9"><a href="#cb528-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb573"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb573-1"><a href="#cb573-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb573-2"><a href="#cb573-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span>
+<span id="cb573-3"><a href="#cb573-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb573-4"><a href="#cb573-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb573-5"><a href="#cb573-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb573-6"><a href="#cb573-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb573-7"><a href="#cb573-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb573-8"><a href="#cb573-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb573-9"><a href="#cb573-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb529"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb529-1"><a href="#cb529-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb574"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb574-1"><a href="#cb574-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9523,24 +10565,24 @@ But I, being poor, have only my dreams;<br />
I have spread my dreams under your feet;<br />
Tread softly because you tread on my dreams.</div>
</blockquote>
-<h5 class="unnumbered" id="latex-example-74"><span
+<h5 class="unnumbered" id="latex-example-79"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb530"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb530-1"><a href="#cb530-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb530-2"><a href="#cb530-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb530-3"><a href="#cb530-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb530-4"><a href="#cb530-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb530-5"><a href="#cb530-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb530-6"><a href="#cb530-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb530-7"><a href="#cb530-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb530-8"><a href="#cb530-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb530-9"><a href="#cb530-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb530-10"><a href="#cb530-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb575"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb575-1"><a href="#cb575-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb575-2"><a href="#cb575-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb575-3"><a href="#cb575-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb575-4"><a href="#cb575-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb575-5"><a href="#cb575-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb575-6"><a href="#cb575-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb575-7"><a href="#cb575-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb575-8"><a href="#cb575-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb575-9"><a href="#cb575-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb575-10"><a href="#cb575-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb531"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb531-1"><a href="#cb531-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb576"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb576-1"><a href="#cb576-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9549,24 +10591,24 @@ But I, being poor, have only my dreams;<br />
I have spread my dreams under your feet;<br />
Tread softly because you tread on my dreams.</div>
</blockquote>
-<h5 class="unnumbered" id="context-example-45">Con<span
+<h5 class="unnumbered" id="context-example-47">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb532"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb532-1"><a href="#cb532-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb532-2"><a href="#cb532-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span>
-<span id="cb532-3"><a href="#cb532-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb532-4"><a href="#cb532-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb532-5"><a href="#cb532-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb532-6"><a href="#cb532-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb532-7"><a href="#cb532-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb532-8"><a href="#cb532-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb532-9"><a href="#cb532-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb532-10"><a href="#cb532-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb577"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb577-1"><a href="#cb577-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb577-2"><a href="#cb577-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span>
+<span id="cb577-3"><a href="#cb577-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb577-4"><a href="#cb577-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb577-5"><a href="#cb577-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb577-6"><a href="#cb577-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb577-7"><a href="#cb577-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb577-8"><a href="#cb577-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb577-9"><a href="#cb577-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb577-10"><a href="#cb577-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb533"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb533-1"><a href="#cb533-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb578"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb578-1"><a href="#cb578-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9575,23 +10617,87 @@ But I, being poor, have only my dreams;<br />
I have spread my dreams under your feet;<br />
Tread softly because you tread on my dreams.</div>
</blockquote>
-<h4 data-number="2.3.1.22" id="line-break-renderer"><span
-class="header-section-number">2.3.1.22</span> Line Break Renderer</h4>
+<h4 data-number="2.3.1.23" id="line-break-renderers"><span
+class="header-section-number">2.3.1.23</span> Line Break Renderers</h4>
+<p>The <code>\markdownRendererSoftLineBreak</code> macro represents a
+soft line break. The macro receives no arguments.</p>
+<h5 class="unnumbered" id="plain-tex-example-35">Plain <span
+class="tex">T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb579"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb579-1"><a href="#cb579-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb579-2"><a href="#cb579-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSoftLineBreak</span>{<span class="co">%</span></span>
+<span id="cb579-3"><a href="#cb579-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb579-4"><a href="#cb579-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A soft line break)}<span class="co">%</span></span>
+<span id="cb579-5"><a href="#cb579-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb579-6"><a href="#cb579-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb579-7"><a href="#cb579-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb579-8"><a href="#cb579-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Using a text editor, create a text document named
+<code>example.md</code> with the following content:</p>
+<div class="sourceCode" id="cb580"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb580-1"><a href="#cb580-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span>
+<span id="cb580-2"><a href="#cb580-2" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb581"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb581-1"><a href="#cb581-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>Hello <em>world</em>!</p>
+<p><em>(A soft line break)</em></p>
+<p><em>Foo</em> bar!</p>
+</blockquote>
+<h5 class="unnumbered" id="latex-example-80"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb582"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb582-1"><a href="#cb582-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb582-2"><a href="#cb582-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb582-3"><a href="#cb582-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb582-4"><a href="#cb582-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb582-5"><a href="#cb582-5" aria-hidden="true" tabindex="-1"></a> softLineBreak = {<span class="co">%</span></span>
+<span id="cb582-6"><a href="#cb582-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb582-7"><a href="#cb582-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A soft line break)}<span class="co">%</span></span>
+<span id="cb582-8"><a href="#cb582-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb582-9"><a href="#cb582-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb582-10"><a href="#cb582-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb582-11"><a href="#cb582-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb582-12"><a href="#cb582-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb582-13"><a href="#cb582-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb582-14"><a href="#cb582-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Using a text editor, create a text document named
+<code>example.md</code> with the following content:</p>
+<div class="sourceCode" id="cb583"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb583-1"><a href="#cb583-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span>
+<span id="cb583-2"><a href="#cb583-2" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb584"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb584-1"><a href="#cb584-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>Hello <em>world</em>!</p>
+<p><em>(A soft line break)</em></p>
+<p><em>Foo</em> bar!</p>
+</blockquote>
<p>The <code>\markdownRendererHardLineBreak</code> macro represents a
hard line break. The macro receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-32">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-36">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb534"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb534-1"><a href="#cb534-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb534-2"><a href="#cb534-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHardLineBreak</span>{<span class="co">%</span></span>
-<span id="cb534-3"><a href="#cb534-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb534-4"><a href="#cb534-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A hard line break)}<span class="co">%</span></span>
-<span id="cb534-5"><a href="#cb534-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb534-6"><a href="#cb534-6" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb534-7"><a href="#cb534-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb534-8"><a href="#cb534-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb585"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb585-1"><a href="#cb585-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb585-2"><a href="#cb585-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHardLineBreak</span>{<span class="co">%</span></span>
+<span id="cb585-3"><a href="#cb585-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb585-4"><a href="#cb585-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A hard line break)}<span class="co">%</span></span>
+<span id="cb585-5"><a href="#cb585-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb585-6"><a href="#cb585-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb585-7"><a href="#cb585-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb585-8"><a href="#cb585-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Using a text editor, create a text document named
<code>example.md</code> with the following content. Note the two spaces
at the end of the first line, which specify a hard line break. Due to
@@ -9600,8 +10706,8 @@ processor, hard line breaks would be ignored if we typed them directly
into the <code>document.tex</code> document.</p>
<pre><code>Hello world! <br/>_Foo_ bar!</code></pre>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb535"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb535-1"><a href="#cb535-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb586"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb586-1"><a href="#cb586-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9609,25 +10715,25 @@ contain the following text:</p>
<p><em>(A hard line break)</em></p>
<p><em>Foo</em> bar!</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-75"><span
+<h5 class="unnumbered" id="latex-example-81"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb536"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb536-1"><a href="#cb536-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb536-2"><a href="#cb536-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb536-3"><a href="#cb536-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb536-4"><a href="#cb536-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb536-5"><a href="#cb536-5" aria-hidden="true" tabindex="-1"></a> hardLineBreak = {<span class="co">%</span></span>
-<span id="cb536-6"><a href="#cb536-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb536-7"><a href="#cb536-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A hard line break)}<span class="co">%</span></span>
-<span id="cb536-8"><a href="#cb536-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb536-9"><a href="#cb536-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb536-10"><a href="#cb536-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb536-11"><a href="#cb536-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb536-12"><a href="#cb536-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb536-13"><a href="#cb536-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb536-14"><a href="#cb536-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb587"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb587-1"><a href="#cb587-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb587-2"><a href="#cb587-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb587-3"><a href="#cb587-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb587-4"><a href="#cb587-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb587-5"><a href="#cb587-5" aria-hidden="true" tabindex="-1"></a> hardLineBreak = {<span class="co">%</span></span>
+<span id="cb587-6"><a href="#cb587-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb587-7"><a href="#cb587-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A hard line break)}<span class="co">%</span></span>
+<span id="cb587-8"><a href="#cb587-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb587-9"><a href="#cb587-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb587-10"><a href="#cb587-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb587-11"><a href="#cb587-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb587-12"><a href="#cb587-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb587-13"><a href="#cb587-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb587-14"><a href="#cb587-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Using a text editor, create a text document named
<code>example.md</code> with the following content. Note the two spaces
at the end of the first line, which specify a hard line break. Due to
@@ -9636,8 +10742,8 @@ processor, hard line breaks would be ignored if we typed them directly
into the <code>document.tex</code> document.</p>
<pre><code>Hello world! <br/>_Foo_ bar!</code></pre>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb537"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb537-1"><a href="#cb537-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb588"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb588-1"><a href="#cb588-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9645,31 +10751,31 @@ contain the following text:</p>
<p><em>(A hard line break)</em></p>
<p><em>Foo</em> bar!</p>
</blockquote>
-<h4 data-number="2.3.1.23" id="link-renderer"><span
-class="header-section-number">2.3.1.23</span> Link Renderer</h4>
+<h4 data-number="2.3.1.24" id="link-renderer"><span
+class="header-section-number">2.3.1.24</span> Link Renderer</h4>
<p>The <code>\markdownRendererLink</code> macro represents a hyperlink.
It receives four arguments: the label, the fully escaped
<abbr>uri</abbr> that can be directly typeset, the raw <abbr>uri</abbr>
that can be used outside typesetting, and the title of the link.</p>
-<h5 class="unnumbered" id="plain-tex-example-33">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-37">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb538"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb538-1"><a href="#cb538-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb538-2"><a href="#cb538-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb538-3"><a href="#cb538-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled {<span class="fu">\it</span>#4}<span class="co">%</span></span>
-<span id="cb538-4"><a href="#cb538-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb538-5"><a href="#cb538-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb538-6"><a href="#cb538-6" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
-<span id="cb538-7"><a href="#cb538-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb538-8"><a href="#cb538-8" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
-<span id="cb538-9"><a href="#cb538-9" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
-<span id="cb538-10"><a href="#cb538-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb538-11"><a href="#cb538-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb589"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb589-1"><a href="#cb589-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb589-2"><a href="#cb589-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb589-3"><a href="#cb589-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled {<span class="fu">\it</span>#4}<span class="co">%</span></span>
+<span id="cb589-4"><a href="#cb589-4" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb589-5"><a href="#cb589-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb589-6"><a href="#cb589-6" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
+<span id="cb589-7"><a href="#cb589-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb589-8"><a href="#cb589-8" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
+<span id="cb589-9"><a href="#cb589-9" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
+<span id="cb589-10"><a href="#cb589-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb589-11"><a href="#cb589-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb539"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb539-1"><a href="#cb539-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb590"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb590-1"><a href="#cb590-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9677,31 +10783,31 @@ contain the following text:</p>
class="uri">https://ctan.org/</a> titled <em>the Comprehensive TeX
Archive Network</em>.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-76"><span
+<h5 class="unnumbered" id="latex-example-82"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb540"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb540-1"><a href="#cb540-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb540-2"><a href="#cb540-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb540-3"><a href="#cb540-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb540-4"><a href="#cb540-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb540-5"><a href="#cb540-5" aria-hidden="true" tabindex="-1"></a> link = {<span class="co">%</span></span>
-<span id="cb540-6"><a href="#cb540-6" aria-hidden="true" tabindex="-1"></a> #1 <span class="fu">\texttt</span>{#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span>
-<span id="cb540-7"><a href="#cb540-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb540-8"><a href="#cb540-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb540-9"><a href="#cb540-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb540-10"><a href="#cb540-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb540-11"><a href="#cb540-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb540-12"><a href="#cb540-12" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
-<span id="cb540-13"><a href="#cb540-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb540-14"><a href="#cb540-14" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
-<span id="cb540-15"><a href="#cb540-15" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
-<span id="cb540-16"><a href="#cb540-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb540-17"><a href="#cb540-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb591"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb591-1"><a href="#cb591-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb591-2"><a href="#cb591-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb591-3"><a href="#cb591-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb591-4"><a href="#cb591-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb591-5"><a href="#cb591-5" aria-hidden="true" tabindex="-1"></a> link = {<span class="co">%</span></span>
+<span id="cb591-6"><a href="#cb591-6" aria-hidden="true" tabindex="-1"></a> #1 <span class="fu">\texttt</span>{#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span>
+<span id="cb591-7"><a href="#cb591-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb591-8"><a href="#cb591-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb591-9"><a href="#cb591-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb591-10"><a href="#cb591-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb591-11"><a href="#cb591-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb591-12"><a href="#cb591-12" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
+<span id="cb591-13"><a href="#cb591-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb591-14"><a href="#cb591-14" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
+<span id="cb591-15"><a href="#cb591-15" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
+<span id="cb591-16"><a href="#cb591-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb591-17"><a href="#cb591-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb541"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb541-1"><a href="#cb541-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb592"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb592-1"><a href="#cb592-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9709,26 +10815,26 @@ contain the following text:</p>
class="uri">https://ctan.org/</a> titled <em>the Comprehensive TeX
Archive Network</em>.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-46">Con<span
+<h5 class="unnumbered" id="context-example-48">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb542"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb542-1"><a href="#cb542-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb542-2"><a href="#cb542-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb542-3"><a href="#cb542-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span>
-<span id="cb542-4"><a href="#cb542-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb542-5"><a href="#cb542-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb542-6"><a href="#cb542-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb542-7"><a href="#cb542-7" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
-<span id="cb542-8"><a href="#cb542-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb542-9"><a href="#cb542-9" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
-<span id="cb542-10"><a href="#cb542-10" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
-<span id="cb542-11"><a href="#cb542-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb542-12"><a href="#cb542-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb593"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb593-1"><a href="#cb593-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb593-2"><a href="#cb593-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb593-3"><a href="#cb593-3" aria-hidden="true" tabindex="-1"></a> #1 {<span class="fu">\tt</span>#2} titled <span class="fu">\emph</span>{#4}<span class="co">%</span></span>
+<span id="cb593-4"><a href="#cb593-4" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb593-5"><a href="#cb593-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb593-6"><a href="#cb593-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb593-7"><a href="#cb593-7" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
+<span id="cb593-8"><a href="#cb593-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb593-9"><a href="#cb593-9" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
+<span id="cb593-10"><a href="#cb593-10" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
+<span id="cb593-11"><a href="#cb593-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb593-12"><a href="#cb593-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb543"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb543-1"><a href="#cb543-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb594"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb594-1"><a href="#cb594-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9736,46 +10842,81 @@ contain the following text:</p>
class="uri">https://ctan.org/</a> titled <em>the Comprehensive TeX
Archive Network</em>.</p>
</blockquote>
-<h4 data-number="2.3.1.24" id="link-attribute-context-renderers"><span
-class="header-section-number">2.3.1.24</span> Link Attribute Context
+<h4 data-number="2.3.1.25" id="link-attribute-context-renderers"><span
+class="header-section-number">2.3.1.25</span> Link Attribute Context
Renderers</h4>
<p>The following macros are only produced, when the
<strong><code>linkAttributes</code></strong> option is enabled.</p>
<p>The <code>\markdownRendererLinkAttributeContextBegin</code> and
<code>\markdownRendererLinkAttributeContextEnd</code> macros represent
-the beginning and the end of a hyperlink in which the attributes of the
+the beginning and the end of a context in which the attributes of a
hyperlink apply. The macros receive no arguments.</p>
-<h5 class="unnumbered" id="latex-example-77"><span
+<h5 class="unnumbered" id="latex-example-83"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb544"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb544-1"><a href="#cb544-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb544-2"><a href="#cb544-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb544-3"><a href="#cb544-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb544-4"><a href="#cb544-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb544-5"><a href="#cb544-5" aria-hidden="true" tabindex="-1"></a> linkAttributeContextBegin = {(},</span>
-<span id="cb544-6"><a href="#cb544-6" aria-hidden="true" tabindex="-1"></a> link = {#1},</span>
-<span id="cb544-7"><a href="#cb544-7" aria-hidden="true" tabindex="-1"></a> linkAttributeContextEnd = {)},</span>
-<span id="cb544-8"><a href="#cb544-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb544-9"><a href="#cb544-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb544-10"><a href="#cb544-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb544-11"><a href="#cb544-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb544-12"><a href="#cb544-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb544-13"><a href="#cb544-13" aria-hidden="true" tabindex="-1"></a>foo [bar](#bar){key=value} baz</span>
-<span id="cb544-14"><a href="#cb544-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb544-15"><a href="#cb544-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb544-16"><a href="#cb544-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb595"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb595-1"><a href="#cb595-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb595-2"><a href="#cb595-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb595-3"><a href="#cb595-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb595-4"><a href="#cb595-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb595-5"><a href="#cb595-5" aria-hidden="true" tabindex="-1"></a> linkAttributeContextBegin = {(},</span>
+<span id="cb595-6"><a href="#cb595-6" aria-hidden="true" tabindex="-1"></a> link = {#1},</span>
+<span id="cb595-7"><a href="#cb595-7" aria-hidden="true" tabindex="-1"></a> linkAttributeContextEnd = {)},</span>
+<span id="cb595-8"><a href="#cb595-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb595-9"><a href="#cb595-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb595-10"><a href="#cb595-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb595-11"><a href="#cb595-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb595-12"><a href="#cb595-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb595-13"><a href="#cb595-13" aria-hidden="true" tabindex="-1"></a>foo [bar](#bar){key=value} baz</span>
+<span id="cb595-14"><a href="#cb595-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb595-15"><a href="#cb595-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb595-16"><a href="#cb595-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb545"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb545-1"><a href="#cb545-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb596"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb596-1"><a href="#cb596-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>foo (bar) baz</p>
</blockquote>
-<h4 data-number="2.3.1.25" id="markdown-document-renderers"><span
-class="header-section-number">2.3.1.25</span> Markdown Document
+<h4 data-number="2.3.1.26" id="marked-text-renderer"><span
+class="header-section-number">2.3.1.26</span> Marked Text Renderer</h4>
+<p>The following macro is only produced, when the
+<strong><code>mark</code></strong> option is enabled.</p>
+<p>The <code>\markdownRendererMark</code> macro represents a span of
+marked or highlighted text. The macro receives a single argument that
+corresponds to the marked text.</p>
+<h5 class="unnumbered" id="latex-example-84"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb597"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb597-1"><a href="#cb597-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb597-2"><a href="#cb597-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span>
+<span id="cb597-3"><a href="#cb597-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
+<span id="cb597-4"><a href="#cb597-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb597-5"><a href="#cb597-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb597-6"><a href="#cb597-6" aria-hidden="true" tabindex="-1"></a> mark = {<span class="fu">\hl</span>{#1}},</span>
+<span id="cb597-7"><a href="#cb597-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb597-8"><a href="#cb597-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb597-9"><a href="#cb597-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb597-10"><a href="#cb597-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb597-11"><a href="#cb597-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb597-12"><a href="#cb597-12" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span>
+<span id="cb597-13"><a href="#cb597-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb597-14"><a href="#cb597-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb597-15"><a href="#cb597-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb598"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb598-1"><a href="#cb598-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>This <mark>is highlighted text.</mark></p>
+</blockquote>
+<h4 data-number="2.3.1.27" id="markdown-document-renderers"><span
+class="header-section-number">2.3.1.27</span> Markdown Document
Renderers</h4>
<p>The <code>\markdownRendererDocumentBegin</code> and
<code>\markdownRendererDocumentEnd</code> macros represent the beginning
@@ -9786,81 +10927,81 @@ number of markdown documents. Additionally, markdown documents may
appear not only in a sequence, but several markdown documents may also
be <em>nested</em>. Redefinitions of the macros should take this into
account.</p>
-<h5 class="unnumbered" id="latex-example-78"><span
+<h5 class="unnumbered" id="latex-example-85"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>nested.md</code> with the following content:</p>
-<div class="sourceCode" id="cb546"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb546-1"><a href="#cb546-1" aria-hidden="true" tabindex="-1"></a>This is a *nested* markdown document.</span></code></pre></div>
+<div class="sourceCode" id="cb599"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb599-1"><a href="#cb599-1" aria-hidden="true" tabindex="-1"></a>This is a *nested* markdown document.</span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb547"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb547-1"><a href="#cb547-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb547-2"><a href="#cb547-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb547-3"><a href="#cb547-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb547-4"><a href="#cb547-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb547-5"><a href="#cb547-5" aria-hidden="true" tabindex="-1"></a> contentBlock = {<span class="co">%</span></span>
-<span id="cb547-6"><a href="#cb547-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownInput</span>{#3}<span class="co">%</span></span>
-<span id="cb547-7"><a href="#cb547-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-8"><a href="#cb547-8" aria-hidden="true" tabindex="-1"></a> documentBegin = {<span class="co">%</span></span>
-<span id="cb547-9"><a href="#cb547-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-10"><a href="#cb547-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a document)}</span>
-<span id="cb547-11"><a href="#cb547-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-12"><a href="#cb547-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb547-13"><a href="#cb547-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=first-nesting-level}<span class="co">%</span></span>
-<span id="cb547-14"><a href="#cb547-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-15"><a href="#cb547-15" aria-hidden="true" tabindex="-1"></a> documentEnd = {<span class="co">%</span></span>
-<span id="cb547-16"><a href="#cb547-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb547-17"><a href="#cb547-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-18"><a href="#cb547-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a document)}</span>
-<span id="cb547-19"><a href="#cb547-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-20"><a href="#cb547-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-21"><a href="#cb547-21" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-22"><a href="#cb547-22" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb547-23"><a href="#cb547-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{first-nesting-level}{</span>
-<span id="cb547-24"><a href="#cb547-24" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb547-25"><a href="#cb547-25" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
-<span id="cb547-26"><a href="#cb547-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-27"><a href="#cb547-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
-<span id="cb547-28"><a href="#cb547-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-29"><a href="#cb547-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb547-30"><a href="#cb547-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=second-nesting-level-and-below}</span>
-<span id="cb547-31"><a href="#cb547-31" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-32"><a href="#cb547-32" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-33"><a href="#cb547-33" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb547-34"><a href="#cb547-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{second-nesting-level-and-below}{</span>
-<span id="cb547-35"><a href="#cb547-35" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb547-36"><a href="#cb547-36" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
-<span id="cb547-37"><a href="#cb547-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-38"><a href="#cb547-38" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
-<span id="cb547-39"><a href="#cb547-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-40"><a href="#cb547-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb547-41"><a href="#cb547-41" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-42"><a href="#cb547-42" aria-hidden="true" tabindex="-1"></a> documentEnd = {</span>
-<span id="cb547-43"><a href="#cb547-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb547-44"><a href="#cb547-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-45"><a href="#cb547-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a nested document)}</span>
-<span id="cb547-46"><a href="#cb547-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-47"><a href="#cb547-47" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-48"><a href="#cb547-48" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-49"><a href="#cb547-49" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb547-50"><a href="#cb547-50" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb547-51"><a href="#cb547-51" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb547-52"><a href="#cb547-52" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb547-53"><a href="#cb547-53" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb547-54"><a href="#cb547-54" aria-hidden="true" tabindex="-1"></a>/nested.md</span>
-<span id="cb547-55"><a href="#cb547-55" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb547-56"><a href="#cb547-56" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb547-57"><a href="#cb547-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb547-58"><a href="#cb547-58" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb547-59"><a href="#cb547-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb547-60"><a href="#cb547-60" aria-hidden="true" tabindex="-1"></a>Bar baz!</span>
-<span id="cb547-61"><a href="#cb547-61" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb547-62"><a href="#cb547-62" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb547-63"><a href="#cb547-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb600"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb600-1"><a href="#cb600-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb600-2"><a href="#cb600-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb600-3"><a href="#cb600-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb600-4"><a href="#cb600-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb600-5"><a href="#cb600-5" aria-hidden="true" tabindex="-1"></a> contentBlock = {<span class="co">%</span></span>
+<span id="cb600-6"><a href="#cb600-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownInput</span>{#3}<span class="co">%</span></span>
+<span id="cb600-7"><a href="#cb600-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-8"><a href="#cb600-8" aria-hidden="true" tabindex="-1"></a> documentBegin = {<span class="co">%</span></span>
+<span id="cb600-9"><a href="#cb600-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-10"><a href="#cb600-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a document)}</span>
+<span id="cb600-11"><a href="#cb600-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-12"><a href="#cb600-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb600-13"><a href="#cb600-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=first-nesting-level}<span class="co">%</span></span>
+<span id="cb600-14"><a href="#cb600-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-15"><a href="#cb600-15" aria-hidden="true" tabindex="-1"></a> documentEnd = {<span class="co">%</span></span>
+<span id="cb600-16"><a href="#cb600-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb600-17"><a href="#cb600-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-18"><a href="#cb600-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a document)}</span>
+<span id="cb600-19"><a href="#cb600-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-20"><a href="#cb600-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-21"><a href="#cb600-21" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-22"><a href="#cb600-22" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb600-23"><a href="#cb600-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{first-nesting-level}{</span>
+<span id="cb600-24"><a href="#cb600-24" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb600-25"><a href="#cb600-25" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
+<span id="cb600-26"><a href="#cb600-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-27"><a href="#cb600-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
+<span id="cb600-28"><a href="#cb600-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-29"><a href="#cb600-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb600-30"><a href="#cb600-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=second-nesting-level-and-below}</span>
+<span id="cb600-31"><a href="#cb600-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-32"><a href="#cb600-32" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-33"><a href="#cb600-33" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb600-34"><a href="#cb600-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{second-nesting-level-and-below}{</span>
+<span id="cb600-35"><a href="#cb600-35" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb600-36"><a href="#cb600-36" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
+<span id="cb600-37"><a href="#cb600-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-38"><a href="#cb600-38" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
+<span id="cb600-39"><a href="#cb600-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-40"><a href="#cb600-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb600-41"><a href="#cb600-41" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-42"><a href="#cb600-42" aria-hidden="true" tabindex="-1"></a> documentEnd = {</span>
+<span id="cb600-43"><a href="#cb600-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb600-44"><a href="#cb600-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-45"><a href="#cb600-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a nested document)}</span>
+<span id="cb600-46"><a href="#cb600-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb600-47"><a href="#cb600-47" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-48"><a href="#cb600-48" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb600-49"><a href="#cb600-49" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb600-50"><a href="#cb600-50" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb600-51"><a href="#cb600-51" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb600-52"><a href="#cb600-52" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb600-53"><a href="#cb600-53" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb600-54"><a href="#cb600-54" aria-hidden="true" tabindex="-1"></a>/nested.md</span>
+<span id="cb600-55"><a href="#cb600-55" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb600-56"><a href="#cb600-56" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb600-57"><a href="#cb600-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb600-58"><a href="#cb600-58" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb600-59"><a href="#cb600-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb600-60"><a href="#cb600-60" aria-hidden="true" tabindex="-1"></a>Bar baz!</span>
+<span id="cb600-61"><a href="#cb600-61" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb600-62"><a href="#cb600-62" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb600-63"><a href="#cb600-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb548"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb548-1"><a href="#cb548-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb601"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb601-1"><a href="#cb601-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9875,51 +11016,51 @@ contain the following text:</p>
<p>Bar baz!</p>
<p><em>(The end of a document)</em></p>
</blockquote>
-<h4 data-number="2.3.1.26" id="non-breaking-space-renderer"><span
-class="header-section-number">2.3.1.26</span> Non-Breaking Space
+<h4 data-number="2.3.1.28" id="non-breaking-space-renderer"><span
+class="header-section-number">2.3.1.28</span> Non-Breaking Space
Renderer</h4>
<p>The <code>\markdownRendererNbsp</code> macro represents a
non-breaking space.</p>
-<h5 class="unnumbered" id="latex-example-79"><span
+<h5 class="unnumbered" id="latex-example-86"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.bib</code> with the following content:</p>
-<div class="sourceCode" id="cb549"><pre
-class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb549-1"><a href="#cb549-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
-<span id="cb549-2"><a href="#cb549-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
-<span id="cb549-3"><a href="#cb549-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = &quot;<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>&quot;,</span>
-<span id="cb549-4"><a href="#cb549-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
-<span id="cb549-5"><a href="#cb549-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
-<span id="cb549-6"><a href="#cb549-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb602"><pre
+class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb602-1"><a href="#cb602-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
+<span id="cb602-2"><a href="#cb602-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
+<span id="cb602-3"><a href="#cb602-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">title</span> = &quot;<span class="st">The </span><span class="ch">\TeX</span><span class="st"> book, volume A of Computers and typesetting</span>&quot;,</span>
+<span id="cb602-4"><a href="#cb602-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
+<span id="cb602-5"><a href="#cb602-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
+<span id="cb602-6"><a href="#cb602-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb550"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb550-1"><a href="#cb550-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb550-2"><a href="#cb550-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
-<span id="cb550-3"><a href="#cb550-3" aria-hidden="true" tabindex="-1"></a> citations,</span>
-<span id="cb550-4"><a href="#cb550-4" aria-hidden="true" tabindex="-1"></a> citationNbsps,</span>
-<span id="cb550-5"><a href="#cb550-5" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
-<span id="cb550-6"><a href="#cb550-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb550-7"><a href="#cb550-7" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb550-8"><a href="#cb550-8" aria-hidden="true" tabindex="-1"></a> nbsp = {<span class="ss">$</span><span class="sc">\cdot</span><span class="ss">$</span>},</span>
-<span id="cb550-9"><a href="#cb550-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb550-10"><a href="#cb550-10" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb550-11"><a href="#cb550-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb550-12"><a href="#cb550-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb550-13"><a href="#cb550-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb550-14"><a href="#cb550-14" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span>
-<span id="cb550-15"><a href="#cb550-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb550-16"><a href="#cb550-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb550-17"><a href="#cb550-17" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span>
-<span id="cb550-18"><a href="#cb550-18" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span>
-<span id="cb550-19"><a href="#cb550-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb550-20"><a href="#cb550-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb603"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb603-1"><a href="#cb603-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb603-2"><a href="#cb603-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
+<span id="cb603-3"><a href="#cb603-3" aria-hidden="true" tabindex="-1"></a> citations,</span>
+<span id="cb603-4"><a href="#cb603-4" aria-hidden="true" tabindex="-1"></a> citationNbsps,</span>
+<span id="cb603-5"><a href="#cb603-5" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
+<span id="cb603-6"><a href="#cb603-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb603-7"><a href="#cb603-7" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb603-8"><a href="#cb603-8" aria-hidden="true" tabindex="-1"></a> nbsp = {<span class="ss">$</span><span class="sc">\cdot</span><span class="ss">$</span>},</span>
+<span id="cb603-9"><a href="#cb603-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb603-10"><a href="#cb603-10" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb603-11"><a href="#cb603-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb603-12"><a href="#cb603-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb603-13"><a href="#cb603-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb603-14"><a href="#cb603-14" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</span>
+<span id="cb603-15"><a href="#cb603-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb603-16"><a href="#cb603-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb603-17"><a href="#cb603-17" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span>
+<span id="cb603-18"><a href="#cb603-18" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span>
+<span id="cb603-19"><a href="#cb603-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb603-20"><a href="#cb603-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX and BibTeX from the terminal:</p>
-<div class="sourceCode" id="cb551"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb551-1"><a href="#cb551-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb551-2"><a href="#cb551-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span>
-<span id="cb551-3"><a href="#cb551-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb551-4"><a href="#cb551-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb604"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb604-1"><a href="#cb604-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb604-2"><a href="#cb604-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span>
+<span id="cb604-3"><a href="#cb604-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb604-4"><a href="#cb604-4" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -9930,95 +11071,95 @@ href="https://datatracker.ietf.org/doc/html/rfc3986#section-4.2">1</a>
Donald Ervin Knuth. <em>The TeXbook, volume A of Computers and
typesetting.</em> Addison-Wesley, 1984.</p>
</blockquote>
-<h4 data-number="2.3.1.27" id="note-renderer"><span
-class="header-section-number">2.3.1.27</span> Note Renderer</h4>
+<h4 data-number="2.3.1.29" id="note-renderer"><span
+class="header-section-number">2.3.1.29</span> Note Renderer</h4>
<p>The <code>\markdownRendererNote</code> macro represents a note. This
macro will only be produced, when the
<strong><code>notes</code></strong> option is enabled. The macro
receives a single argument that corresponds to the note text.</p>
-<h5 class="unnumbered" id="plain-tex-example-34">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-38">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb552"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb552-1"><a href="#cb552-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb552-2"><a href="#cb552-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNotes</span>{true}</span>
-<span id="cb552-3"><a href="#cb552-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span>
-<span id="cb552-4"><a href="#cb552-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb552-5"><a href="#cb552-5" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
-<span id="cb552-6"><a href="#cb552-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb552-7"><a href="#cb552-7" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
-<span id="cb552-8"><a href="#cb552-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb552-9"><a href="#cb552-9" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
-<span id="cb552-10"><a href="#cb552-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb552-11"><a href="#cb552-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb605"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb605-1"><a href="#cb605-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb605-2"><a href="#cb605-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNotes</span>{true}</span>
+<span id="cb605-3"><a href="#cb605-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span>
+<span id="cb605-4"><a href="#cb605-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb605-5"><a href="#cb605-5" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
+<span id="cb605-6"><a href="#cb605-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb605-7"><a href="#cb605-7" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
+<span id="cb605-8"><a href="#cb605-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb605-9"><a href="#cb605-9" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
+<span id="cb605-10"><a href="#cb605-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb605-11"><a href="#cb605-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb553"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb553-1"><a href="#cb553-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb606"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb606-1"><a href="#cb606-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is some text (and this is a note) and this is some other text
(and this is some other note).</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-80"><span
+<h5 class="unnumbered" id="latex-example-87"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb554"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb554-1"><a href="#cb554-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb554-2"><a href="#cb554-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span>
-<span id="cb554-3"><a href="#cb554-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb554-4"><a href="#cb554-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb554-5"><a href="#cb554-5" aria-hidden="true" tabindex="-1"></a> note = { (and <span class="fu">\MakeLowercase</span>{#1})},</span>
-<span id="cb554-6"><a href="#cb554-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb554-7"><a href="#cb554-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb554-8"><a href="#cb554-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb554-9"><a href="#cb554-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb554-10"><a href="#cb554-10" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
-<span id="cb554-11"><a href="#cb554-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb554-12"><a href="#cb554-12" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
-<span id="cb554-13"><a href="#cb554-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb554-14"><a href="#cb554-14" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
-<span id="cb554-15"><a href="#cb554-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb554-16"><a href="#cb554-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb607"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb607-1"><a href="#cb607-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb607-2"><a href="#cb607-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span>
+<span id="cb607-3"><a href="#cb607-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb607-4"><a href="#cb607-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb607-5"><a href="#cb607-5" aria-hidden="true" tabindex="-1"></a> note = { (and <span class="fu">\MakeLowercase</span>{#1})},</span>
+<span id="cb607-6"><a href="#cb607-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb607-7"><a href="#cb607-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb607-8"><a href="#cb607-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb607-9"><a href="#cb607-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb607-10"><a href="#cb607-10" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
+<span id="cb607-11"><a href="#cb607-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb607-12"><a href="#cb607-12" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
+<span id="cb607-13"><a href="#cb607-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb607-14"><a href="#cb607-14" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
+<span id="cb607-15"><a href="#cb607-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb607-16"><a href="#cb607-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb555"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb555-1"><a href="#cb555-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb608"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb608-1"><a href="#cb608-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is some text (and this is a note) and this is some other text
(and this is some other note).</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-47">Con<span
+<h5 class="unnumbered" id="context-example-49">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb556"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb556-1"><a href="#cb556-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb556-2"><a href="#cb556-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span>
-<span id="cb556-3"><a href="#cb556-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span>
-<span id="cb556-4"><a href="#cb556-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb556-5"><a href="#cb556-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb556-6"><a href="#cb556-6" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
-<span id="cb556-7"><a href="#cb556-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb556-8"><a href="#cb556-8" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
-<span id="cb556-9"><a href="#cb556-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb556-10"><a href="#cb556-10" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
-<span id="cb556-11"><a href="#cb556-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb556-12"><a href="#cb556-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb609"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb609-1"><a href="#cb609-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb609-2"><a href="#cb609-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span>
+<span id="cb609-3"><a href="#cb609-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span>
+<span id="cb609-4"><a href="#cb609-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb609-5"><a href="#cb609-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb609-6"><a href="#cb609-6" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
+<span id="cb609-7"><a href="#cb609-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb609-8"><a href="#cb609-8" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
+<span id="cb609-9"><a href="#cb609-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb609-10"><a href="#cb609-10" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
+<span id="cb609-11"><a href="#cb609-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb609-12"><a href="#cb609-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb557"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb557-1"><a href="#cb557-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb610"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb610-1"><a href="#cb610-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is some text (and this is a note) and this is some other text
(and this is some other note).</p>
</blockquote>
-<h4 data-number="2.3.1.28" id="ordered-list-renderers"><span
-class="header-section-number">2.3.1.28</span> Ordered List
+<h4 data-number="2.3.1.30" id="ordered-list-renderers"><span
+class="header-section-number">2.3.1.30</span> Ordered List
Renderers</h4>
<p>The <code>\markdownRendererOlBegin</code> macro represents the
beginning of an ordered list that contains an item with several
@@ -10102,74 +11243,74 @@ paragraphs of text (the list is tight). This macro will only be
produced, when the <strong><code>fancyLists</code></strong> and
<strong><code>tightLists</code></strong> options are enabled. The macro
receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-35">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-39">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb558"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb558-1"><a href="#cb558-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb558-2"><a href="#cb558-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
-<span id="cb558-3"><a href="#cb558-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStartNumber</span>{true}</span>
-<span id="cb558-4"><a href="#cb558-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-5"><a href="#cb558-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb558-6"><a href="#cb558-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
-<span id="cb558-7"><a href="#cb558-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb558-8"><a href="#cb558-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb558-9"><a href="#cb558-9" aria-hidden="true" tabindex="-1"></a> the first</span>
-<span id="cb558-10"><a href="#cb558-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb558-11"><a href="#cb558-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb558-12"><a href="#cb558-12" aria-hidden="true" tabindex="-1"></a> , the second</span>
-<span id="cb558-13"><a href="#cb558-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb558-14"><a href="#cb558-14" aria-hidden="true" tabindex="-1"></a> , and the third</span>
-<span id="cb558-15"><a href="#cb558-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb558-16"><a href="#cb558-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb558-17"><a href="#cb558-17" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb558-18"><a href="#cb558-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
-<span id="cb558-19"><a href="#cb558-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
-<span id="cb558-20"><a href="#cb558-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-21"><a href="#cb558-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb558-22"><a href="#cb558-22" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb558-23"><a href="#cb558-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-24"><a href="#cb558-24" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb558-25"><a href="#cb558-25" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb558-26"><a href="#cb558-26" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb558-27"><a href="#cb558-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb558-28"><a href="#cb558-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-29"><a href="#cb558-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb558-30"><a href="#cb558-30" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb558-31"><a href="#cb558-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb558-32"><a href="#cb558-32" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb558-33"><a href="#cb558-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{}</span>
-<span id="cb558-34"><a href="#cb558-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb558-35"><a href="#cb558-35" aria-hidden="true" tabindex="-1"></a> #1.<span class="fu">\kern</span> 0.5em<span class="co">%</span></span>
-<span id="cb558-36"><a href="#cb558-36" aria-hidden="true" tabindex="-1"></a> This is the</span>
-<span id="cb558-37"><a href="#cb558-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb558-38"><a href="#cb558-38" aria-hidden="true" tabindex="-1"></a> first</span>
-<span id="cb558-39"><a href="#cb558-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb558-40"><a href="#cb558-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb558-41"><a href="#cb558-41" aria-hidden="true" tabindex="-1"></a> second</span>
-<span id="cb558-42"><a href="#cb558-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb558-43"><a href="#cb558-43" aria-hidden="true" tabindex="-1"></a> third</span>
-<span id="cb558-44"><a href="#cb558-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb558-45"><a href="#cb558-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb558-46"><a href="#cb558-46" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb558-47"><a href="#cb558-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
-<span id="cb558-48"><a href="#cb558-48" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{}</span>
-<span id="cb558-49"><a href="#cb558-49" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-50"><a href="#cb558-50" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb558-51"><a href="#cb558-51" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb558-52"><a href="#cb558-52" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-53"><a href="#cb558-53" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb558-54"><a href="#cb558-54" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-55"><a href="#cb558-55" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb558-56"><a href="#cb558-56" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-57"><a href="#cb558-57" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb558-58"><a href="#cb558-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb558-59"><a href="#cb558-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb558-60"><a href="#cb558-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb611"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb611-1"><a href="#cb611-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb611-2"><a href="#cb611-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
+<span id="cb611-3"><a href="#cb611-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStartNumber</span>{true}</span>
+<span id="cb611-4"><a href="#cb611-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-5"><a href="#cb611-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb611-6"><a href="#cb611-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
+<span id="cb611-7"><a href="#cb611-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb611-8"><a href="#cb611-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb611-9"><a href="#cb611-9" aria-hidden="true" tabindex="-1"></a> the first</span>
+<span id="cb611-10"><a href="#cb611-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb611-11"><a href="#cb611-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb611-12"><a href="#cb611-12" aria-hidden="true" tabindex="-1"></a> , the second</span>
+<span id="cb611-13"><a href="#cb611-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb611-14"><a href="#cb611-14" aria-hidden="true" tabindex="-1"></a> , and the third</span>
+<span id="cb611-15"><a href="#cb611-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb611-16"><a href="#cb611-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb611-17"><a href="#cb611-17" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb611-18"><a href="#cb611-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
+<span id="cb611-19"><a href="#cb611-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
+<span id="cb611-20"><a href="#cb611-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-21"><a href="#cb611-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb611-22"><a href="#cb611-22" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb611-23"><a href="#cb611-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-24"><a href="#cb611-24" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb611-25"><a href="#cb611-25" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb611-26"><a href="#cb611-26" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb611-27"><a href="#cb611-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb611-28"><a href="#cb611-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-29"><a href="#cb611-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb611-30"><a href="#cb611-30" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb611-31"><a href="#cb611-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb611-32"><a href="#cb611-32" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb611-33"><a href="#cb611-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{}</span>
+<span id="cb611-34"><a href="#cb611-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb611-35"><a href="#cb611-35" aria-hidden="true" tabindex="-1"></a> #1.<span class="fu">\kern</span> 0.5em<span class="co">%</span></span>
+<span id="cb611-36"><a href="#cb611-36" aria-hidden="true" tabindex="-1"></a> This is the</span>
+<span id="cb611-37"><a href="#cb611-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb611-38"><a href="#cb611-38" aria-hidden="true" tabindex="-1"></a> first</span>
+<span id="cb611-39"><a href="#cb611-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb611-40"><a href="#cb611-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb611-41"><a href="#cb611-41" aria-hidden="true" tabindex="-1"></a> second</span>
+<span id="cb611-42"><a href="#cb611-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb611-43"><a href="#cb611-43" aria-hidden="true" tabindex="-1"></a> third</span>
+<span id="cb611-44"><a href="#cb611-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb611-45"><a href="#cb611-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb611-46"><a href="#cb611-46" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb611-47"><a href="#cb611-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
+<span id="cb611-48"><a href="#cb611-48" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{}</span>
+<span id="cb611-49"><a href="#cb611-49" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-50"><a href="#cb611-50" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb611-51"><a href="#cb611-51" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb611-52"><a href="#cb611-52" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-53"><a href="#cb611-53" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb611-54"><a href="#cb611-54" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-55"><a href="#cb611-55" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb611-56"><a href="#cb611-56" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-57"><a href="#cb611-57" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb611-58"><a href="#cb611-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb611-59"><a href="#cb611-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-60"><a href="#cb611-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb559"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb559-1"><a href="#cb559-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb612"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb612-1"><a href="#cb612-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -10182,77 +11323,77 @@ item).</p>
<li><p>This is the third item.</p></li>
</ol>
</blockquote>
-<h5 class="unnumbered" id="latex-example-81"><span
+<h5 class="unnumbered" id="latex-example-88"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb560"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb560-1"><a href="#cb560-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb560-2"><a href="#cb560-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists, startNumber]{<span class="ex">markdown</span>}</span>
-<span id="cb560-3"><a href="#cb560-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb560-4"><a href="#cb560-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb560-5"><a href="#cb560-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span>
-<span id="cb560-6"><a href="#cb560-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb560-7"><a href="#cb560-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
-<span id="cb560-8"><a href="#cb560-8" aria-hidden="true" tabindex="-1"></a> olBeginTight = { (},</span>
-<span id="cb560-9"><a href="#cb560-9" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
-<span id="cb560-10"><a href="#cb560-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb560-11"><a href="#cb560-11" aria-hidden="true" tabindex="-1"></a> the first</span>
-<span id="cb560-12"><a href="#cb560-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb560-13"><a href="#cb560-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb560-14"><a href="#cb560-14" aria-hidden="true" tabindex="-1"></a> , the second</span>
-<span id="cb560-15"><a href="#cb560-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb560-16"><a href="#cb560-16" aria-hidden="true" tabindex="-1"></a> , and the third</span>
-<span id="cb560-17"><a href="#cb560-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb560-18"><a href="#cb560-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb560-19"><a href="#cb560-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb560-20"><a href="#cb560-20" aria-hidden="true" tabindex="-1"></a> olItemEnd = {},</span>
-<span id="cb560-21"><a href="#cb560-21" aria-hidden="true" tabindex="-1"></a> olEndTight = {).},</span>
-<span id="cb560-22"><a href="#cb560-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb560-23"><a href="#cb560-23" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb560-24"><a href="#cb560-24" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb560-25"><a href="#cb560-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb560-26"><a href="#cb560-26" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb560-27"><a href="#cb560-27" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb560-28"><a href="#cb560-28" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb560-29"><a href="#cb560-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb560-30"><a href="#cb560-30" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb560-31"><a href="#cb560-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span>
-<span id="cb560-32"><a href="#cb560-32" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb560-33"><a href="#cb560-33" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb560-34"><a href="#cb560-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb560-35"><a href="#cb560-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb560-36"><a href="#cb560-36" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb560-37"><a href="#cb560-37" aria-hidden="true" tabindex="-1"></a> olBeginTight = {<span class="kw">\begin</span>{<span class="ex">enumerate</span>}},</span>
-<span id="cb560-38"><a href="#cb560-38" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
-<span id="cb560-39"><a href="#cb560-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span> This is the</span>
-<span id="cb560-40"><a href="#cb560-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb560-41"><a href="#cb560-41" aria-hidden="true" tabindex="-1"></a> first</span>
-<span id="cb560-42"><a href="#cb560-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb560-43"><a href="#cb560-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb560-44"><a href="#cb560-44" aria-hidden="true" tabindex="-1"></a> second</span>
-<span id="cb560-45"><a href="#cb560-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb560-46"><a href="#cb560-46" aria-hidden="true" tabindex="-1"></a> third</span>
-<span id="cb560-47"><a href="#cb560-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb560-48"><a href="#cb560-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb560-49"><a href="#cb560-49" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb560-50"><a href="#cb560-50" aria-hidden="true" tabindex="-1"></a> olItemEnd = {.},</span>
-<span id="cb560-51"><a href="#cb560-51" aria-hidden="true" tabindex="-1"></a> olEnd = {<span class="kw">\end</span>{<span class="ex">enumerate</span>}},</span>
-<span id="cb560-52"><a href="#cb560-52" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb560-53"><a href="#cb560-53" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb560-54"><a href="#cb560-54" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb560-55"><a href="#cb560-55" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb560-56"><a href="#cb560-56" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb560-57"><a href="#cb560-57" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb560-58"><a href="#cb560-58" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb560-59"><a href="#cb560-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb560-60"><a href="#cb560-60" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb560-61"><a href="#cb560-61" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb560-62"><a href="#cb560-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb560-63"><a href="#cb560-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb613"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb613-1"><a href="#cb613-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb613-2"><a href="#cb613-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists, startNumber]{<span class="ex">markdown</span>}</span>
+<span id="cb613-3"><a href="#cb613-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb613-4"><a href="#cb613-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-5"><a href="#cb613-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb613-6"><a href="#cb613-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb613-7"><a href="#cb613-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
+<span id="cb613-8"><a href="#cb613-8" aria-hidden="true" tabindex="-1"></a> olBeginTight = { (},</span>
+<span id="cb613-9"><a href="#cb613-9" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
+<span id="cb613-10"><a href="#cb613-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb613-11"><a href="#cb613-11" aria-hidden="true" tabindex="-1"></a> the first</span>
+<span id="cb613-12"><a href="#cb613-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb613-13"><a href="#cb613-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb613-14"><a href="#cb613-14" aria-hidden="true" tabindex="-1"></a> , the second</span>
+<span id="cb613-15"><a href="#cb613-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb613-16"><a href="#cb613-16" aria-hidden="true" tabindex="-1"></a> , and the third</span>
+<span id="cb613-17"><a href="#cb613-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb613-18"><a href="#cb613-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb613-19"><a href="#cb613-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb613-20"><a href="#cb613-20" aria-hidden="true" tabindex="-1"></a> olItemEnd = {},</span>
+<span id="cb613-21"><a href="#cb613-21" aria-hidden="true" tabindex="-1"></a> olEndTight = {).},</span>
+<span id="cb613-22"><a href="#cb613-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb613-23"><a href="#cb613-23" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb613-24"><a href="#cb613-24" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb613-25"><a href="#cb613-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-26"><a href="#cb613-26" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb613-27"><a href="#cb613-27" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb613-28"><a href="#cb613-28" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb613-29"><a href="#cb613-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb613-30"><a href="#cb613-30" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-31"><a href="#cb613-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb613-32"><a href="#cb613-32" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb613-33"><a href="#cb613-33" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb613-34"><a href="#cb613-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb613-35"><a href="#cb613-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb613-36"><a href="#cb613-36" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb613-37"><a href="#cb613-37" aria-hidden="true" tabindex="-1"></a> olBeginTight = {<span class="kw">\begin</span>{<span class="ex">enumerate</span>}},</span>
+<span id="cb613-38"><a href="#cb613-38" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
+<span id="cb613-39"><a href="#cb613-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span> This is the</span>
+<span id="cb613-40"><a href="#cb613-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb613-41"><a href="#cb613-41" aria-hidden="true" tabindex="-1"></a> first</span>
+<span id="cb613-42"><a href="#cb613-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb613-43"><a href="#cb613-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb613-44"><a href="#cb613-44" aria-hidden="true" tabindex="-1"></a> second</span>
+<span id="cb613-45"><a href="#cb613-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb613-46"><a href="#cb613-46" aria-hidden="true" tabindex="-1"></a> third</span>
+<span id="cb613-47"><a href="#cb613-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb613-48"><a href="#cb613-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb613-49"><a href="#cb613-49" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb613-50"><a href="#cb613-50" aria-hidden="true" tabindex="-1"></a> olItemEnd = {.},</span>
+<span id="cb613-51"><a href="#cb613-51" aria-hidden="true" tabindex="-1"></a> olEnd = {<span class="kw">\end</span>{<span class="ex">enumerate</span>}},</span>
+<span id="cb613-52"><a href="#cb613-52" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb613-53"><a href="#cb613-53" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb613-54"><a href="#cb613-54" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb613-55"><a href="#cb613-55" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-56"><a href="#cb613-56" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb613-57"><a href="#cb613-57" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-58"><a href="#cb613-58" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb613-59"><a href="#cb613-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-60"><a href="#cb613-60" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb613-61"><a href="#cb613-61" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb613-62"><a href="#cb613-62" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-63"><a href="#cb613-63" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb561"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb561-1"><a href="#cb561-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb614"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb614-1"><a href="#cb614-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -10265,78 +11406,78 @@ item).</p>
<li><p>This is the third item.</p></li>
</ol>
</blockquote>
-<h5 class="unnumbered" id="context-example-48">Con<span
+<h5 class="unnumbered" id="context-example-50">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb562"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb562-1"><a href="#cb562-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb562-2"><a href="#cb562-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb562-3"><a href="#cb562-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb562-4"><a href="#cb562-4" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span>
-<span id="cb562-5"><a href="#cb562-5" aria-hidden="true" tabindex="-1"></a> startNumber = yes,</span>
-<span id="cb562-6"><a href="#cb562-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb562-7"><a href="#cb562-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb562-8"><a href="#cb562-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-9"><a href="#cb562-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb562-10"><a href="#cb562-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
-<span id="cb562-11"><a href="#cb562-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb562-12"><a href="#cb562-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb562-13"><a href="#cb562-13" aria-hidden="true" tabindex="-1"></a> the first</span>
-<span id="cb562-14"><a href="#cb562-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb562-15"><a href="#cb562-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb562-16"><a href="#cb562-16" aria-hidden="true" tabindex="-1"></a> , the second</span>
-<span id="cb562-17"><a href="#cb562-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb562-18"><a href="#cb562-18" aria-hidden="true" tabindex="-1"></a> , and the third</span>
-<span id="cb562-19"><a href="#cb562-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb562-20"><a href="#cb562-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb562-21"><a href="#cb562-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb562-22"><a href="#cb562-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
-<span id="cb562-23"><a href="#cb562-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
-<span id="cb562-24"><a href="#cb562-24" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-25"><a href="#cb562-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb562-26"><a href="#cb562-26" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb562-27"><a href="#cb562-27" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-28"><a href="#cb562-28" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb562-29"><a href="#cb562-29" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb562-30"><a href="#cb562-30" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb562-31"><a href="#cb562-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb562-32"><a href="#cb562-32" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-33"><a href="#cb562-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb562-34"><a href="#cb562-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb562-35"><a href="#cb562-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
-<span id="cb562-36"><a href="#cb562-36" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb562-37"><a href="#cb562-37" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{<span class="fu">\startitemize</span>}</span>
-<span id="cb562-38"><a href="#cb562-38" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb562-39"><a href="#cb562-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\sym</span>{#1.}</span>
-<span id="cb562-40"><a href="#cb562-40" aria-hidden="true" tabindex="-1"></a> This is the</span>
-<span id="cb562-41"><a href="#cb562-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb562-42"><a href="#cb562-42" aria-hidden="true" tabindex="-1"></a> first</span>
-<span id="cb562-43"><a href="#cb562-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb562-44"><a href="#cb562-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb562-45"><a href="#cb562-45" aria-hidden="true" tabindex="-1"></a> second</span>
-<span id="cb562-46"><a href="#cb562-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb562-47"><a href="#cb562-47" aria-hidden="true" tabindex="-1"></a> third</span>
-<span id="cb562-48"><a href="#cb562-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb562-49"><a href="#cb562-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb562-50"><a href="#cb562-50" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb562-51"><a href="#cb562-51" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
-<span id="cb562-52"><a href="#cb562-52" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{<span class="fu">\stopitemize</span>}</span>
-<span id="cb562-53"><a href="#cb562-53" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-54"><a href="#cb562-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb562-55"><a href="#cb562-55" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb562-56"><a href="#cb562-56" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-57"><a href="#cb562-57" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb562-58"><a href="#cb562-58" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-59"><a href="#cb562-59" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb562-60"><a href="#cb562-60" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-61"><a href="#cb562-61" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb562-62"><a href="#cb562-62" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb562-63"><a href="#cb562-63" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb562-64"><a href="#cb562-64" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb615"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb615-1"><a href="#cb615-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb615-2"><a href="#cb615-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb615-3"><a href="#cb615-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb615-4"><a href="#cb615-4" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span>
+<span id="cb615-5"><a href="#cb615-5" aria-hidden="true" tabindex="-1"></a> startNumber = yes,</span>
+<span id="cb615-6"><a href="#cb615-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb615-7"><a href="#cb615-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb615-8"><a href="#cb615-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-9"><a href="#cb615-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb615-10"><a href="#cb615-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
+<span id="cb615-11"><a href="#cb615-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb615-12"><a href="#cb615-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb615-13"><a href="#cb615-13" aria-hidden="true" tabindex="-1"></a> the first</span>
+<span id="cb615-14"><a href="#cb615-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-15"><a href="#cb615-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb615-16"><a href="#cb615-16" aria-hidden="true" tabindex="-1"></a> , the second</span>
+<span id="cb615-17"><a href="#cb615-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-18"><a href="#cb615-18" aria-hidden="true" tabindex="-1"></a> , and the third</span>
+<span id="cb615-19"><a href="#cb615-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-20"><a href="#cb615-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-21"><a href="#cb615-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb615-22"><a href="#cb615-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
+<span id="cb615-23"><a href="#cb615-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
+<span id="cb615-24"><a href="#cb615-24" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-25"><a href="#cb615-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb615-26"><a href="#cb615-26" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb615-27"><a href="#cb615-27" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-28"><a href="#cb615-28" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb615-29"><a href="#cb615-29" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb615-30"><a href="#cb615-30" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb615-31"><a href="#cb615-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb615-32"><a href="#cb615-32" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-33"><a href="#cb615-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb615-34"><a href="#cb615-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb615-35"><a href="#cb615-35" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="fu">\par</span>}<span class="co">%</span></span>
+<span id="cb615-36"><a href="#cb615-36" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb615-37"><a href="#cb615-37" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{<span class="fu">\startitemize</span>}</span>
+<span id="cb615-38"><a href="#cb615-38" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb615-39"><a href="#cb615-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\sym</span>{#1.}</span>
+<span id="cb615-40"><a href="#cb615-40" aria-hidden="true" tabindex="-1"></a> This is the</span>
+<span id="cb615-41"><a href="#cb615-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb615-42"><a href="#cb615-42" aria-hidden="true" tabindex="-1"></a> first</span>
+<span id="cb615-43"><a href="#cb615-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-44"><a href="#cb615-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb615-45"><a href="#cb615-45" aria-hidden="true" tabindex="-1"></a> second</span>
+<span id="cb615-46"><a href="#cb615-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-47"><a href="#cb615-47" aria-hidden="true" tabindex="-1"></a> third</span>
+<span id="cb615-48"><a href="#cb615-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-49"><a href="#cb615-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-50"><a href="#cb615-50" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb615-51"><a href="#cb615-51" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
+<span id="cb615-52"><a href="#cb615-52" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{<span class="fu">\stopitemize</span>}</span>
+<span id="cb615-53"><a href="#cb615-53" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-54"><a href="#cb615-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb615-55"><a href="#cb615-55" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb615-56"><a href="#cb615-56" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-57"><a href="#cb615-57" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb615-58"><a href="#cb615-58" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-59"><a href="#cb615-59" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb615-60"><a href="#cb615-60" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-61"><a href="#cb615-61" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb615-62"><a href="#cb615-62" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb615-63"><a href="#cb615-63" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-64"><a href="#cb615-64" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb563"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb563-1"><a href="#cb563-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb616"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb616-1"><a href="#cb616-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -10349,75 +11490,8 @@ item).</p>
<li><p>This is the third item.</p></li>
</ol>
</blockquote>
-<h4 data-number="2.3.1.29" id="parenthesized-citations-renderer"><span
-class="header-section-number">2.3.1.29</span> Parenthesized Citations
-Renderer</h4>
-<p>The <code>\markdownRendererCite</code> macro represents a string of
-one or more parenthetical citations. This macro will only be produced,
-when the <strong><code>citations</code></strong> option is enabled. The
-macro receives the parameter <code>{</code>⟨<em>number of
-citations</em>⟩<code>}</code> followed by ⟨<em>suppress author</em>⟩
-<code>{</code>⟨<em>prenote</em>⟩<code>}{</code>⟨<em>postnote</em>⟩<code>}{</code>⟨<em>name</em>⟩<code>}</code>
-repeated ⟨<em>number of citations</em>⟩ times. The ⟨<em>suppress
-author</em>⟩ parameter is either the token <code>-</code>, when the
-author’s name is to be suppressed, or <code>+</code> otherwise.</p>
-<h5 class="unnumbered" id="latex-example-82"><span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
-<p>Using a text editor, create a text document named
-<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb564"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb564-1"><a href="#cb564-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb564-2"><a href="#cb564-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
-<span id="cb564-3"><a href="#cb564-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
-<span id="cb564-4"><a href="#cb564-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
-<span id="cb564-5"><a href="#cb564-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
-<span id="cb564-6"><a href="#cb564-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb564-7"><a href="#cb564-7" aria-hidden="true" tabindex="-1"></a> a parenthesized citation <span class="fu">\emph</span>{#4}</span>
-<span id="cb564-8"><a href="#cb564-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb564-9"><a href="#cb564-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
-<span id="cb564-10"><a href="#cb564-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb564-11"><a href="#cb564-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
-<span id="cb564-12"><a href="#cb564-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb564-13"><a href="#cb564-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb564-14"><a href="#cb564-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
-<span id="cb564-15"><a href="#cb564-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb564-16"><a href="#cb564-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
-<span id="cb564-17"><a href="#cb564-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb564-18"><a href="#cb564-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb564-19"><a href="#cb564-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
-<span id="cb564-20"><a href="#cb564-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
-<span id="cb564-21"><a href="#cb564-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
-<span id="cb564-22"><a href="#cb564-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb564-23"><a href="#cb564-23" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb564-24"><a href="#cb564-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
-<span id="cb564-25"><a href="#cb564-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
-<span id="cb564-26"><a href="#cb564-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb564-27"><a href="#cb564-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb564-28"><a href="#cb564-28" aria-hidden="true" tabindex="-1"></a> cite = {<span class="co">%</span></span>
-<span id="cb564-29"><a href="#cb564-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
-<span id="cb564-30"><a href="#cb564-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
-<span id="cb564-31"><a href="#cb564-31" aria-hidden="true" tabindex="-1"></a> This is</span>
-<span id="cb564-32"><a href="#cb564-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span>
-<span id="cb564-33"><a href="#cb564-33" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb564-34"><a href="#cb564-34" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb564-35"><a href="#cb564-35" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb564-36"><a href="#cb564-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb564-37"><a href="#cb564-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb564-38"><a href="#cb564-38" aria-hidden="true" tabindex="-1"></a>[see @abrahams90, pp. 12; @eijkhout91, pp. 34]</span>
-<span id="cb564-39"><a href="#cb564-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb564-40"><a href="#cb564-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb565"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb565-1"><a href="#cb565-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
-<p>A PDF document named <code>document.pdf</code> should be produced and
-contain the following text:</p>
-<blockquote>
-<p>This is a parenthesized citation <em>abrahams90</em> with a prefix
-see and a postfix <em>pp. 12</em>, and a citation <em>eijkhout91</em>
-with a postfix <em>pp. 34</em>.</p>
-</blockquote>
-<h4 data-number="2.3.1.30" id="raw-content-renderers"><span
-class="header-section-number">2.3.1.30</span> Raw Content Renderers</h4>
+<h4 data-number="2.3.1.31" id="raw-content-renderers"><span
+class="header-section-number">2.3.1.31</span> Raw Content Renderers</h4>
<p>The <code>\markdownRendererInputRawInline</code> macro represents an
inline raw span. The macro receives two arguments: the filename of a
file contaning the inline raw span contents and the raw attribute that
@@ -10430,63 +11504,63 @@ contaning the raw block and the raw attribute that designates the format
of the raw block. This macro will only be produced, when the
<strong><code>rawAttribute</code></strong> and
<strong><code>fencedCode</code></strong> options are enabled.</p>
-<h5 class="unnumbered" id="latex-example-83"><span
+<h5 class="unnumbered" id="latex-example-89"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb566"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb566-1"><a href="#cb566-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb566-2"><a href="#cb566-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb566-3"><a href="#cb566-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb566-4"><a href="#cb566-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb566-5"><a href="#cb566-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\cs</span>_new:Nn</span>
-<span id="cb566-6"><a href="#cb566-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\display</span>_raw_content:nn</span>
-<span id="cb566-7"><a href="#cb566-7" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb566-8"><a href="#cb566-8" aria-hidden="true" tabindex="-1"></a> <span class="co">% If the raw attribute is TeX, execute the content as a TeX document.</span></span>
-<span id="cb566-9"><a href="#cb566-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnTF</span>
-<span id="cb566-10"><a href="#cb566-10" aria-hidden="true" tabindex="-1"></a> { #2 }</span>
-<span id="cb566-11"><a href="#cb566-11" aria-hidden="true" tabindex="-1"></a> { tex }</span>
-<span id="cb566-12"><a href="#cb566-12" aria-hidden="true" tabindex="-1"></a> { <span class="fu">\markdownEscape</span> { #1 } }</span>
-<span id="cb566-13"><a href="#cb566-13" aria-hidden="true" tabindex="-1"></a> <span class="co">% Otherwise, ignore the content.</span></span>
-<span id="cb566-14"><a href="#cb566-14" aria-hidden="true" tabindex="-1"></a> { }</span>
-<span id="cb566-15"><a href="#cb566-15" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb566-16"><a href="#cb566-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb566-17"><a href="#cb566-17" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb566-18"><a href="#cb566-18" aria-hidden="true" tabindex="-1"></a> rawInline = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } },</span>
-<span id="cb566-19"><a href="#cb566-19" aria-hidden="true" tabindex="-1"></a> rawBlock = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } }</span>
-<span id="cb566-20"><a href="#cb566-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb566-21"><a href="#cb566-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb566-22"><a href="#cb566-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb566-23"><a href="#cb566-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb566-24"><a href="#cb566-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb566-25"><a href="#cb566-25" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span>
-<span id="cb566-26"><a href="#cb566-26" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb566-27"><a href="#cb566-27" aria-hidden="true" tabindex="-1"></a>``` {=html}</span>
-<span id="cb566-28"><a href="#cb566-28" aria-hidden="true" tabindex="-1"></a>&lt;p&gt;Here is some HTML content that will be ignored.&lt;/p&gt;</span>
-<span id="cb566-29"><a href="#cb566-29" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb566-30"><a href="#cb566-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb566-31"><a href="#cb566-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb617"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb617-1"><a href="#cb617-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb617-2"><a href="#cb617-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
+<span id="cb617-3"><a href="#cb617-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb617-4"><a href="#cb617-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb617-5"><a href="#cb617-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\cs</span>_new:Nn</span>
+<span id="cb617-6"><a href="#cb617-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\display</span>_raw_content:nn</span>
+<span id="cb617-7"><a href="#cb617-7" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb617-8"><a href="#cb617-8" aria-hidden="true" tabindex="-1"></a> <span class="co">% If the raw attribute is TeX, execute the content as a TeX document.</span></span>
+<span id="cb617-9"><a href="#cb617-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnTF</span>
+<span id="cb617-10"><a href="#cb617-10" aria-hidden="true" tabindex="-1"></a> { #2 }</span>
+<span id="cb617-11"><a href="#cb617-11" aria-hidden="true" tabindex="-1"></a> { tex }</span>
+<span id="cb617-12"><a href="#cb617-12" aria-hidden="true" tabindex="-1"></a> { <span class="fu">\markdownEscape</span> { #1 } }</span>
+<span id="cb617-13"><a href="#cb617-13" aria-hidden="true" tabindex="-1"></a> <span class="co">% Otherwise, ignore the content.</span></span>
+<span id="cb617-14"><a href="#cb617-14" aria-hidden="true" tabindex="-1"></a> { }</span>
+<span id="cb617-15"><a href="#cb617-15" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb617-16"><a href="#cb617-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb617-17"><a href="#cb617-17" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb617-18"><a href="#cb617-18" aria-hidden="true" tabindex="-1"></a> rawInline = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } },</span>
+<span id="cb617-19"><a href="#cb617-19" aria-hidden="true" tabindex="-1"></a> rawBlock = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } }</span>
+<span id="cb617-20"><a href="#cb617-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb617-21"><a href="#cb617-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb617-22"><a href="#cb617-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb617-23"><a href="#cb617-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb617-24"><a href="#cb617-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb617-25"><a href="#cb617-25" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span>
+<span id="cb617-26"><a href="#cb617-26" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-27"><a href="#cb617-27" aria-hidden="true" tabindex="-1"></a>``` {=html}</span>
+<span id="cb617-28"><a href="#cb617-28" aria-hidden="true" tabindex="-1"></a>&lt;p&gt;Here is some HTML content that will be ignored.&lt;/p&gt;</span>
+<span id="cb617-29"><a href="#cb617-29" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb617-30"><a href="#cb617-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb617-31"><a href="#cb617-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb567"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb567-1"><a href="#cb567-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb618"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb618-1"><a href="#cb618-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>H<sub>2</sub>O is a liquid.</p>
</blockquote>
-<h4 data-number="2.3.1.31" id="section-renderers"><span
-class="header-section-number">2.3.1.31</span> Section Renderers</h4>
+<h4 data-number="2.3.1.32" id="section-renderers"><span
+class="header-section-number">2.3.1.32</span> Section Renderers</h4>
<p>The <code>\markdownRendererSectionBegin</code> and
<code>\markdownRendererSectionEnd</code> macros represent the beginning
and the end of a section based on headings.</p>
-<h4 data-number="2.3.1.32" id="replacement-character-renderers"><span
-class="header-section-number">2.3.1.32</span> Replacement Character
+<h4 data-number="2.3.1.33" id="replacement-character-renderers"><span
+class="header-section-number">2.3.1.33</span> Replacement Character
Renderers</h4>
<p>The <code>\markdownRendererReplacementCharacter</code> macro
represents the U+0000 and U+FFFD Unicode characters. The macro receives
no arguments.</p>
-<h4 data-number="2.3.1.33" id="special-character-renderers"><span
-class="header-section-number">2.3.1.33</span> Special Character
+<h4 data-number="2.3.1.34" id="special-character-renderers"><span
+class="header-section-number">2.3.1.34</span> Special Character
Renderers</h4>
<p>The following macros replace any special plain <span
class="tex">T<sub>e</sub>X</span> characters, including the active pipe
@@ -10516,306 +11590,407 @@ class="tex">T<sub>e</sub>X</span>t, in the input text:</p>
<li><code>\markdownRendererUnderscore</code> replaces the underscore
(<code>_</code>).</li>
</ul>
-<h5 class="unnumbered" id="plain-tex-example-36">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-40">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content. We will make the
tilde behave as if it were written in <span
class="tex">T<sub>e</sub>X</span>, where it represents a non-breaking
space.</p>
-<div class="sourceCode" id="cb568"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb568-1"><a href="#cb568-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb568-2"><a href="#cb568-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span>
-<span id="cb568-3"><a href="#cb568-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb568-4"><a href="#cb568-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb568-5"><a href="#cb568-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb568-6"><a href="#cb568-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb619"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb619-1"><a href="#cb619-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb619-2"><a href="#cb619-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span>
+<span id="cb619-3"><a href="#cb619-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb619-4"><a href="#cb619-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb619-5"><a href="#cb619-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb619-6"><a href="#cb619-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb569"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb569-1"><a href="#cb569-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb620"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb620-1"><a href="#cb620-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text, where the middot (<code>·</code>) denotes a
non-breaking space:</p>
<blockquote>
<p>Bartel·Leendert van·der·Waerden</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-84"><span
+<h5 class="unnumbered" id="latex-example-90"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content. We will make the
tilde behave as if it were written in <span
class="tex">T<sub>e</sub>X</span>, where it represents a non-breaking
space.</p>
-<div class="sourceCode" id="cb570"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb570-1"><a href="#cb570-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb570-2"><a href="#cb570-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb570-3"><a href="#cb570-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb570-4"><a href="#cb570-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb570-5"><a href="#cb570-5" aria-hidden="true" tabindex="-1"></a> tilde = ~,</span>
-<span id="cb570-6"><a href="#cb570-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb570-7"><a href="#cb570-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb570-8"><a href="#cb570-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb570-9"><a href="#cb570-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb570-10"><a href="#cb570-10" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb570-11"><a href="#cb570-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb570-12"><a href="#cb570-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb621"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb621-1"><a href="#cb621-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb621-2"><a href="#cb621-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb621-3"><a href="#cb621-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb621-4"><a href="#cb621-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb621-5"><a href="#cb621-5" aria-hidden="true" tabindex="-1"></a> tilde = ~,</span>
+<span id="cb621-6"><a href="#cb621-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb621-7"><a href="#cb621-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb621-8"><a href="#cb621-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb621-9"><a href="#cb621-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb621-10"><a href="#cb621-10" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb621-11"><a href="#cb621-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb621-12"><a href="#cb621-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb571"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb571-1"><a href="#cb571-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb622"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb622-1"><a href="#cb622-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text, where the middot (<code>·</code>) denotes a
non-breaking space:</p>
<blockquote>
<p>Bartel·Leendert van·der·Waerden</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-49">Con<span
+<h5 class="unnumbered" id="context-example-51">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content. We will make the
tilde behave as if it were written in <span
class="tex">T<sub>e</sub>X</span>, where it represents a non-breaking
space.</p>
-<div class="sourceCode" id="cb572"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb572-1"><a href="#cb572-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb572-2"><a href="#cb572-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span>
-<span id="cb572-3"><a href="#cb572-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb572-4"><a href="#cb572-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb572-5"><a href="#cb572-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb572-6"><a href="#cb572-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb572-7"><a href="#cb572-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb623"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb623-1"><a href="#cb623-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb623-2"><a href="#cb623-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span>
+<span id="cb623-3"><a href="#cb623-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb623-4"><a href="#cb623-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb623-5"><a href="#cb623-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb623-6"><a href="#cb623-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb623-7"><a href="#cb623-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb573"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb573-1"><a href="#cb573-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb624"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb624-1"><a href="#cb624-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text, where the middot (<code>·</code>) denotes a
non-breaking space:</p>
<blockquote>
<p>Bartel·Leendert van·der·Waerden</p>
</blockquote>
-<h4 data-number="2.3.1.34" id="strike-through-renderer"><span
-class="header-section-number">2.3.1.34</span> Strike-Through
+<h4 data-number="2.3.1.35" id="strike-through-renderer"><span
+class="header-section-number">2.3.1.35</span> Strike-Through
Renderer</h4>
<p>The <code>\markdownRendererStrikeThrough</code> macro represents a
strike-through span of text. The macro receives a single argument that
corresponds to the striked-out span of text. This macro will only be
produced, when the <strong><code>strikeThrough</code></strong> option is
enabled.</p>
-<h5 class="unnumbered" id="plain-tex-example-37">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-41">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb574"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb574-1"><a href="#cb574-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb574-2"><a href="#cb574-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
-<span id="cb574-3"><a href="#cb574-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span>
-<span id="cb574-4"><a href="#cb574-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
-<span id="cb574-5"><a href="#cb574-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb574-6"><a href="#cb574-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb574-7"><a href="#cb574-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb574-8"><a href="#cb574-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb625"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb625-1"><a href="#cb625-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb625-2"><a href="#cb625-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
+<span id="cb625-3"><a href="#cb625-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span>
+<span id="cb625-4"><a href="#cb625-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
+<span id="cb625-5"><a href="#cb625-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb625-6"><a href="#cb625-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb625-7"><a href="#cb625-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb625-8"><a href="#cb625-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb575"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb575-1"><a href="#cb575-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb626"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb626-1"><a href="#cb626-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <del>a lunar roving vehicle</del> strike-through text.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-85"><span
+<h5 class="unnumbered" id="latex-example-91"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb576"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb576-1"><a href="#cb576-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb576-2"><a href="#cb576-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span>
-<span id="cb576-3"><a href="#cb576-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span>
-<span id="cb576-4"><a href="#cb576-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb576-5"><a href="#cb576-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb576-6"><a href="#cb576-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
-<span id="cb576-7"><a href="#cb576-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb576-8"><a href="#cb576-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb576-9"><a href="#cb576-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb576-10"><a href="#cb576-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb576-11"><a href="#cb576-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb576-12"><a href="#cb576-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb576-13"><a href="#cb576-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb627"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb627-1"><a href="#cb627-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb627-2"><a href="#cb627-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span>
+<span id="cb627-3"><a href="#cb627-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span>
+<span id="cb627-4"><a href="#cb627-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb627-5"><a href="#cb627-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb627-6"><a href="#cb627-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
+<span id="cb627-7"><a href="#cb627-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb627-8"><a href="#cb627-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb627-9"><a href="#cb627-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb627-10"><a href="#cb627-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb627-11"><a href="#cb627-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb627-12"><a href="#cb627-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb627-13"><a href="#cb627-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb577"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb577-1"><a href="#cb577-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb628"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb628-1"><a href="#cb628-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <del>a lunar roving vehicle</del> strike-through text.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-50">Con<span
+<h5 class="unnumbered" id="context-example-52">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb578"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb578-1"><a href="#cb578-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb578-2"><a href="#cb578-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
-<span id="cb578-3"><a href="#cb578-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
-<span id="cb578-4"><a href="#cb578-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb578-5"><a href="#cb578-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb578-6"><a href="#cb578-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb578-7"><a href="#cb578-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb578-8"><a href="#cb578-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb629"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb629-1"><a href="#cb629-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb629-2"><a href="#cb629-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
+<span id="cb629-3"><a href="#cb629-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
+<span id="cb629-4"><a href="#cb629-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb629-5"><a href="#cb629-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb629-6"><a href="#cb629-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb629-7"><a href="#cb629-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb629-8"><a href="#cb629-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb579"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb579-1"><a href="#cb579-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb630"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb630-1"><a href="#cb630-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>This is <del>a lunar roving vehicle</del> strike-through text.</p>
</blockquote>
-<h4 data-number="2.3.1.35" id="subscript-renderer"><span
-class="header-section-number">2.3.1.35</span> Subscript Renderer</h4>
+<h4 data-number="2.3.1.36" id="subscript-renderer"><span
+class="header-section-number">2.3.1.36</span> Subscript Renderer</h4>
<p>The <code>\markdownRendererSubscript</code> macro represents a
subscript span of text. The macro receives a single argument that
corresponds to the subscript span of text. This macro will only be
produced, when the <strong><code>subscripts</code></strong> option is
enabled.</p>
-<h5 class="unnumbered" id="plain-tex-example-38">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-42">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb580"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb580-1"><a href="#cb580-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb580-2"><a href="#cb580-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSubscripts</span>{true}</span>
-<span id="cb580-3"><a href="#cb580-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span>
-<span id="cb580-4"><a href="#cb580-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb580-5"><a href="#cb580-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb580-6"><a href="#cb580-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb580-7"><a href="#cb580-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb631"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb631-1"><a href="#cb631-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb631-2"><a href="#cb631-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSubscripts</span>{true}</span>
+<span id="cb631-3"><a href="#cb631-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span>
+<span id="cb631-4"><a href="#cb631-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb631-5"><a href="#cb631-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb631-6"><a href="#cb631-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb631-7"><a href="#cb631-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb581"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb581-1"><a href="#cb581-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb632"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb632-1"><a href="#cb632-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>H (2 moles) and O is a liquid.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-86"><span
+<h5 class="unnumbered" id="latex-example-92"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb582"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb582-1"><a href="#cb582-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb582-2"><a href="#cb582-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb582-3"><a href="#cb582-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb582-4"><a href="#cb582-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb582-5"><a href="#cb582-5" aria-hidden="true" tabindex="-1"></a> subscript = { (#1 moles) and },</span>
-<span id="cb582-6"><a href="#cb582-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb582-7"><a href="#cb582-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb582-8"><a href="#cb582-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb582-9"><a href="#cb582-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb582-10"><a href="#cb582-10" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb582-11"><a href="#cb582-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb582-12"><a href="#cb582-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb633"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb633-1"><a href="#cb633-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb633-2"><a href="#cb633-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb633-3"><a href="#cb633-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb633-4"><a href="#cb633-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb633-5"><a href="#cb633-5" aria-hidden="true" tabindex="-1"></a> subscript = { (#1 moles) and },</span>
+<span id="cb633-6"><a href="#cb633-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb633-7"><a href="#cb633-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb633-8"><a href="#cb633-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb633-9"><a href="#cb633-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb633-10"><a href="#cb633-10" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb633-11"><a href="#cb633-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb633-12"><a href="#cb633-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb583"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb583-1"><a href="#cb583-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb634"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb634-1"><a href="#cb634-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>H (2 moles) and O is a liquid.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-51">Con<span
+<h5 class="unnumbered" id="context-example-53">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb584"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb584-1"><a href="#cb584-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb584-2"><a href="#cb584-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
-<span id="cb584-3"><a href="#cb584-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span>
-<span id="cb584-4"><a href="#cb584-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb584-5"><a href="#cb584-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb584-6"><a href="#cb584-6" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb584-7"><a href="#cb584-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb584-8"><a href="#cb584-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb635"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb635-1"><a href="#cb635-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb635-2"><a href="#cb635-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
+<span id="cb635-3"><a href="#cb635-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span>
+<span id="cb635-4"><a href="#cb635-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb635-5"><a href="#cb635-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb635-6"><a href="#cb635-6" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb635-7"><a href="#cb635-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb635-8"><a href="#cb635-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb585"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb585-1"><a href="#cb585-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb636"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb636-1"><a href="#cb636-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>H (2 moles) and O is a liquid.</p>
</blockquote>
-<h4 data-number="2.3.1.36" id="superscript-renderer"><span
-class="header-section-number">2.3.1.36</span> Superscript Renderer</h4>
+<h4 data-number="2.3.1.37" id="superscript-renderer"><span
+class="header-section-number">2.3.1.37</span> Superscript Renderer</h4>
<p>The <code>\markdownRendererSuperscript</code> macro represents a
superscript span of text. The macro receives a single argument that
corresponds to the superscript span of text. This macro will only be
produced, when the <strong><code>superscripts</code></strong> option is
enabled.</p>
-<h5 class="unnumbered" id="plain-tex-example-39">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-43">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb586"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb586-1"><a href="#cb586-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb586-2"><a href="#cb586-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSuperscripts</span>{true}</span>
-<span id="cb586-3"><a href="#cb586-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span>
-<span id="cb586-4"><a href="#cb586-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb586-5"><a href="#cb586-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb586-6"><a href="#cb586-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb586-7"><a href="#cb586-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb637"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb637-1"><a href="#cb637-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb637-2"><a href="#cb637-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSuperscripts</span>{true}</span>
+<span id="cb637-3"><a href="#cb637-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span>
+<span id="cb637-4"><a href="#cb637-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb637-5"><a href="#cb637-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb637-6"><a href="#cb637-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb637-7"><a href="#cb637-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb587"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb587-1"><a href="#cb587-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb638"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb638-1"><a href="#cb638-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>2 taken to the power of 10 is 1024.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-87"><span
+<h5 class="unnumbered" id="latex-example-93"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb588"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb588-1"><a href="#cb588-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb588-2"><a href="#cb588-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb588-3"><a href="#cb588-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb588-4"><a href="#cb588-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb588-5"><a href="#cb588-5" aria-hidden="true" tabindex="-1"></a> superscript = { taken to the power of #1},</span>
-<span id="cb588-6"><a href="#cb588-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb588-7"><a href="#cb588-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb588-8"><a href="#cb588-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb588-9"><a href="#cb588-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb588-10"><a href="#cb588-10" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb588-11"><a href="#cb588-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb588-12"><a href="#cb588-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb639"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb639-1"><a href="#cb639-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb639-2"><a href="#cb639-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb639-3"><a href="#cb639-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb639-4"><a href="#cb639-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb639-5"><a href="#cb639-5" aria-hidden="true" tabindex="-1"></a> superscript = { taken to the power of #1},</span>
+<span id="cb639-6"><a href="#cb639-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb639-7"><a href="#cb639-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb639-8"><a href="#cb639-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb639-9"><a href="#cb639-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb639-10"><a href="#cb639-10" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb639-11"><a href="#cb639-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb639-12"><a href="#cb639-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb589"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb589-1"><a href="#cb589-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb640"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb640-1"><a href="#cb640-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>2 taken to the power of 10 is 1024.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-52">Con<span
+<h5 class="unnumbered" id="context-example-54">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb590"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb590-1"><a href="#cb590-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb590-2"><a href="#cb590-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
-<span id="cb590-3"><a href="#cb590-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span>
-<span id="cb590-4"><a href="#cb590-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb590-5"><a href="#cb590-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb590-6"><a href="#cb590-6" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb590-7"><a href="#cb590-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb590-8"><a href="#cb590-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb641"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb641-1"><a href="#cb641-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb641-2"><a href="#cb641-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
+<span id="cb641-3"><a href="#cb641-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span>
+<span id="cb641-4"><a href="#cb641-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb641-5"><a href="#cb641-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb641-6"><a href="#cb641-6" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb641-7"><a href="#cb641-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb641-8"><a href="#cb641-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb591"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb591-1"><a href="#cb591-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb642"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb642-1"><a href="#cb642-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>2 taken to the power of 10 is 1024.</p>
</blockquote>
-<h4 data-number="2.3.1.37" id="table-renderer"><span
-class="header-section-number">2.3.1.37</span> Table Renderer</h4>
+<h4 data-number="2.3.1.38" id="table-attribute-context-renderers"><span
+class="header-section-number">2.3.1.38</span> Table Attribute Context
+Renderers</h4>
+<p>The following macros are only produced, when the
+<strong><code>tableCaptions</code></strong> and
+<strong><code>tableAttributes</code></strong> options are enabled.</p>
+<p>The <code>\markdownRendererTableAttributeContextBegin</code> and
+<code>\markdownRendererTableAttributeContextEnd</code> macros represent
+the beginning and the end of a context in which the attributes of a
+table apply. The macros receive no arguments.</p>
+<h5 class="unnumbered" id="latex-example-94"><span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
+<p>Using a text editor, create a text document named
+<code>document.tex</code> with the following content:</p>
+<div class="sourceCode" id="cb643"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb643-1"><a href="#cb643-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb643-2"><a href="#cb643-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
+<span id="cb643-3"><a href="#cb643-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span>
+<span id="cb643-4"><a href="#cb643-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span>
+<span id="cb643-5"><a href="#cb643-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span>
+<span id="cb643-6"><a href="#cb643-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span>
+<span id="cb643-7"><a href="#cb643-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
+<span id="cb643-8"><a href="#cb643-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb643-9"><a href="#cb643-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb643-10"><a href="#cb643-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb643-11"><a href="#cb643-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb643-12"><a href="#cb643-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span>
+<span id="cb643-13"><a href="#cb643-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb643-14"><a href="#cb643-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb643-15"><a href="#cb643-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb643-16"><a href="#cb643-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span>
+<span id="cb643-17"><a href="#cb643-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb643-18"><a href="#cb643-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb643-19"><a href="#cb643-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb643-20"><a href="#cb643-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span>
+<span id="cb643-21"><a href="#cb643-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb643-22"><a href="#cb643-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-23"><a href="#cb643-23" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-24"><a href="#cb643-24" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb643-25"><a href="#cb643-25" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-26"><a href="#cb643-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-27"><a href="#cb643-27" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb643-28"><a href="#cb643-28" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-29"><a href="#cb643-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb643-30"><a href="#cb643-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb643-31"><a href="#cb643-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-32"><a href="#cb643-32" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-33"><a href="#cb643-33" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb643-34"><a href="#cb643-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb643-35"><a href="#cb643-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb643-36"><a href="#cb643-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb643-37"><a href="#cb643-37" aria-hidden="true" tabindex="-1"></a>See Table &lt;#example-table&gt;.</span>
+<span id="cb643-38"><a href="#cb643-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb643-39"><a href="#cb643-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb643-40"><a href="#cb643-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb643-41"><a href="#cb643-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb643-42"><a href="#cb643-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb643-43"><a href="#cb643-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb643-44"><a href="#cb643-44" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb643-45"><a href="#cb643-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span>
+<span id="cb643-46"><a href="#cb643-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb643-47"><a href="#cb643-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb644"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb644-1"><a href="#cb644-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<p>A PDF document named <code>document.pdf</code> should be produced and
+contain the following text:</p>
+<blockquote>
+<p>See Table 1.</p>
+<table>
+<caption>Table 1. Demonstration of pipe table syntax.</caption>
+<thead>
+<tr class="header">
+<th style="text-align: right;">Right</th>
+<th style="text-align: left;">Left</th>
+<th>Default</th>
+<th style="text-align: center;">Center</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: right;">12</td>
+<td style="text-align: left;">12</td>
+<td>12</td>
+<td style="text-align: center;">12</td>
+</tr>
+<tr class="even">
+<td style="text-align: right;">123</td>
+<td style="text-align: left;">123</td>
+<td>123</td>
+<td style="text-align: center;">123</td>
+</tr>
+<tr class="odd">
+<td style="text-align: right;">1</td>
+<td style="text-align: left;">1</td>
+<td>1</td>
+<td style="text-align: center;">1</td>
+</tr>
+</tbody>
+</table>
+</blockquote>
+<h4 data-number="2.3.1.39" id="table-renderer"><span
+class="header-section-number">2.3.1.39</span> Table Renderer</h4>
<p>The <code>\markdownRendererTable</code> macro represents a table.
This macro will only be produced, when the
<strong><code>pipeTables</code></strong> option is enabled. The macro
@@ -10836,71 +12011,71 @@ one of the following:</p>
<li><code>c</code> – The corresponding column is centered.</li>
<li><code>r</code> – The corresponding column is right-aligned.</li>
</ul>
-<h5 class="unnumbered" id="latex-example-88"><span
+<h5 class="unnumbered" id="latex-example-95"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb592"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb592-1"><a href="#cb592-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb592-2"><a href="#cb592-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
-<span id="cb592-3"><a href="#cb592-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\rowCounter</span></span>
-<span id="cb592-4"><a href="#cb592-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\columnCounter</span></span>
-<span id="cb592-5"><a href="#cb592-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
-<span id="cb592-6"><a href="#cb592-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processRow</span>#1{<span class="co">%</span></span>
-<span id="cb592-7"><a href="#cb592-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\columnCounter</span>=1<span class="co">%</span></span>
-<span id="cb592-8"><a href="#cb592-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
-<span id="cb592-9"><a href="#cb592-9" aria-hidden="true" tabindex="-1"></a> As for the alignment,</span>
-<span id="cb592-10"><a href="#cb592-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb592-11"><a href="#cb592-11" aria-hidden="true" tabindex="-1"></a> In row <span class="fu">\the\rowCounter</span>,</span>
-<span id="cb592-12"><a href="#cb592-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb592-13"><a href="#cb592-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processColumn</span>#1</span>
-<span id="cb592-14"><a href="#cb592-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\rowCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb592-15"><a href="#cb592-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>&gt;<span class="fu">\rowTotal\relax</span></span>
-<span id="cb592-16"><a href="#cb592-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
-<span id="cb592-17"><a href="#cb592-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processRow</span>}<span class="co">%</span></span>
-<span id="cb592-18"><a href="#cb592-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processColumn</span>#1{<span class="co">%</span></span>
-<span id="cb592-19"><a href="#cb592-19" aria-hidden="true" tabindex="-1"></a> column number <span class="fu">\the\columnCounter</span>{}</span>
-<span id="cb592-20"><a href="#cb592-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
-<span id="cb592-21"><a href="#cb592-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1d{}has default alignment<span class="fu">\fi</span></span>
-<span id="cb592-22"><a href="#cb592-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1l{}is left-aligned<span class="fu">\fi</span></span>
-<span id="cb592-23"><a href="#cb592-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1c{}is centered<span class="fu">\fi</span></span>
-<span id="cb592-24"><a href="#cb592-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1r{}is right-aligned<span class="fu">\fi</span></span>
-<span id="cb592-25"><a href="#cb592-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb592-26"><a href="#cb592-26" aria-hidden="true" tabindex="-1"></a> says <span class="fu">\emph</span>{#1}<span class="co">%</span></span>
-<span id="cb592-27"><a href="#cb592-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb592-28"><a href="#cb592-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\columnCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb592-29"><a href="#cb592-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>&lt;<span class="fu">\columnTotal\relax</span>, <span class="fu">\fi</span></span>
-<span id="cb592-30"><a href="#cb592-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>=<span class="fu">\columnTotal\relax</span>, and <span class="fu">\fi</span></span>
-<span id="cb592-31"><a href="#cb592-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>&gt;<span class="fu">\columnTotal\relax</span></span>
-<span id="cb592-32"><a href="#cb592-32" aria-hidden="true" tabindex="-1"></a> .<span class="fu">\expandafter\@gobble</span></span>
-<span id="cb592-33"><a href="#cb592-33" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processColumn</span>}<span class="co">%</span></span>
-<span id="cb592-34"><a href="#cb592-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
-<span id="cb592-35"><a href="#cb592-35" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb592-36"><a href="#cb592-36" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb592-37"><a href="#cb592-37" aria-hidden="true" tabindex="-1"></a> table = {<span class="co">%</span></span>
-<span id="cb592-38"><a href="#cb592-38" aria-hidden="true" tabindex="-1"></a> This is a table with caption <span class="fu">\emph</span>{#1} that is #3 colums wide</span>
-<span id="cb592-39"><a href="#cb592-39" aria-hidden="true" tabindex="-1"></a> and #2 rows long.</span>
-<span id="cb592-40"><a href="#cb592-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\rowCounter</span>=0<span class="co">%</span></span>
-<span id="cb592-41"><a href="#cb592-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\rowTotal</span>{#2}<span class="co">%</span></span>
-<span id="cb592-42"><a href="#cb592-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\columnTotal</span>{#3}<span class="co">%</span></span>
-<span id="cb592-43"><a href="#cb592-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processRow</span></span>
-<span id="cb592-44"><a href="#cb592-44" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb592-45"><a href="#cb592-45" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb592-46"><a href="#cb592-46" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb592-47"><a href="#cb592-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb592-48"><a href="#cb592-48" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb592-49"><a href="#cb592-49" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb592-50"><a href="#cb592-50" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb592-51"><a href="#cb592-51" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb592-52"><a href="#cb592-52" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb592-53"><a href="#cb592-53" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb592-54"><a href="#cb592-54" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb592-55"><a href="#cb592-55" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax</span>
-<span id="cb592-56"><a href="#cb592-56" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb592-57"><a href="#cb592-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb593"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb593-1"><a href="#cb593-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb645"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb645-1"><a href="#cb645-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb645-2"><a href="#cb645-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
+<span id="cb645-3"><a href="#cb645-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\rowCounter</span></span>
+<span id="cb645-4"><a href="#cb645-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\columnCounter</span></span>
+<span id="cb645-5"><a href="#cb645-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
+<span id="cb645-6"><a href="#cb645-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processRow</span>#1{<span class="co">%</span></span>
+<span id="cb645-7"><a href="#cb645-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\columnCounter</span>=1<span class="co">%</span></span>
+<span id="cb645-8"><a href="#cb645-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
+<span id="cb645-9"><a href="#cb645-9" aria-hidden="true" tabindex="-1"></a> As for the alignment,</span>
+<span id="cb645-10"><a href="#cb645-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb645-11"><a href="#cb645-11" aria-hidden="true" tabindex="-1"></a> In row <span class="fu">\the\rowCounter</span>,</span>
+<span id="cb645-12"><a href="#cb645-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb645-13"><a href="#cb645-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processColumn</span>#1</span>
+<span id="cb645-14"><a href="#cb645-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\rowCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb645-15"><a href="#cb645-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>&gt;<span class="fu">\rowTotal\relax</span></span>
+<span id="cb645-16"><a href="#cb645-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
+<span id="cb645-17"><a href="#cb645-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processRow</span>}<span class="co">%</span></span>
+<span id="cb645-18"><a href="#cb645-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processColumn</span>#1{<span class="co">%</span></span>
+<span id="cb645-19"><a href="#cb645-19" aria-hidden="true" tabindex="-1"></a> column number <span class="fu">\the\columnCounter</span>{}</span>
+<span id="cb645-20"><a href="#cb645-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
+<span id="cb645-21"><a href="#cb645-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1d{}has default alignment<span class="fu">\fi</span></span>
+<span id="cb645-22"><a href="#cb645-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1l{}is left-aligned<span class="fu">\fi</span></span>
+<span id="cb645-23"><a href="#cb645-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1c{}is centered<span class="fu">\fi</span></span>
+<span id="cb645-24"><a href="#cb645-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1r{}is right-aligned<span class="fu">\fi</span></span>
+<span id="cb645-25"><a href="#cb645-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb645-26"><a href="#cb645-26" aria-hidden="true" tabindex="-1"></a> says <span class="fu">\emph</span>{#1}<span class="co">%</span></span>
+<span id="cb645-27"><a href="#cb645-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb645-28"><a href="#cb645-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\columnCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb645-29"><a href="#cb645-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>&lt;<span class="fu">\columnTotal\relax</span>, <span class="fu">\fi</span></span>
+<span id="cb645-30"><a href="#cb645-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>=<span class="fu">\columnTotal\relax</span>, and <span class="fu">\fi</span></span>
+<span id="cb645-31"><a href="#cb645-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>&gt;<span class="fu">\columnTotal\relax</span></span>
+<span id="cb645-32"><a href="#cb645-32" aria-hidden="true" tabindex="-1"></a> .<span class="fu">\expandafter\@gobble</span></span>
+<span id="cb645-33"><a href="#cb645-33" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processColumn</span>}<span class="co">%</span></span>
+<span id="cb645-34"><a href="#cb645-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
+<span id="cb645-35"><a href="#cb645-35" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb645-36"><a href="#cb645-36" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb645-37"><a href="#cb645-37" aria-hidden="true" tabindex="-1"></a> table = {<span class="co">%</span></span>
+<span id="cb645-38"><a href="#cb645-38" aria-hidden="true" tabindex="-1"></a> This is a table with caption <span class="fu">\emph</span>{#1} that is #3 colums wide</span>
+<span id="cb645-39"><a href="#cb645-39" aria-hidden="true" tabindex="-1"></a> and #2 rows long.</span>
+<span id="cb645-40"><a href="#cb645-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\rowCounter</span>=0<span class="co">%</span></span>
+<span id="cb645-41"><a href="#cb645-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\rowTotal</span>{#2}<span class="co">%</span></span>
+<span id="cb645-42"><a href="#cb645-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\columnTotal</span>{#3}<span class="co">%</span></span>
+<span id="cb645-43"><a href="#cb645-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processRow</span></span>
+<span id="cb645-44"><a href="#cb645-44" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb645-45"><a href="#cb645-45" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb645-46"><a href="#cb645-46" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb645-47"><a href="#cb645-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb645-48"><a href="#cb645-48" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb645-49"><a href="#cb645-49" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb645-50"><a href="#cb645-50" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb645-51"><a href="#cb645-51" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb645-52"><a href="#cb645-52" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb645-53"><a href="#cb645-53" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb645-54"><a href="#cb645-54" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb645-55"><a href="#cb645-55" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax</span>
+<span id="cb645-56"><a href="#cb645-56" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb645-57"><a href="#cb645-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb646"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb646-1"><a href="#cb646-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -10918,35 +12093,36 @@ column number 4 says <em>12</em>. In row 3, column number 1 says
number 1 says <em>1</em>, column number 2 says <em>1</em>, column number
3 says <em>1</em>, and column number 4 says <em>1</em>.</p>
</blockquote>
-<h4 data-number="2.3.1.38" id="tex-math-renderers"><span
-class="header-section-number">2.3.1.38</span> Tex Math Renderers</h4>
+<h4 data-number="2.3.1.40" id="tex-math-renderers"><span
+class="header-section-number">2.3.1.40</span> <span
+class="tex">T<sub>e</sub>X</span> Math Renderers</h4>
<p>The <code>\markdownRendererInlineMath</code> and
<code>\markdownRendererDisplayMath</code> macros represent inline and
display <span class="tex">T<sub>e</sub>X</span> math. Both macros
-receive a single argument that corresponds to the tex math content.
-These macros will only be produced, when the
-<strong><code>texMathDollars</code></strong>,
+receive a single argument that corresponds to the <span
+class="tex">T<sub>e</sub>X</span> math content. These macros will only
+be produced, when the <strong><code>texMathDollars</code></strong>,
<strong><code>texMathSingleBackslash</code></strong>, or
<strong><code>texMathDoubleBackslash</code></strong> option are
enabled.</p>
-<h5 class="unnumbered" id="plain-tex-example-40">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-44">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb594"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb594-1"><a href="#cb594-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb594-2"><a href="#cb594-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
-<span id="cb594-3"><a href="#cb594-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}</span>
-<span id="cb594-4"><a href="#cb594-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="ss">$$#1</span><span class="sc">\eqno</span><span class="ss">(1)$$</span>}</span>
-<span id="cb594-5"><a href="#cb594-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb594-6"><a href="#cb594-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb594-7"><a href="#cb594-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb594-8"><a href="#cb594-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
-<span id="cb594-9"><a href="#cb594-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb594-10"><a href="#cb594-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb647"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb647-1"><a href="#cb647-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb647-2"><a href="#cb647-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
+<span id="cb647-3"><a href="#cb647-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}</span>
+<span id="cb647-4"><a href="#cb647-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="ss">$$#1</span><span class="sc">\eqno</span><span class="ss">(1)$$</span>}</span>
+<span id="cb647-5"><a href="#cb647-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb647-6"><a href="#cb647-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb647-7"><a href="#cb647-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb647-8"><a href="#cb647-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
+<span id="cb647-9"><a href="#cb647-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb647-10"><a href="#cb647-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb595"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb595-1"><a href="#cb595-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb648"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb648-1"><a href="#cb648-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -10956,26 +12132,26 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup>…</span><
\int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x}
dx\eqno(1)$$</span></p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-89"><span
+<h5 class="unnumbered" id="latex-example-96"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb596"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb596-1"><a href="#cb596-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb596-2"><a href="#cb596-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
-<span id="cb596-3"><a href="#cb596-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">amsmath</span>}</span>
-<span id="cb596-4"><a href="#cb596-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="kw">\begin</span>{<span class="ex">math</span>}<span class="ss">#1</span><span class="sc">\dots\end</span><span class="ss">{math}}</span></span>
-<span id="cb596-5"><a href="#cb596-5" aria-hidden="true" tabindex="-1"></a><span class="sc">\def\markdownRendererDisplayMath</span><span class="ss">#1{</span><span class="kw">\begin</span>{<span class="ex">equation</span>}<span class="ss">#1</span><span class="sc">\end</span><span class="ss">{equation}}</span></span>
-<span id="cb596-6"><a href="#cb596-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb596-7"><a href="#cb596-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb596-8"><a href="#cb596-8" aria-hidden="true" tabindex="-1"></a><span class="er">$</span><span class="ss">E=mc^2</span><span class="er">$</span></span>
-<span id="cb596-9"><a href="#cb596-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb596-10"><a href="#cb596-10" aria-hidden="true" tabindex="-1"></a><span class="er">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx</span><span class="er">$$</span></span>
-<span id="cb596-11"><a href="#cb596-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb596-12"><a href="#cb596-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb649"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb649-1"><a href="#cb649-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb649-2"><a href="#cb649-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
+<span id="cb649-3"><a href="#cb649-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">amsmath</span>}</span>
+<span id="cb649-4"><a href="#cb649-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="kw">\begin</span>{<span class="ex">math</span>}<span class="ss">#1</span><span class="sc">\dots\end</span><span class="ss">{math}}</span></span>
+<span id="cb649-5"><a href="#cb649-5" aria-hidden="true" tabindex="-1"></a><span class="sc">\def\markdownRendererDisplayMath</span><span class="ss">#1{</span><span class="kw">\begin</span>{<span class="ex">equation</span>}<span class="ss">#1</span><span class="sc">\end</span><span class="ss">{equation}}</span></span>
+<span id="cb649-6"><a href="#cb649-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb649-7"><a href="#cb649-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb649-8"><a href="#cb649-8" aria-hidden="true" tabindex="-1"></a><span class="er">$</span><span class="ss">E=mc^2</span><span class="er">$</span></span>
+<span id="cb649-9"><a href="#cb649-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb649-10"><a href="#cb649-10" aria-hidden="true" tabindex="-1"></a><span class="er">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx</span><span class="er">$$</span></span>
+<span id="cb649-11"><a href="#cb649-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb649-12"><a href="#cb649-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb597"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb597-1"><a href="#cb597-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb650"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb650-1"><a href="#cb650-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -10984,25 +12160,25 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup>…</span><
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em>  (1)</span></p>
</blockquote>
-<h5 class="unnumbered" id="context-example-53">Con<span
+<h5 class="unnumbered" id="context-example-55">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb598"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb598-1"><a href="#cb598-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb598-2"><a href="#cb598-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
-<span id="cb598-3"><a href="#cb598-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}<span class="co">%</span></span>
-<span id="cb598-4"><a href="#cb598-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="fu">\placeformula\startformula</span>#1<span class="fu">\stopformula</span>}<span class="co">%</span></span>
-<span id="cb598-5"><a href="#cb598-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb598-6"><a href="#cb598-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb598-7"><a href="#cb598-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb598-8"><a href="#cb598-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb598-9"><a href="#cb598-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
-<span id="cb598-10"><a href="#cb598-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb598-11"><a href="#cb598-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb651"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb651-1"><a href="#cb651-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb651-2"><a href="#cb651-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
+<span id="cb651-3"><a href="#cb651-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInlineMath</span>#1{<span class="ss">$#1</span><span class="sc">\dots</span><span class="ss">$</span>}<span class="co">%</span></span>
+<span id="cb651-4"><a href="#cb651-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="fu">\placeformula\startformula</span>#1<span class="fu">\stopformula</span>}<span class="co">%</span></span>
+<span id="cb651-5"><a href="#cb651-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb651-6"><a href="#cb651-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb651-7"><a href="#cb651-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb651-8"><a href="#cb651-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb651-9"><a href="#cb651-9" aria-hidden="true" tabindex="-1"></a><span class="ss">$$</span><span class="sc">\hat</span><span class="ss">{f} </span><span class="sc">\left</span><span class="ss"> ( </span><span class="sc">\xi</span><span class="ss"> </span><span class="sc">\right</span><span class="ss"> )= </span><span class="sc">\int</span><span class="ss">_{-</span><span class="sc">\infty</span><span class="ss">}^{</span><span class="sc">\infty</span><span class="ss">} f</span><span class="sc">\left</span><span class="ss"> ( x </span><span class="sc">\right</span><span class="ss"> ) e^{-i2</span><span class="sc">\pi</span><span class="ss"> </span><span class="sc">\xi</span><span class="ss"> x} dx$$</span></span>
+<span id="cb651-10"><a href="#cb651-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb651-11"><a href="#cb651-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb599"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb599-1"><a href="#cb599-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb652"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb652-1"><a href="#cb652-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11011,92 +12187,29 @@ class="math inline"><em>E</em> = <em>m</em><em>c</em><sup>2</sup>…</span><
<p><span
class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>∞</sup><em>f</em>(<em>x</em>)<em>e</em><sup>−<em>i</em>2<em>π</em><em>ξ</em><em>x</em></sup><em>d</em><em>x</em>  (1)</span></p>
</blockquote>
-<h4 data-number="2.3.1.39" id="text-citations-renderer"><span
-class="header-section-number">2.3.1.39</span> Text Citations
-Renderer</h4>
-<p>The <code>\markdownRendererTextCite</code> macro represents a string
-of one or more text citations. This macro will only be produced, when
-the <strong><code>citations</code></strong> option is enabled. The macro
-receives parameters in the same format as the
-<code>\markdownRendererCite</code> macro.</p>
-<h5 class="unnumbered" id="latex-example-90"><span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
-<p>Using a text editor, create a text document named
-<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb600"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb600-1"><a href="#cb600-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb600-2"><a href="#cb600-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
-<span id="cb600-3"><a href="#cb600-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
-<span id="cb600-4"><a href="#cb600-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
-<span id="cb600-5"><a href="#cb600-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
-<span id="cb600-6"><a href="#cb600-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb600-7"><a href="#cb600-7" aria-hidden="true" tabindex="-1"></a> a text citation <span class="fu">\emph</span>{#4}</span>
-<span id="cb600-8"><a href="#cb600-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb600-9"><a href="#cb600-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
-<span id="cb600-10"><a href="#cb600-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb600-11"><a href="#cb600-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
-<span id="cb600-12"><a href="#cb600-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb600-13"><a href="#cb600-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb600-14"><a href="#cb600-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
-<span id="cb600-15"><a href="#cb600-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb600-16"><a href="#cb600-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ </span>and a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
-<span id="cb600-17"><a href="#cb600-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb600-18"><a href="#cb600-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb600-19"><a href="#cb600-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
-<span id="cb600-20"><a href="#cb600-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
-<span id="cb600-21"><a href="#cb600-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
-<span id="cb600-22"><a href="#cb600-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb600-23"><a href="#cb600-23" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb600-24"><a href="#cb600-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
-<span id="cb600-25"><a href="#cb600-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
-<span id="cb600-26"><a href="#cb600-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb600-27"><a href="#cb600-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb600-28"><a href="#cb600-28" aria-hidden="true" tabindex="-1"></a> textCite = {<span class="co">%</span></span>
-<span id="cb600-29"><a href="#cb600-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
-<span id="cb600-30"><a href="#cb600-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
-<span id="cb600-31"><a href="#cb600-31" aria-hidden="true" tabindex="-1"></a> This is</span>
-<span id="cb600-32"><a href="#cb600-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span>
-<span id="cb600-33"><a href="#cb600-33" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb600-34"><a href="#cb600-34" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb600-35"><a href="#cb600-35" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb600-36"><a href="#cb600-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb600-37"><a href="#cb600-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb600-38"><a href="#cb600-38" aria-hidden="true" tabindex="-1"></a>@abrahams90 [pp. 12; also @eijkhout91]</span>
-<span id="cb600-39"><a href="#cb600-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb600-40"><a href="#cb600-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb601"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb601-1"><a href="#cb601-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
-<p>A PDF document named <code>document.pdf</code> should be produced and
-contain the following text:</p>
-<blockquote>
-<p>This is a text citation <em>abrahams90</em> with a postfix
-<em>pp. 12</em>, and a citation <em>eijkhout91</em> with a prefix
-<em>also</em>.</p>
-</blockquote>
-<h4 data-number="2.3.1.40" id="thematic-break-renderer"><span
-class="header-section-number">2.3.1.40</span> Thematic Break
+<h4 data-number="2.3.1.41" id="thematic-break-renderer"><span
+class="header-section-number">2.3.1.41</span> Thematic Break
Renderer</h4>
<p>The <code>\markdownRendererThematicBreak</code> macro represents a
thematic break. The macro receives no arguments.</p>
-<h5 class="unnumbered" id="plain-tex-example-41">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-45">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb602"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb602-1"><a href="#cb602-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb602-2"><a href="#cb602-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\vfil\break</span>}</span>
-<span id="cb602-3"><a href="#cb602-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb602-4"><a href="#cb602-4" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
-<span id="cb602-5"><a href="#cb602-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb602-6"><a href="#cb602-6" aria-hidden="true" tabindex="-1"></a>***</span>
-<span id="cb602-7"><a href="#cb602-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb602-8"><a href="#cb602-8" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
-<span id="cb602-9"><a href="#cb602-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb602-10"><a href="#cb602-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb653"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb653-1"><a href="#cb653-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb653-2"><a href="#cb653-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\vfil\break</span>}</span>
+<span id="cb653-3"><a href="#cb653-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb653-4"><a href="#cb653-4" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
+<span id="cb653-5"><a href="#cb653-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb653-6"><a href="#cb653-6" aria-hidden="true" tabindex="-1"></a>***</span>
+<span id="cb653-7"><a href="#cb653-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb653-8"><a href="#cb653-8" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
+<span id="cb653-9"><a href="#cb653-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb653-10"><a href="#cb653-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb603"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb603-1"><a href="#cb603-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb654"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb654-1"><a href="#cb654-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11104,30 +12217,30 @@ contain the following text:</p>
<hr />
<p>This is the second page.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-91"><span
+<h5 class="unnumbered" id="latex-example-97"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb604"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb604-1"><a href="#cb604-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb604-2"><a href="#cb604-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb604-3"><a href="#cb604-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb604-4"><a href="#cb604-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb604-5"><a href="#cb604-5" aria-hidden="true" tabindex="-1"></a> thematicBreak = <span class="fu">\newpage</span>,</span>
-<span id="cb604-6"><a href="#cb604-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb604-7"><a href="#cb604-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb604-8"><a href="#cb604-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb604-9"><a href="#cb604-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb604-10"><a href="#cb604-10" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
-<span id="cb604-11"><a href="#cb604-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb604-12"><a href="#cb604-12" aria-hidden="true" tabindex="-1"></a>***</span>
-<span id="cb604-13"><a href="#cb604-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb604-14"><a href="#cb604-14" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
-<span id="cb604-15"><a href="#cb604-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb604-16"><a href="#cb604-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb655"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb655-1"><a href="#cb655-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb655-2"><a href="#cb655-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb655-3"><a href="#cb655-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb655-4"><a href="#cb655-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb655-5"><a href="#cb655-5" aria-hidden="true" tabindex="-1"></a> thematicBreak = <span class="fu">\newpage</span>,</span>
+<span id="cb655-6"><a href="#cb655-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb655-7"><a href="#cb655-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb655-8"><a href="#cb655-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb655-9"><a href="#cb655-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb655-10"><a href="#cb655-10" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
+<span id="cb655-11"><a href="#cb655-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb655-12"><a href="#cb655-12" aria-hidden="true" tabindex="-1"></a>***</span>
+<span id="cb655-13"><a href="#cb655-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb655-14"><a href="#cb655-14" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
+<span id="cb655-15"><a href="#cb655-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb655-16"><a href="#cb655-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb605"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb605-1"><a href="#cb605-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb656"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb656-1"><a href="#cb656-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11135,25 +12248,25 @@ contain the following text:</p>
<hr />
<p>This is the second page.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-54">Con<span
+<h5 class="unnumbered" id="context-example-56">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb606"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb606-1"><a href="#cb606-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb606-2"><a href="#cb606-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\page</span>[yes]}</span>
-<span id="cb606-3"><a href="#cb606-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb606-4"><a href="#cb606-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb606-5"><a href="#cb606-5" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
-<span id="cb606-6"><a href="#cb606-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb606-7"><a href="#cb606-7" aria-hidden="true" tabindex="-1"></a>***</span>
-<span id="cb606-8"><a href="#cb606-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb606-9"><a href="#cb606-9" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
-<span id="cb606-10"><a href="#cb606-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb606-11"><a href="#cb606-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb657"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb657-1"><a href="#cb657-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb657-2"><a href="#cb657-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\page</span>[yes]}</span>
+<span id="cb657-3"><a href="#cb657-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb657-4"><a href="#cb657-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb657-5"><a href="#cb657-5" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
+<span id="cb657-6"><a href="#cb657-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb657-7"><a href="#cb657-7" aria-hidden="true" tabindex="-1"></a>***</span>
+<span id="cb657-8"><a href="#cb657-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb657-9"><a href="#cb657-9" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
+<span id="cb657-10"><a href="#cb657-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb657-11"><a href="#cb657-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb607"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb607-1"><a href="#cb607-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb658"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb658-1"><a href="#cb658-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11161,8 +12274,8 @@ contain the following text:</p>
<hr />
<p>This is the second page.</p>
</blockquote>
-<h4 data-number="2.3.1.41" id="tickbox-renderers"><span
-class="header-section-number">2.3.1.41</span> Tickbox Renderers</h4>
+<h4 data-number="2.3.1.42" id="tickbox-renderers"><span
+class="header-section-number">2.3.1.42</span> Tickbox Renderers</h4>
<p>The macros named <code>\markdownRendererTickedBox</code>,
<code>\markdownRendererHalfTickedBox</code>, and
<code>\markdownRendererUntickedBox</code> represent ticked and unticked
@@ -11171,28 +12284,28 @@ boxes, respectively. These macros will either be produced, when the
Ballot Box with X (☒, U+2612), Hourglass (⌛, U+231B) or Ballot Box (☐,
U+2610) Unicode characters are encountered in the markdown input,
respectively.</p>
-<h5 class="unnumbered" id="latex-example-92"><span
+<h5 class="unnumbered" id="latex-example-98"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb608"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb608-1"><a href="#cb608-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb608-2"><a href="#cb608-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span>
-<span id="cb608-3"><a href="#cb608-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb608-4"><a href="#cb608-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb608-5"><a href="#cb608-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
-<span id="cb608-6"><a href="#cb608-6" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
-<span id="cb608-7"><a href="#cb608-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb608-8"><a href="#cb608-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb608-9"><a href="#cb608-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb608-10"><a href="#cb608-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb608-11"><a href="#cb608-11" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb608-12"><a href="#cb608-12" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
-<span id="cb608-13"><a href="#cb608-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb608-14"><a href="#cb608-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb659"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb659-1"><a href="#cb659-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb659-2"><a href="#cb659-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span>
+<span id="cb659-3"><a href="#cb659-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb659-4"><a href="#cb659-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb659-5"><a href="#cb659-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
+<span id="cb659-6"><a href="#cb659-6" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
+<span id="cb659-7"><a href="#cb659-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb659-8"><a href="#cb659-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb659-9"><a href="#cb659-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb659-10"><a href="#cb659-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb659-11"><a href="#cb659-11" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb659-12"><a href="#cb659-12" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
+<span id="cb659-13"><a href="#cb659-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb659-14"><a href="#cb659-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb609"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb609-1"><a href="#cb609-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb660"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb660-1"><a href="#cb660-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11201,24 +12314,24 @@ contain the following text:</p>
<li>Yes I can!</li>
</ul>
</blockquote>
-<h5 class="unnumbered" id="context-example-55">Con<span
+<h5 class="unnumbered" id="context-example-57">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb610"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb610-1"><a href="#cb610-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb610-2"><a href="#cb610-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
-<span id="cb610-3"><a href="#cb610-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
-<span id="cb610-4"><a href="#cb610-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
-<span id="cb610-5"><a href="#cb610-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb610-6"><a href="#cb610-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb610-7"><a href="#cb610-7" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb610-8"><a href="#cb610-8" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
-<span id="cb610-9"><a href="#cb610-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb610-10"><a href="#cb610-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb661"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb661-1"><a href="#cb661-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb661-2"><a href="#cb661-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
+<span id="cb661-3"><a href="#cb661-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
+<span id="cb661-4"><a href="#cb661-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
+<span id="cb661-5"><a href="#cb661-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb661-6"><a href="#cb661-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb661-7"><a href="#cb661-7" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb661-8"><a href="#cb661-8" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
+<span id="cb661-9"><a href="#cb661-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb661-10"><a href="#cb661-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb611"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb611-1"><a href="#cb611-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb662"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb662-1"><a href="#cb662-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11227,8 +12340,8 @@ contain the following text:</p>
<li>Yes I can!</li>
</ul>
</blockquote>
-<h4 data-number="2.3.1.42" id="yamlmetadatarenderers"><span
-class="header-section-number">2.3.1.42</span> YAML Metadata
+<h4 data-number="2.3.1.43" id="yamlmetadatarenderers"><span
+class="header-section-number">2.3.1.43</span> YAML Metadata
Renderers</h4>
<p>The <code>\markdownRendererJekyllDataBegin</code> macro represents
the beginning of a <abbr>yaml</abbr> document. This macro will only be
@@ -11286,88 +12399,88 @@ be produced when the <strong><code>jekyllData</code></strong> option is
enabled. The macro receives one argument: the scalar key in the parent
structure, cast to a string following <abbr>yaml</abbr> serialization
rules.</p>
-<h5 class="unnumbered" id="plain-tex-example-42">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-46">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb612"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb612-1"><a href="#cb612-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb612-2"><a href="#cb612-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
-<span id="cb612-3"><a href="#cb612-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span>
-<span id="cb612-4"><a href="#cb612-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span>
-<span id="cb612-5"><a href="#cb612-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb612-6"><a href="#cb612-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb612-7"><a href="#cb612-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb612-8"><a href="#cb612-8" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb612-9"><a href="#cb612-9" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb612-10"><a href="#cb612-10" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb612-11"><a href="#cb612-11" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb612-12"><a href="#cb612-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb612-13"><a href="#cb612-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb663"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb663-1"><a href="#cb663-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb663-2"><a href="#cb663-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
+<span id="cb663-3"><a href="#cb663-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span>
+<span id="cb663-4"><a href="#cb663-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span>
+<span id="cb663-5"><a href="#cb663-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb663-6"><a href="#cb663-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb663-7"><a href="#cb663-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb663-8"><a href="#cb663-8" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb663-9"><a href="#cb663-9" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb663-10"><a href="#cb663-10" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb663-11"><a href="#cb663-11" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb663-12"><a href="#cb663-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb663-13"><a href="#cb663-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb613"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb613-1"><a href="#cb613-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb664"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb664-1"><a href="#cb664-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-93"><span
+<h5 class="unnumbered" id="latex-example-99"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb614"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb614-1"><a href="#cb614-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb614-2"><a href="#cb614-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb614-3"><a href="#cb614-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb614-4"><a href="#cb614-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb614-5"><a href="#cb614-5" aria-hidden="true" tabindex="-1"></a> jekyllDataString = {<span class="fu">\gdef\name</span>{#2}},</span>
-<span id="cb614-6"><a href="#cb614-6" aria-hidden="true" tabindex="-1"></a> jekyllDataNumber = {<span class="fu">\gdef\age</span>{#2}},</span>
-<span id="cb614-7"><a href="#cb614-7" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
-<span id="cb614-8"><a href="#cb614-8" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb614-9"><a href="#cb614-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb614-10"><a href="#cb614-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb614-11"><a href="#cb614-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-12"><a href="#cb614-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb614-13"><a href="#cb614-13" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb614-14"><a href="#cb614-14" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb614-15"><a href="#cb614-15" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb614-16"><a href="#cb614-16" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb614-17"><a href="#cb614-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb614-18"><a href="#cb614-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-19"><a href="#cb614-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb615"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb615-1"><a href="#cb615-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb665"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb665-1"><a href="#cb665-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb665-2"><a href="#cb665-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb665-3"><a href="#cb665-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb665-4"><a href="#cb665-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb665-5"><a href="#cb665-5" aria-hidden="true" tabindex="-1"></a> jekyllDataString = {<span class="fu">\gdef\name</span>{#2}},</span>
+<span id="cb665-6"><a href="#cb665-6" aria-hidden="true" tabindex="-1"></a> jekyllDataNumber = {<span class="fu">\gdef\age</span>{#2}},</span>
+<span id="cb665-7"><a href="#cb665-7" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
+<span id="cb665-8"><a href="#cb665-8" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb665-9"><a href="#cb665-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb665-10"><a href="#cb665-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb665-11"><a href="#cb665-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb665-12"><a href="#cb665-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb665-13"><a href="#cb665-13" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb665-14"><a href="#cb665-14" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb665-15"><a href="#cb665-15" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb665-16"><a href="#cb665-16" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb665-17"><a href="#cb665-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb665-18"><a href="#cb665-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb665-19"><a href="#cb665-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb666"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb666-1"><a href="#cb666-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-56">Con<span
+<h5 class="unnumbered" id="context-example-58">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb616"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb616-1"><a href="#cb616-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb616-2"><a href="#cb616-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
-<span id="cb616-3"><a href="#cb616-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span>
-<span id="cb616-4"><a href="#cb616-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span>
-<span id="cb616-5"><a href="#cb616-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb616-6"><a href="#cb616-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb616-7"><a href="#cb616-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb616-8"><a href="#cb616-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-9"><a href="#cb616-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb616-10"><a href="#cb616-10" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb616-11"><a href="#cb616-11" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb616-12"><a href="#cb616-12" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb616-13"><a href="#cb616-13" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb616-14"><a href="#cb616-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb616-15"><a href="#cb616-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-16"><a href="#cb616-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb667"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb667-1"><a href="#cb667-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb667-2"><a href="#cb667-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
+<span id="cb667-3"><a href="#cb667-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span>
+<span id="cb667-4"><a href="#cb667-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataNumber</span>#1#2{<span class="fu">\gdef\age</span>{#2}}</span>
+<span id="cb667-5"><a href="#cb667-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb667-6"><a href="#cb667-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb667-7"><a href="#cb667-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb667-8"><a href="#cb667-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb667-9"><a href="#cb667-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb667-10"><a href="#cb667-10" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb667-11"><a href="#cb667-11" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb667-12"><a href="#cb667-12" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb667-13"><a href="#cb667-13" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb667-14"><a href="#cb667-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb667-15"><a href="#cb667-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb667-16"><a href="#cb667-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb617"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb617-1"><a href="#cb617-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb668"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb668-1"><a href="#cb668-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11379,93 +12492,93 @@ Prototypes</h3>
<p>By default, token renderers point to package-defined <span
class="tex">T<sub>e</sub>X</span> macros, further referred to as
<em>prototypes</em>, which provide useful default definitions.</p>
-<h5 class="unnumbered" id="plain-tex-example-43">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-47">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb618"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb618-1"><a href="#cb618-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb618-2"><a href="#cb618-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span>
-<span id="cb618-3"><a href="#cb618-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span>
-<span id="cb618-4"><a href="#cb618-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb618-5"><a href="#cb618-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb618-6"><a href="#cb618-6" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb618-7"><a href="#cb618-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb618-8"><a href="#cb618-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb618-9"><a href="#cb618-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
-<span id="cb618-10"><a href="#cb618-10" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
-<span id="cb618-11"><a href="#cb618-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb618-12"><a href="#cb618-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb618-13"><a href="#cb618-13" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb618-14"><a href="#cb618-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb618-15"><a href="#cb618-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb669"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb669-1"><a href="#cb669-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb669-2"><a href="#cb669-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span>
+<span id="cb669-3"><a href="#cb669-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span>
+<span id="cb669-4"><a href="#cb669-4" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb669-5"><a href="#cb669-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb669-6"><a href="#cb669-6" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb669-7"><a href="#cb669-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb669-8"><a href="#cb669-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb669-9"><a href="#cb669-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
+<span id="cb669-10"><a href="#cb669-10" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
+<span id="cb669-11"><a href="#cb669-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb669-12"><a href="#cb669-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb669-13"><a href="#cb669-13" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb669-14"><a href="#cb669-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb669-15"><a href="#cb669-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb619"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb619-1"><a href="#cb619-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb670"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb670-1"><a href="#cb670-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Packages can specify token renderer prototypes.</p>
<p>User-defined token renderers take precedence.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-94"><span
+<h5 class="unnumbered" id="latex-example-100"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb620"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb620-1"><a href="#cb620-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb620-2"><a href="#cb620-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb620-3"><a href="#cb620-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb620-4"><a href="#cb620-4" aria-hidden="true" tabindex="-1"></a> rendererPrototypes = {</span>
-<span id="cb620-5"><a href="#cb620-5" aria-hidden="true" tabindex="-1"></a> tilde = {Packages can specify token renderer prototypes.},</span>
-<span id="cb620-6"><a href="#cb620-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb620-7"><a href="#cb620-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb620-8"><a href="#cb620-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb620-9"><a href="#cb620-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb620-10"><a href="#cb620-10" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb620-11"><a href="#cb620-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb620-12"><a href="#cb620-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb620-13"><a href="#cb620-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown*</span>}{</span>
-<span id="cb620-14"><a href="#cb620-14" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb620-15"><a href="#cb620-15" aria-hidden="true" tabindex="-1"></a> tilde = {User-defined token renderers take precedence.},</span>
-<span id="cb620-16"><a href="#cb620-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb620-17"><a href="#cb620-17" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb620-18"><a href="#cb620-18" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb620-19"><a href="#cb620-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown*</span>}</span>
-<span id="cb620-20"><a href="#cb620-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb621"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb621-1"><a href="#cb621-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb671"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb671-1"><a href="#cb671-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb671-2"><a href="#cb671-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb671-3"><a href="#cb671-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb671-4"><a href="#cb671-4" aria-hidden="true" tabindex="-1"></a> rendererPrototypes = {</span>
+<span id="cb671-5"><a href="#cb671-5" aria-hidden="true" tabindex="-1"></a> tilde = {Packages can specify token renderer prototypes.},</span>
+<span id="cb671-6"><a href="#cb671-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb671-7"><a href="#cb671-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb671-8"><a href="#cb671-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb671-9"><a href="#cb671-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb671-10"><a href="#cb671-10" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb671-11"><a href="#cb671-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb671-12"><a href="#cb671-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb671-13"><a href="#cb671-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb671-14"><a href="#cb671-14" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb671-15"><a href="#cb671-15" aria-hidden="true" tabindex="-1"></a> tilde = {User-defined token renderers take precedence.},</span>
+<span id="cb671-16"><a href="#cb671-16" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb671-17"><a href="#cb671-17" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb671-18"><a href="#cb671-18" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb671-19"><a href="#cb671-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb671-20"><a href="#cb671-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb672"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb672-1"><a href="#cb672-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Packages can specify token renderer prototypes.</p>
<p>User-defined token renderers take precedence.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-57">Con<span
+<h5 class="unnumbered" id="context-example-59">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb622"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb622-1"><a href="#cb622-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb622-2"><a href="#cb622-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span>
-<span id="cb622-3"><a href="#cb622-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span>
-<span id="cb622-4"><a href="#cb622-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb622-5"><a href="#cb622-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb622-6"><a href="#cb622-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb622-7"><a href="#cb622-7" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb622-8"><a href="#cb622-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb622-9"><a href="#cb622-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb622-10"><a href="#cb622-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
-<span id="cb622-11"><a href="#cb622-11" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
-<span id="cb622-12"><a href="#cb622-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb622-13"><a href="#cb622-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb622-14"><a href="#cb622-14" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb622-15"><a href="#cb622-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb622-16"><a href="#cb622-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb673"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb673-1"><a href="#cb673-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb673-2"><a href="#cb673-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span>
+<span id="cb673-3"><a href="#cb673-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span>
+<span id="cb673-4"><a href="#cb673-4" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb673-5"><a href="#cb673-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb673-6"><a href="#cb673-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb673-7"><a href="#cb673-7" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb673-8"><a href="#cb673-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb673-9"><a href="#cb673-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb673-10"><a href="#cb673-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
+<span id="cb673-11"><a href="#cb673-11" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
+<span id="cb673-12"><a href="#cb673-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb673-13"><a href="#cb673-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb673-14"><a href="#cb673-14" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb673-15"><a href="#cb673-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb673-16"><a href="#cb673-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb623"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb623-1"><a href="#cb623-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb674"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb674-1"><a href="#cb674-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11479,142 +12592,140 @@ Prototypes</h4>
high-level interface that can be programmed using the
<code>markdown/jekyllData</code> key–values from the l3keys module of
the <span class="latex">L<sup>a</sup>T<sub>e</sub>X</span>3 kernel.</p>
-<h5 class="unnumbered" id="plain-tex-example-44">Plain <span
+<h5 class="unnumbered" id="plain-tex-example-48">Plain <span
class="tex">T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb624"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb624-1"><a href="#cb624-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb624-2"><a href="#cb624-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
-<span id="cb624-3"><a href="#cb624-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb624-4"><a href="#cb624-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb624-5"><a href="#cb624-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb624-6"><a href="#cb624-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb624-7"><a href="#cb624-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb624-8"><a href="#cb624-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
-<span id="cb624-9"><a href="#cb624-9" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb624-10"><a href="#cb624-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb624-11"><a href="#cb624-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb624-12"><a href="#cb624-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb624-13"><a href="#cb624-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb624-14"><a href="#cb624-14" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb624-15"><a href="#cb624-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb624-16"><a href="#cb624-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb624-17"><a href="#cb624-17" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb624-18"><a href="#cb624-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb624-19"><a href="#cb624-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb625"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb625-1"><a href="#cb625-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb675"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb675-1"><a href="#cb675-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb675-2"><a href="#cb675-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
+<span id="cb675-3"><a href="#cb675-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb675-4"><a href="#cb675-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb675-5"><a href="#cb675-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
+<span id="cb675-6"><a href="#cb675-6" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb675-7"><a href="#cb675-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
+<span id="cb675-8"><a href="#cb675-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
+<span id="cb675-9"><a href="#cb675-9" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb675-10"><a href="#cb675-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb675-11"><a href="#cb675-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb675-12"><a href="#cb675-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb675-13"><a href="#cb675-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb675-14"><a href="#cb675-14" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb675-15"><a href="#cb675-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb675-16"><a href="#cb675-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb675-17"><a href="#cb675-17" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb675-18"><a href="#cb675-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb675-19"><a href="#cb675-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb676"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb676-1"><a href="#cb676-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h5 class="unnumbered" id="latex-example-95"><span
+<h5 class="unnumbered" id="latex-example-101"><span
class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb626"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb626-1"><a href="#cb626-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb626-2"><a href="#cb626-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb626-3"><a href="#cb626-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb626-4"><a href="#cb626-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
-<span id="cb626-5"><a href="#cb626-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
-<span id="cb626-6"><a href="#cb626-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
-<span id="cb626-7"><a href="#cb626-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb626-8"><a href="#cb626-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb626-9"><a href="#cb626-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
-<span id="cb626-10"><a href="#cb626-10" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb626-11"><a href="#cb626-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb626-12"><a href="#cb626-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb626-13"><a href="#cb626-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb626-14"><a href="#cb626-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb626-15"><a href="#cb626-15" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb626-16"><a href="#cb626-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb626-17"><a href="#cb626-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb626-18"><a href="#cb626-18" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb626-19"><a href="#cb626-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb626-20"><a href="#cb626-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb626-21"><a href="#cb626-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb627"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb627-1"><a href="#cb627-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb677"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb677-1"><a href="#cb677-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb677-2"><a href="#cb677-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb677-3"><a href="#cb677-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb677-4"><a href="#cb677-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
+<span id="cb677-5"><a href="#cb677-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
+<span id="cb677-6"><a href="#cb677-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
+<span id="cb677-7"><a href="#cb677-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb677-8"><a href="#cb677-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb677-9"><a href="#cb677-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
+<span id="cb677-10"><a href="#cb677-10" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb677-11"><a href="#cb677-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb677-12"><a href="#cb677-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb677-13"><a href="#cb677-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb677-14"><a href="#cb677-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb677-15"><a href="#cb677-15" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb677-16"><a href="#cb677-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb677-17"><a href="#cb677-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb677-18"><a href="#cb677-18" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb677-19"><a href="#cb677-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb677-20"><a href="#cb677-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb677-21"><a href="#cb677-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb678"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb678-1"><a href="#cb678-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h5 class="unnumbered" id="context-example-58">Con<span
+<h5 class="unnumbered" id="context-example-60">Con<span
class="tex">T<sub>e</sub>X</span>t Example</h5>
<p>Using a text editor, create a text document named
<code>document.tex</code> with the following content:</p>
-<div class="sourceCode" id="cb628"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb628-1"><a href="#cb628-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb628-2"><a href="#cb628-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
-<span id="cb628-3"><a href="#cb628-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb628-4"><a href="#cb628-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb628-5"><a href="#cb628-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb628-6"><a href="#cb628-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb628-7"><a href="#cb628-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb628-8"><a href="#cb628-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
-<span id="cb628-9"><a href="#cb628-9" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb628-10"><a href="#cb628-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb628-11"><a href="#cb628-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb628-12"><a href="#cb628-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb628-13"><a href="#cb628-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb628-14"><a href="#cb628-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb628-15"><a href="#cb628-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb628-16"><a href="#cb628-16" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb628-17"><a href="#cb628-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb628-18"><a href="#cb628-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb628-19"><a href="#cb628-19" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb628-20"><a href="#cb628-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb628-21"><a href="#cb628-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb628-22"><a href="#cb628-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
-<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb629"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb629-1"><a href="#cb629-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb679"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb679-1"><a href="#cb679-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb679-2"><a href="#cb679-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
+<span id="cb679-3"><a href="#cb679-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb679-4"><a href="#cb679-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb679-5"><a href="#cb679-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
+<span id="cb679-6"><a href="#cb679-6" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb679-7"><a href="#cb679-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
+<span id="cb679-8"><a href="#cb679-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
+<span id="cb679-9"><a href="#cb679-9" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb679-10"><a href="#cb679-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb679-11"><a href="#cb679-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb679-12"><a href="#cb679-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb679-13"><a href="#cb679-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb679-14"><a href="#cb679-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb679-15"><a href="#cb679-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb679-16"><a href="#cb679-16" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb679-17"><a href="#cb679-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb679-18"><a href="#cb679-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb679-19"><a href="#cb679-19" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb679-20"><a href="#cb679-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb679-21"><a href="#cb679-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb679-22"><a href="#cb679-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<p>Next, invoke LuaTeX from the terminal:</p>
+<div class="sourceCode" id="cb680"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb680-1"><a href="#cb680-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<section class="footnotes footnotes-end-of-document"
+<aside id="footnotes" class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
-<li id="fn1" role="doc-endnote"><p>Inlines notes are easier to write,
-since you don’t have to pick an identifier and move down to type the
-note.<a href="#fnref1" class="footnote-back"
-role="doc-backlink">↩︎</a></p></li>
-<li id="fn2" role="doc-endnote"><p>Inlines notes are easier to write,
-since you don’t have to pick an identifier and move down to type the
-note.<a href="#fnref2" class="footnote-back"
-role="doc-backlink">↩︎</a></p></li>
-<li id="fn3" role="doc-endnote"><p>Here is the note.<a href="#fnref3"
+<li id="fn1"><p>Inlines notes are easier to write, since you don’t have
+to pick an identifier and move down to type the note.<a href="#fnref1"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
-<li id="fn4" role="doc-endnote"><p>Here’s one with multiple blocks.</p>
+<li id="fn2"><p>Inlines notes are easier to write, since you don’t have
+to pick an identifier and move down to type the note.<a href="#fnref2"
+class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn3"><p>Here is the note.<a href="#fnref3" class="footnote-back"
+role="doc-backlink">↩︎</a></p></li>
+<li id="fn4"><p>Here’s one with multiple blocks.</p>
<p>Subsequent paragraphs are indented to show that they belong to the
previous note.</p>
<pre><code>{ some.code }</code></pre>
<p>The whole paragraph can be indented, or just the first line. In this
way, multi-paragraph notes work like multi-paragraph list items.<a
href="#fnref4" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
-<li id="fn5" role="doc-endnote"><p>Here is the note.<a href="#fnref5"
-class="footnote-back" role="doc-backlink">↩︎</a></p></li>
-<li id="fn6" role="doc-endnote"><p>Here’s one with multiple blocks.</p>
+<li id="fn5"><p>Here is the note.<a href="#fnref5" class="footnote-back"
+role="doc-backlink">↩︎</a></p></li>
+<li id="fn6"><p>Here’s one with multiple blocks.</p>
<p>Subsequent paragraphs are indented to show that they belong to the
previous note.</p>
<pre><code>{ some.code }</code></pre>
<p>The whole paragraph can be indented, or just the first line. In this
way, multi-paragraph notes work like multi-paragraph list items.<a
href="#fnref6" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
-<li id="fn7" role="doc-endnote"><p>Filenames other than
+<li id="fn7"><p>Filenames other than
<code>markdown-languages.json</code> may be specified using the
<code>contentBlocksLanguageMap</code> Lua option.<a href="#fnref7"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
-</section>
+</aside>
</body>
</html>
diff --git a/Master/texmf-dist/doc/generic/markdown/markdown.pdf b/Master/texmf-dist/doc/generic/markdown/markdown.pdf
index 4b99308976f..a5d91a23272 100644
--- a/Master/texmf-dist/doc/generic/markdown/markdown.pdf
+++ b/Master/texmf-dist/doc/generic/markdown/markdown.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/markdown/examples/example.md b/Master/texmf-dist/doc/latex/markdown/examples/example.md
index 8819ef5b672..5e5457088ed 100644
--- a/Master/texmf-dist/doc/latex/markdown/examples/example.md
+++ b/Master/texmf-dist/doc/latex/markdown/examples/example.md
@@ -41,9 +41,7 @@ This is a table:
This is a bullet list:
-* The first item of a bullet list
-
- that spans several paragraphs,
+* The first item of a bullet list,
* the second item of a bullet list,
@@ -57,9 +55,7 @@ This is a compact bullet list:
This is an ordered list:
-5. The first item of an ordered list
-
- that spans several paragraphs,
+5. The first item of an ordered list,
6. the second item of an ordered list,
@@ -67,9 +63,7 @@ This is an ordered list:
This is a fancy ordered list:
-e) The first item of an ordered list
-
- that spans several paragraphs,
+e) The first item of an ordered list,
f) the second item of an ordered list,
@@ -77,9 +71,7 @@ g) the third item of an ordered list.
This is an ordered list using hash enumerators:
-#. The first item of an ordered list
-
- that spans several paragraphs,
+#. The first item of an ordered list,
#. the second item of an ordered list,
diff --git a/Master/texmf-dist/doc/latex/markdown/examples/latex-luatex.tex b/Master/texmf-dist/doc/latex/markdown/examples/latex-luatex.tex
index 18b16bf7769..9b2e6234080 100644
--- a/Master/texmf-dist/doc/latex/markdown/examples/latex-luatex.tex
+++ b/Master/texmf-dist/doc/latex/markdown/examples/latex-luatex.tex
@@ -1,5 +1,15 @@
\documentclass{book}
\usepackage{polyglossia}
+% work around a bug in polyglossia
+\makeatletter
+\ExplSyntaxOn
+\pretocmd\xpg@set@alias@values{%
+ \prop_if_exist:cF { xpg@alias@keyvals@#1@#4 }
+ { \prop_new:c {xpg@alias@keyvals@#1@#4} }
+}{}{}
+\ExplSyntaxOff
+\makeatother
+% end of workaround
\setmainlanguage{english}
\usepackage{fontspec}
\usepackage{booktabs}
@@ -28,13 +38,13 @@
texMathSingleBackslash,
]{markdown}
% Set the document metadata using a YAML metadata block.
-\begin{markdown*}{hybrid}
+\begin{markdown}[hybrid]
---
title: An Example *Markdown* Document
-author: Vít Novotný
+author: Vít Starý Novotný
date: \today
---
-\end{markdown*}
+\end{markdown}
\begin{document}
% Typeset the document `example.md` by letting the Markdown package handle
% the conversion internally.
diff --git a/Master/texmf-dist/doc/latex/markdown/examples/latex-pdftex.tex b/Master/texmf-dist/doc/latex/markdown/examples/latex-pdftex.tex
index db6cbea8c80..7d188d75f25 100644
--- a/Master/texmf-dist/doc/latex/markdown/examples/latex-pdftex.tex
+++ b/Master/texmf-dist/doc/latex/markdown/examples/latex-pdftex.tex
@@ -29,13 +29,13 @@
texMathSingleBackslash,
]{markdown}
% Set the document metadata using a YAML metadata block.
-\begin{markdown*}{hybrid}
+\begin{markdown}[hybrid]
---
title: An Example *Markdown* Document
-author: Vít Novotný
+author: Vít Starý Novotný
date: \today
---
-\end{markdown*}
+\end{markdown}
\begin{document}
% Typeset the document `example.md` by letting the Markdown package handle
% the conversion internally.
@@ -55,7 +55,7 @@ date: \today
Here are some non-ASCII characters: *ěščřžýáíé*.
\end{markdown}
-\begin{markdown*}{html, hybrid}
+\begin{markdown}[hybrid]
Here is some <b>HTML code</b> mixed *with Markdown*. In \TeX, the HTML code
will be silently ignored, whereas in \TeX 4ht, the HTML code will be passed
through to the output:
@@ -72,5 +72,5 @@ through to the output:
<td>10</td>
</tr>
</table>
-\end{markdown*}
+\end{markdown}
\end{document}
diff --git a/Master/texmf-dist/doc/latex/markdown/examples/latex-tex4ht.tex b/Master/texmf-dist/doc/latex/markdown/examples/latex-tex4ht.tex
index db6cbea8c80..7d188d75f25 100644
--- a/Master/texmf-dist/doc/latex/markdown/examples/latex-tex4ht.tex
+++ b/Master/texmf-dist/doc/latex/markdown/examples/latex-tex4ht.tex
@@ -29,13 +29,13 @@
texMathSingleBackslash,
]{markdown}
% Set the document metadata using a YAML metadata block.
-\begin{markdown*}{hybrid}
+\begin{markdown}[hybrid]
---
title: An Example *Markdown* Document
-author: Vít Novotný
+author: Vít Starý Novotný
date: \today
---
-\end{markdown*}
+\end{markdown}
\begin{document}
% Typeset the document `example.md` by letting the Markdown package handle
% the conversion internally.
@@ -55,7 +55,7 @@ date: \today
Here are some non-ASCII characters: *ěščřžýáíé*.
\end{markdown}
-\begin{markdown*}{html, hybrid}
+\begin{markdown}[hybrid]
Here is some <b>HTML code</b> mixed *with Markdown*. In \TeX, the HTML code
will be silently ignored, whereas in \TeX 4ht, the HTML code will be passed
through to the output:
@@ -72,5 +72,5 @@ through to the output:
<td>10</td>
</tr>
</table>
-\end{markdown*}
+\end{markdown}
\end{document}
diff --git a/Master/texmf-dist/doc/latex/markdown/examples/latex-xetex.tex b/Master/texmf-dist/doc/latex/markdown/examples/latex-xetex.tex
index 18b16bf7769..9b2e6234080 100644
--- a/Master/texmf-dist/doc/latex/markdown/examples/latex-xetex.tex
+++ b/Master/texmf-dist/doc/latex/markdown/examples/latex-xetex.tex
@@ -1,5 +1,15 @@
\documentclass{book}
\usepackage{polyglossia}
+% work around a bug in polyglossia
+\makeatletter
+\ExplSyntaxOn
+\pretocmd\xpg@set@alias@values{%
+ \prop_if_exist:cF { xpg@alias@keyvals@#1@#4 }
+ { \prop_new:c {xpg@alias@keyvals@#1@#4} }
+}{}{}
+\ExplSyntaxOff
+\makeatother
+% end of workaround
\setmainlanguage{english}
\usepackage{fontspec}
\usepackage{booktabs}
@@ -28,13 +38,13 @@
texMathSingleBackslash,
]{markdown}
% Set the document metadata using a YAML metadata block.
-\begin{markdown*}{hybrid}
+\begin{markdown}[hybrid]
---
title: An Example *Markdown* Document
-author: Vít Novotný
+author: Vít Starý Novotný
date: \today
---
-\end{markdown*}
+\end{markdown}
\begin{document}
% Typeset the document `example.md` by letting the Markdown package handle
% the conversion internally.
diff --git a/Master/texmf-dist/doc/optex/markdown/examples/example.md b/Master/texmf-dist/doc/optex/markdown/examples/example.md
new file mode 100644
index 00000000000..5e5457088ed
--- /dev/null
+++ b/Master/texmf-dist/doc/optex/markdown/examples/example.md
@@ -0,0 +1,189 @@
+# This is an H1
+
+## This is an H2
+
+### This is an H3
+
+#### This is an H4
+
+##### This is an H5
+
+###### This is an H6
+
+This is a text paragraph containing an ellipsis ... and followed by a thematic break.
+
+***
+
+This is inline `code`. This is a [link](http://google.cz "Google"). _This is an *emphasized* span of text_. __This is a **strongly emphasized** span of text__.
+
+ ![example image](example-image.png "An example image from Martin Scharrer's mwe package")
+
+ /scientists.csv (The great minds of the 19th century rendered via a content block)
+
+This is a fenced code block:
+
+``` latex
+\documentclass{article}
+\begin{document}
+ Hello world!
+\end{document}
+```
+
+This is a table:
+
+| Right | Left | Default | Center |
+|------:|:-----|---------|:------:|
+| 12 | 12 | 12 | 12 |
+| 123 | 123 | 123 | 123 |
+| 1 | 1 | 1 | 1 |
+
+ : Demonstration of pipe table syntax.
+
+This is a bullet list:
+
+* The first item of a bullet list,
+
+* the second item of a bullet list,
+
+* the third item of a bullet list.
+
+This is a compact bullet list:
+
+* The first item of a bullet list,
+* the second item of a bullet list,
+* the third item of a bullet list.
+
+This is an ordered list:
+
+5. The first item of an ordered list,
+
+6. the second item of an ordered list,
+
+7. the third item of an ordered list.
+
+This is a fancy ordered list:
+
+e) The first item of an ordered list,
+
+f) the second item of an ordered list,
+
+g) the third item of an ordered list.
+
+This is an ordered list using hash enumerators:
+
+#. The first item of an ordered list,
+
+#. the second item of an ordered list,
+
+#. the third item of an ordered list.
+
+This is a compact ordered list:
+
+5. The first item of an ordered list,
+6. the second item of an ordered list,
+7. the third item of an ordered list.
+
+This is a compact ordered list using hash enumerators:
+
+#. The first item of an ordered list,
+#. the second item of an ordered list,
+#. the third item of an ordered list.
+
+This is a compact fancy ordered list using hash enumerators:
+
+#) The first item of an ordered list,
+#) the second item of an ordered list,
+#) the third item of an ordered list.
+
+This is a task list:
+
+* [ ] Some unfinished task
+* [/] Some half-finished task
+* [X] Some finished task
+* An item of an unordered list
+ #. [ ] Some unfinished subtask
+ #. [.] Some half-finished subtask
+ #. [x] Some finished subtask
+ #. An item of an ordered list
+
+This is a definition list:
+
+Term 1
+
+: Definition 1 with some ~~removed text~~
+
+Term 2
+
+: Definition 2
+
+ Some code, part of Definition 2
+
+ Third paragraph of Definition 2.
+
+: Definition 3
+
+This is a compact definition list:
+
+Term 1
+: Definition 1
+Term 2
+: Definition 2
+: Definition 3
+
+This is a ^superscript^ and a ~subscript~.
+
+This is a block quote:
+
+> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+
+Here is a note reference[^1] and another.[^longnote]
+Here is an inline note.^[Inlines notes are easier to
+write, since you don't have to pick an identifier and
+move down to type the note.]
+
+[^1]: Here is the note.
+
+[^longnote]: Here's one with multiple blocks.
+
+ Subsequent paragraphs are indented to show that they
+belong to the previous note.
+
+ Some code
+
+ The whole paragraph can be indented, or just the first
+ line. In this way, multi-paragraph notes work like
+ multi-paragraph list items.
+
+This is raw `\TeX`{=tex} code:
+
+``` {=tex}
+$$ x^n + y^n = z^n $$
+```
+
+| this is a line block that
+| spans multiple
+| even
+ discontinuous
+| lines
+
+This is inline and display TeX math created using dollars signs:
+
+$E=mc^2$
+
+$$E=mc^2$$
+
+This is inline and display TeX math created using single backslashes:
+
+\(E=mc^2\)
+
+\[E=mc^2\]
+
+This is inline and display TeX math created using double backslashes:
+
+\\(E=mc^2\\)
+
+\\[E=mc^2\\]
diff --git a/Master/texmf-dist/doc/optex/markdown/examples/optex.tex b/Master/texmf-dist/doc/optex/markdown/examples/optex.tex
new file mode 100644
index 00000000000..d39369f6b39
--- /dev/null
+++ b/Master/texmf-dist/doc/optex/markdown/examples/optex.tex
@@ -0,0 +1,379 @@
+\fontfam[lm]
+\hyperlinks\Blue\Blue
+
+% Set options of the Markdown module
+\_def \markdownOptions {
+ cacheDir="_markdown_example",
+ definitionLists=true,
+ fencedCode=true,
+ hashEnumerators=true,
+ smartEllipses=true,
+ strikeThrough=true,
+}
+
+% Set renderers of the Markdown module
+%% Attribute Renderers
+%%% TODO
+
+%% Block Quote Renderers
+\_def \markdownRendererBlockQuoteBegin {\_begblock}
+\_def \markdownRendererBlockQuoteEnd {\_endblock}
+
+%% Bracketed Spans Attribute Context Renderers
+%%% TODO
+
+%% Bullet List Renderers
+\_def \markdownRendererUlBegin {\_begitems \_itemskipamount=\_olistskipamount}
+\_def \markdownRendererUlBeginTight {\_begitems}
+\_def \markdownRendererUlItem {\_startitem}
+\_def \markdownRendererUlItemEnd {\_par}
+\_def \markdownRendererUlEnd {\_enditems}
+\_def \markdownRendererUlEndTight {\_enditems}
+
+%% Citations Renderers
+%%% TODO
+
+%% Code Block Renderers
+\_def \markdownRendererInputVerbatim #1{\_verbinput (-) {#1} }
+\_def \markdownRendererInputFencedCode #1#2{\_verbinput \_hisyntax{#2} (-) {#1} }
+
+%% Code Span Renderer
+\_def \markdownRendererCodeSpan #1{{\_ttfont #1}}
+
+%% Code Span Attribute Context Renderers
+%%% TODO
+
+%% Content Block Renderers
+%%% TODO
+
+%% Definition List Renderers
+\_sdef{_item:d}{\_aftergroup\dword}
+\_def \dword #1#2{{\bf#2 }\ignorespaces}
+\_def \markdownRendererDlBegin {\_begitems \_style d \_itemskipamount=\_olistskipamount}
+\_def \markdownRendererDlBeginTight {\_begitems \_style d}
+\_def \markdownRendererDlItem {%
+ \_begingroup
+ \_def \markdownRendererInterblockSeparator {%
+ \_par
+ \_advance\_leftskip by\_iindent
+ \_def \markdownRendererInterblockSeparator {\_par}%
+ }%
+ \_startitem
+}
+\_def \markdownRendererDlItemEnd {%
+ \_par
+ \_endgroup
+}
+\_def \markdownRendererDlDefinitionBegin {}
+\_def \markdownRendererDlDefinitionEnd #1{%
+ \_ifx #1\markdownRendererDlDefinitionBegin
+ \_firstnoindent
+ \markdownRendererInterblockSeparator
+ \_vskip\_itemskipamount
+ \_fi
+ #1%
+}
+\_def \markdownRendererDlEnd {\_enditems}
+\_def \markdownRendererDlEndTight {\_enditems}
+
+%% Ellipsis Renderer
+\_def \markdownRendererEllipsis {$\_ldots$}
+
+%% Emphasis Renderers
+\_def \markdownRendererEmphasis #1{{\_em #1}}
+\_def \markdownRendererStrongEmphasis #1{{\_bf #1}}
+
+%% Fenced Code Attribute Context Renderers
+%%% TODO
+
+%% Fenced Div Attribute Context Renderers
+%%% TODO
+
+%% Header Attribute Context Renderers
+%%% TODO
+
+%% Heading Renderers
+\_def \markdownRendererHeadingOne #1{\_printtit{#1}}
+\_def \markdownRendererHeadingTwo #1{\_inchap{#1}}
+\_def \markdownRendererHeadingThree #1{\_insec{#1}}
+\_def \markdownRendererHeadingFour #1{\_insecc{#1}}
+\_def \markdownRendererHeadingFive #1{{\_bf #1}\_firstnoindent}
+\_def \markdownRendererHeadingSix #1{#1\_firstnoindent}
+
+%% HTML Comment Renderers
+%%% TODO
+
+%% HTML Tag and Element Renderers
+%%% TODO
+
+%% Image Renderer
+\_def \markdownRendererImage #1#2#3#4{%
+ \_topinsert
+ \_centerline{\_inspic{#3}}%
+ \_cskip
+ \_caption/f #4%
+ \_par
+ \_endinsert
+}
+
+%% Image Attribute Context Renderers
+%%% TODO
+
+%% Interblock Separator Renderer
+\_def \markdownRendererInterblockSeparator {\_par}
+\_def \markdownRendererParagraphSeparator {\markdownRendererInterblockSeparator}
+
+%% Line Block Renderers
+%%% TODO
+
+%% Line Break Renderers
+\_def \markdownRendererSoftLineBreak { }
+\_def \markdownRendererHardLineBreak {\_nl}
+
+%% Link Renderer
+\_def \markdownRendererLink #1#2#3#4{\_ea\_ulink\_ea[\_expanded{#3}]{#1}}
+
+%% Link Attribute Context Renderers
+%%% TODO
+
+%% Markdown Document Renderers
+\_let \markdownRendererDocumentBegin \_relax
+\_let \markdownRendererDocumentEnd \_relax
+
+%% Non-Breaking Space Renderer
+\_def \markdownRendererNbsp {~}
+
+%% Note Renderer
+%%% TODO
+
+%% Ordered List Renderers
+\_def \markdownRendererOlBegin {\_begitems \_style n \_itemskipamount=\_olistskipamount}
+\_def \markdownRendererOlBeginTight {\_begitems \_style n}
+\_def \markdownRendererFancyOlBegin #1#2{\markdownRendererOlBegin}
+\_def \markdownRendererFancyOlBeginTight #1#2{\markdownRendererOlBeginTight}
+\_def \markdownRendererOlItem {\_startitem}
+\_def \markdownRendererOlItemEnd {\_par}
+\_def \markdownRendererOlItemWithNumber #1{\_itemnum=#1 \_advance\_itemnum by -1 \_startitem}
+\_let \markdownRendererFancyOlItem \markdownRendererOlItem
+\_let \markdownRendererFancyOlItemEnd \markdownRendererOlItemEnd
+\_let \markdownRendererFancyOlItemWithNumber \markdownRendererOlItemWithNumber
+\_def \markdownRendererOlEnd {\_enditems}
+\_def \markdownRendererOlEndTight {\_enditems}
+\_let \markdownRendererFancyOlEndTight \markdownRendererOlEndTight
+\_let \markdownRendererFancyOlEnd \markdownRendererOlEnd
+
+%% Raw Content Renderers
+%%% TODO
+
+%% Section Renderers
+\_let \markdownRendererSectionBegin \_relax
+\_let \markdownRendererSectionEnd \_relax
+
+%% Replacement Character Renderers
+\_def \markdownRendererReplacementCharacter {^^^^fffd}
+
+%% Special Character Renderers
+\_edef \markdownRendererAmpersand #1{\_csstring\&}
+\_edef \markdownRendererBackslash #1{\_csstring\\}
+\_edef \markdownRendererCircumflex #1{\_csstring\^}
+\_edef \markdownRendererDollarSign #1{\_csstring\$}
+\_edef \markdownRendererHash #1{\_csstring\#}
+\_edef \markdownRendererLeftBrace #1{\_csstring\{}
+\_edef \markdownRendererPercentSign #1{\_csstring\%}
+\_def \markdownRendererPipe #1{|}
+\_edef \markdownRendererRightBrace #1{\_csstring\}}
+\_edef \markdownRendererTilde #1{\_csstring\~}
+\_def \markdownRendererUnderscore #1{_}
+
+%% Strike-Through Renderer
+\_def \markdownRendererStrikeThrough #1{%
+ \_setbox0=\_hbox {#1}%
+ \_leavevmode
+ \_rlap {\raise.5ex \_hbox to \_wd0 {\_hfil \_hrulefill \_hfil}}%
+ \_box0
+}
+
+%% Subscript Renderer
+%%% TODO
+
+%% Superscript Renderer
+%%% TODO
+
+%% Table Renderer
+%%% TODO
+
+%% TeX Math Renderers
+%%% TODO
+
+%% Thematic Break Renderer
+\_def \markdownRendererThematicBreak {%
+ \_vskip 0.5\_baselineskip
+ \_hrule
+ \_par
+ \_vskip 0.5\_baselineskip
+ \_firstnoindent
+}
+
+%% Tickbox Renderers
+%%% TODO
+
+%% YAML Metadata Renderers
+\_let \markdownRendererJekyllDataBegin \_relax
+\_let \markdownRendererJekyllDataEnd \_relax
+\_def \markdownRendererJekyllDataMappingBegin #1#2{}
+\_let \markdownRendererJekyllDataMappingEnd \_relax
+\_def \markdownRendererJekyllDataSequenceBegin #1#2{}
+\_let \markdownRendererJekyllDataSequenceEnd \_relax
+\_def \markdownRendererJekyllDataBoolean #1#2{}
+\_def \markdownRendererJekyllDataNumber #1#2{}
+\_def \markdownRendererJekyllDataString #1#2{}
+\_def \markdownRendererJekyllDataEmpty #1{}
+
+% Load the Markdown module and set TeX macros for the Markdown module
+\_directlua{
+ kpse = require("kpse")
+ kpse.set_program_name("luatex")
+ markdown = require("markdown")
+}
+
+\_eoldef \markdownBegin #1{% #1 includes the end of the current line, parameters can be here
+ \_def\_markdownParams{#1}%
+ \_bgroup \_setverb \_savemathsb \_endlinechar=`\^^J
+ \_markdownBeginA
+}
+
+\_ea\_def \_ea\_markdownBeginA \_ea#\_ea1\_csstring\\markdownEnd#2^^J{%
+ \_restoremathsb \_egroup
+ \_bgroup
+ \_catcode`\%=12\_relax
+ \_catcode`\#=12\_relax
+ \_directlua {
+ % Prepare a table of options.
+ local defaultOptions = {\markdownOptions}
+ local currentOptions = {\_markdownParams}
+ local options = {}
+ for k,v in pairs(defaultOptions) do options[k] = v end
+ for k,v in pairs(currentOptions) do options[k] = v end
+ % Ensure that the cache directory exists.
+ if options.cacheDir then
+ local lfs = require("lfs")
+ if not lfs.isdir(options.cacheDir) then
+ assert(lfs.mkdir(options.cacheDir))
+ end
+ end
+ % Convert Markdown to TeX and print it.
+ local convert = markdown.new(options)
+ local input = "\_luaescapestring{#1}"
+ local output = convert(input)
+ tex.print(output)
+ }%
+ \_egroup
+}
+
+% Set the document metadata using a YAML metadata block
+\markdownBegin hybrid=true,jekyllData=true
+---
+title: An Example *Markdown* Document
+author: Vít Starý Novotný
+date: \today
+---
+
+# This is an H1
+
+## This is an H2
+
+### This is an H3
+
+#### This is an H4
+
+##### This is an H5
+
+###### This is an H6
+
+This is a text paragraph containing an ellipsis ... and followed by a
+thematic break.
+
+***
+
+This is inline `code`. This is a [link](http://google.cz "Google").
+This is an *emphasized* span of text.
+This is a __strongly emphasized__ span of text.
+
+ ![example image](example-image.png "An example image from Martin Scharrer's mwe package")
+
+This is a fenced code block:
+
+``` tex
+\fontfam[LMfonts]
+Hello World! \bye
+```
+
+This is a bullet list:
+
+* The first item of a bullet list,
+
+* the second item of a bullet list,
+
+* the third item of a bullet list.
+
+This is a compact bullet list:
+
+* The first item of a bullet list,
+* the second item of a bullet list,
+* the third item of a bullet list.
+
+This is an ordered list:
+
+5. The first item of an ordered list,
+
+6. the second item of an ordered list,
+
+7. the third item of an ordered list.
+
+This is an ordered list using hash enumerators:
+
+#. The first item of an ordered list,
+
+#. the second item of an ordered list,
+
+#. the third item of an ordered list.
+
+This is a compact ordered list:
+
+5. The first item of an ordered list,
+6. the second item of an ordered list,
+7. the third item of an ordered list.
+
+This is a compact ordered list using hash enumerators:
+
+#. The first item of an ordered list,
+#. the second item of an ordered list,
+#. the third item of an ordered list.
+
+This is a definition list:
+
+Term 1
+
+: Definition 1 with some ~~removed text~~
+
+Term 2
+
+: Definition 2
+
+ Some code, part of Definition 2
+
+ Third paragraph of Definition 2.
+
+: Definition 3
+
+This is a compact definition list:
+
+Term 1
+: Definition 1
+Term 2
+: Definition 2
+: Definition 3
+
+\markdownEnd
+
+\bye
diff --git a/Master/texmf-dist/doc/optex/markdown/examples/scientists.csv b/Master/texmf-dist/doc/optex/markdown/examples/scientists.csv
new file mode 100644
index 00000000000..dee7830edf8
--- /dev/null
+++ b/Master/texmf-dist/doc/optex/markdown/examples/scientists.csv
@@ -0,0 +1,4 @@
+Name,Surname,Born
+Albert,Einstein,1879
+Marie,Curie,1867
+Thomas,Edison,1847
diff --git a/Master/texmf-dist/scripts/markdown/markdown-cli.lua b/Master/texmf-dist/scripts/markdown/markdown-cli.lua
index 2d23c9a7bd8..32a8753873e 100644
--- a/Master/texmf-dist/scripts/markdown/markdown-cli.lua
+++ b/Master/texmf-dist/scripts/markdown/markdown-cli.lua
@@ -20,7 +20,7 @@
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--
--- Copyright (C) 2016-2023 Vít Novotný
+-- Copyright (C) 2016-2024 Vít Starý Novotný
--
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -33,7 +33,7 @@
-- version 2005/12/01 or later.
--
-- This work has the LPPL maintenance status `maintained'.
--- The Current Maintainer of this work is Vít Novotný.
+-- The Current Maintainer of this work is Vít Starý Novotný.
--
-- Send bug reports, requests for additions and questions
-- either to the GitHub issue tracker at
@@ -58,56 +58,59 @@
-- those in the standard .ins files.
--
local metadata = {
- version = "2.23.0-0-g0b22f91",
+ version = "3.4.1-0-g457226ae",
comment = "A module for the conversion from markdown to plain TeX",
- author = "John MacFarlane, Hans Hagen, Vít Novotný",
+ author = "John MacFarlane, Hans Hagen, Vít Starý Novotný",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
- "2016-2023 Vít Novotný"},
+ "2016-2023 Vít Starý Novotný"},
license = "LPPL 1.3c"
}
local defaultOptions = {}
+defaultOptions.eagerCache = false
+defaultOptions.singletonCache = true
defaultOptions.cacheDir = "."
defaultOptions.contentBlocksLanguageMap = "markdown-languages.json"
defaultOptions.debugExtensionsFileName = "debug-extensions.json"
defaultOptions.frozenCacheFileName = "frozenCache.tex"
+defaultOptions.autoIdentifiers = false
defaultOptions.blankBeforeBlockquote = false
defaultOptions.blankBeforeCodeFence = false
defaultOptions.blankBeforeDivFence = false
defaultOptions.blankBeforeHeading = false
+defaultOptions.blankBeforeList = false
defaultOptions.bracketedSpans = false
-defaultOptions.breakableBlockquotes = false
+defaultOptions.breakableBlockquotes = true
defaultOptions.citationNbsps = true
defaultOptions.citations = false
defaultOptions.codeSpans = true
defaultOptions.contentBlocks = false
+defaultOptions.contentLevel = "block"
defaultOptions.debugExtensions = false
defaultOptions.definitionLists = false
-defaultOptions.eagerCache = true
defaultOptions.expectJekyllData = false
defaultOptions.extensions = {}
defaultOptions.fancyLists = false
-defaultOptions.fencedCode = false
+defaultOptions.fencedCode = true
defaultOptions.fencedCodeAttributes = false
defaultOptions.fencedDivs = false
defaultOptions.finalizeCache = false
defaultOptions.frozenCacheCounter = 0
-defaultOptions.hardLineBreaks = false
+defaultOptions.gfmAutoIdentifiers = false
defaultOptions.hashEnumerators = false
defaultOptions.headerAttributes = false
-defaultOptions.html = false
+defaultOptions.html = true
defaultOptions.hybrid = false
defaultOptions.inlineCodeAttributes = false
-defaultOptions.inlineFootnotes = false
defaultOptions.inlineNotes = false
defaultOptions.jekyllData = false
defaultOptions.linkAttributes = false
defaultOptions.lineBlocks = false
-defaultOptions.footnotes = false
+defaultOptions.mark = false
defaultOptions.notes = false
defaultOptions.pipeTables = false
-defaultOptions.preserveTabs = false
-defaultOptions.rawAttribute = true
+defaultOptions.preserveTabs = true
+defaultOptions.rawAttribute = false
defaultOptions.relativeReferences = false
defaultOptions.shiftHeadings = 0
defaultOptions.slice = "^ $"
@@ -117,6 +120,7 @@ defaultOptions.strikeThrough = false
defaultOptions.stripIndent = false
defaultOptions.subscripts = false
defaultOptions.superscripts = false
+defaultOptions.tableAttributes = false
defaultOptions.tableCaptions = false
defaultOptions.taskLists = false
defaultOptions.texComments = false
@@ -250,9 +254,8 @@ local kpse
(function()
local should_initialize = package.loaded.kpse == nil
or tex.initialize ~= nil
- local ran_ok
- ran_ok, kpse = pcall(require, "kpse")
- if ran_ok and should_initialize then
+ kpse = require("kpse")
+ if should_initialize then
kpse.set_program_name("luatex")
end
end)()
@@ -272,3 +275,6 @@ if output_filename then
else
assert(io.write(output))
end
+if options.cacheDir then
+ lfs.rmdir(options["cacheDir"])
+end
diff --git a/Master/texmf-dist/source/generic/markdown/docstrip.cfg b/Master/texmf-dist/source/generic/markdown/docstrip.cfg
index 853817bb0a7..9dc5f652309 100644
--- a/Master/texmf-dist/source/generic/markdown/docstrip.cfg
+++ b/Master/texmf-dist/source/generic/markdown/docstrip.cfg
@@ -22,7 +22,7 @@
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE^^J%
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.^^J%
--^^J%
--- Copyright (C) 2016-2023 Vít Novotný^^J%
+-- Copyright (C) 2016-2024 Vít Starý Novotný^^J%
--^^J%
-- This work may be distributed and/or modified under the^^J%
-- conditions of the LaTeX Project Public License, either version 1.3^^J%
@@ -35,7 +35,7 @@
-- version 2005/12/01 or later.^^J%
--^^J%
-- This work has the LPPL maintenance status `maintained'.^^J%
--- The Current Maintainer of this work is Vít Novotný.^^J%
+-- The Current Maintainer of this work is Vít Starý Novotný.^^J%
--^^J%
-- Send bug reports, requests for additions and questions^^J%
-- either to the GitHub issue tracker at^^J%
@@ -62,7 +62,7 @@
\let\luapostamble\empty
\declarepreamble\texpreamble
-Copyright (C) 2016-2023 Vít Novotný
+Copyright (C) 2016-2024 Vít Starý Novotný
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
@@ -72,7 +72,7 @@ The latest version of this license is in
http://www.latex-project.org/lppl.txt
This work has the LPPL maintenance status `maintained'.
-The Current Maintainer of this work is Vít Novotný.
+The Current Maintainer of this work is Vít Starý Novotný.
Send bug reports, requests for additions and questions
either to the GitHub issue tracker at
diff --git a/Master/texmf-dist/source/generic/markdown/markdown.dtx b/Master/texmf-dist/source/generic/markdown/markdown.dtx
index 3edb022e15a..26b5db62f10 100644
--- a/Master/texmf-dist/source/generic/markdown/markdown.dtx
+++ b/Master/texmf-dist/source/generic/markdown/markdown.dtx
@@ -104,13 +104,7 @@
\newunicodechar{☒}{\markdownRendererTickedBox}
\newunicodechar{⌛}{\markdownRendererHalfTickedBox}
\newunicodechar{☐}{\markdownRendererUntickedBox}
-\usepackage{emoji}
-\makeatletter
-\@ifpackagelater{emoji}{2020/03/16}{
- \newunicodechar{😉}{\emoji{winking-face}}
-}{
- \newunicodechar{😉}{;-)}
-}
+\newunicodechar{😉}{;-)}
\makeatother
% Set up the catcodes.
@@ -122,7 +116,7 @@
---
title: A Markdown Interpreter for \TeX
url: https://github.com/witiko/markdown
-authors: [Vít Novotný]
+authors: [Vít Starý Novotný]
email: witiko@mail.muni.cz
revision: \markdownVersion
date: \markdownLastModified
@@ -763,23 +757,17 @@ abbr {
author = {Knuth, Donald Ervin},
year = {1986},
title = {\TeX: The Program},
- isbn = {0-201-13437-7},
+ isbn = {978-0-201-13437-7},
pagetotal = {xvi, 594},
series = {Computers \& Typesetting},
volume = {B},
location = {Reading, MA},
publisher = {Addison-Wesley}}
-@online{novotny21,
- author = {Novotný, Vít},
- title = {\Hologo{LaTeX2e} no longer keys packages by pathnames},
- date = {2021-02-20},
- url = {https://github.com/latex3/latex2e/issues/510},
- urldate = {2021-02-21}}
@book{eijkhout92,
author = {Victor Eijkhout},
title = {\TeX{} by Topic},
subtitle = {A \TeX nician's Reference},
- isbn = {0-201-56882-0},
+ isbn = {978-0-201-56882-0},
pagetotal = {307},
date = {1992-02-01},
location = {Wokingham, England},
@@ -792,50 +780,23 @@ abbr {
pages = {196-205},
doi = {10.1109/ICPC.2010.41}}
%</techdoc-bibliography>
-%<*latex-themes-witiko-markdown-techdoc>
-\ProvidesPackage{markdownthemewitiko_markdown_techdoc}[2022/02/23]
+%<@@=markdown>
+%<*themes-witiko-markdown-techdoc>
+\ProvidesPackage{markdownthemewitiko_markdown_techdoc}[2022/12/13]
\RequirePackage{etoolbox}
\markdownSetup{
renderers = {
- head*Four = {%
- \paragraph{#1}\leavevmode
- \def\markdownRendererInterblockSeparator{%
- \let\markdownRendererInterblockSeparator\par
- }%
- \noindent
- },
+ head*Four = {\paragraph{#1}\leavevmode},
},
rendererPrototypes = {
codeSpan = {\inline{#1}},
- jek*llDataEnd = {%
+ jekyllData(End) = {%
\AfterEndPreamble{%
\printtitlepage
\tableofcontents
{\def\addcontentsline##1##2##3{}\listoffigures}%
}%
},
- headerAttributeContextBegin = {
- \markdownSetup{
- rendererPrototypes = {
- attributeIdentifier = {%
- \begingroup
- \def\next####1{%
- \def####1########1{%
- \endgroup
- ####1{########1}%
- \label{sec:##1}%
- }%
- }%
- \next\markdownRendererHeadingOne
- \next\markdownRendererHeadingTwo
- \next\markdownRendererHeadingThree
- \next\markdownRendererHeadingFour
- \next\markdownRendererHeadingFive
- \next\markdownRendererHeadingSix
- },
- },
- }%
- },
},
jekyllDataRenderers = {
/authors/* = {%
@@ -853,6 +814,17 @@ abbr {
url = {\gdef\ltd@title@url{#1}},
}
}
+\ExplSyntaxOn
+\markdownSetup{
+ rendererPrototypes = {
+ headerAttributeContextEnd = {
+ \seq_map_inline:Nn
+ \l_@@_header_identifiers_seq
+ { \label { sec:##1 } }
+ },
+ },
+}
+\ExplSyntaxOff
\renewcommand\markdownLaTeXRendererDirectOrIndirectLink[4]{%
#1\footnote{See \url{#3}.}}
\RequirePackage{varioref}
@@ -884,12 +856,12 @@ abbr {
dlEnd = {\end{optionlist}},
}
}
-%</latex-themes-witiko-markdown-techdoc>
+%</themes-witiko-markdown-techdoc>
%<*manual>
---
title: Markdown Package User Manual
-author: Vít Novotný
+author: Vít Starý Novotný
date: \markdownVersion{} \markdownLastModified{}
---
@@ -901,7 +873,7 @@ date: \markdownVersion{} \markdownLastModified{}
Introduction
============
-The [Markdown package][pkg] converts [markdown][] markup to \TeX{} commands. The
+The [Markdown package][pkg] converts [CommonMark][] markup to \TeX{} commands. The
functionality is provided both as a Lua module and as plain \TeX{}, \LaTeX{}, and
\Hologo{ConTeXt} macro packages that can be used to directly typeset \TeX{} documents
containing markdown markup. Unlike other convertors, the Markdown package
@@ -909,10 +881,10 @@ does not require any external programs, and makes it easy to redefine how each
and every markdown element is rendered. Creative abuse of the markdown
syntax is encouraged. 😉
- [markdown]: https://daringfireball.net/projects/markdown/basics
- (Daring Fireball: Markdown Basics)
- [pkg]: https://ctan.org/pkg/markdown
- (CTAN: Package markdown)
+ [commonmark]: https://commonmark.org/
+ (CommonMark: A strongly defined, highly compatible specification of Markdown)
+ [pkg]: https://ctan.org/pkg/markdown
+ (CTAN: Package markdown)
% This document is a technical documentation for the \pkg{Markdown} package. It
% consists of three sections. This section introduces the package and outlines
@@ -942,9 +914,9 @@ documentation][techdoc].
local metadata = {
version = "(((VERSION)))",
comment = "A module for the conversion from markdown to plain TeX",
- author = "John MacFarlane, Hans Hagen, Vít Novotný",
+ author = "John MacFarlane, Hans Hagen, Vít Starý Novotný",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
- "2016-2023 Vít Novotný"},
+ "2016-2023 Vít Starý Novotný"},
license = "LPPL 1.3c"
}
@@ -994,15 +966,19 @@ make base
``````
This should produce the following files:
-* `markdown.lua`, the Lua module,
-* `libraries/markdown-tinyyaml.lua`, an external library for reading \acro{yaml},
-* `markdown-cli.lua`, the Lua command-line interface,
-* `markdown.tex`, the plain \TeX{} macro package,
-* `markdown.sty`, the \LaTeX{} package,
-* `markdownthemewitiko_dot.sty`, the `witiko/dot` \LaTeX{} theme,
-* `markdownthemewitiko_graphicx_http.sty`, the `witiko/graphicx/http` \LaTeX{} theme,
-* `markdownthemewitiko_tilde.sty`, the `witiko/tilde` \LaTeX{} theme, and
-* `t-markdown.tex`, the \Hologo{ConTeXt} module.
+* `markdown.lua`: The Lua module
+* `libraries/markdown-tinyyaml.lua`: An external library for reading \acro{yaml}
+* `markdown-cli.lua`: The Lua command-line interface
+* `markdown.tex`: The plain \TeX{} macro package
+* `markdown.sty`: The \LaTeX{} package
+* `markdownthemewitiko_dot.sty`: The `witiko/dot` \LaTeX{} theme
+* `markdownthemewitiko_graphicx_http.sty`: The `witiko/graphicx/http` \LaTeX{} theme
+* `markdownthemewitiko_tilde.tex`: The `witiko/tilde` theme
+* `markdownthemewitiko_markdown_defaults.tex`,
+ `markdownthemewitiko_markdown_defaults.sty`, and
+ `t-markdownthemewitiko_markdown_defaults.tex`: The `witiko/markdown/defaults`
+ theme
+* `t-markdown.tex`: The \Hologo{ConTeXt} module
### Local Installation
@@ -1014,11 +990,14 @@ placed:
* `⟨TEXMF⟩/tex/luatex/markdown/markdown-tinyyaml.lua`
* `⟨TEXMF⟩/scripts/markdown/markdown-cli.lua`
* `⟨TEXMF⟩/tex/generic/markdown/markdown.tex`
+* `⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_tilde.tex`
+* `⟨TEXMF⟩/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex`
* `⟨TEXMF⟩/tex/latex/markdown/markdown.sty`
* `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_dot.sty`
* `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty`
-* `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_tilde.sty`
+* `⟨TEXMF⟩/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty`
* `⟨TEXMF⟩/tex/context/third/markdown/t-markdown.tex`
+* `⟨TEXMF⟩/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex`
where `⟨TEXMF⟩` corresponds to a root of your \TeX{} distribution, such as
`/usr/share/texmf` and `~/texmf` on UN\*X systems or
@@ -1031,10 +1010,20 @@ Alternatively, you can also store the above files in the same folder as your
\TeX{} document and distribute them together. This way your document can be
portably typeset on legacy \TeX{} distributions.
-Since Markdown version 2.10.0, the file `markdown.tex` must be placed in
-a directory named `markdown` due to [issue #74][issue-74].
-
- [issue-74]: https://github.com/witiko/markdown/issues/74 (Does not compile if user names own document markdown.tex)
+This is where the individual files should be placed:
+
+* `./markdown.lua`
+* `./markdown-tinyyaml.lua`
+* `./markdown-cli.lua`
+* `./markdown/markdown.tex`
+* `./markdown.sty`
+* `./t-markdown.tex`
+* `./markdownthemewitiko_dot.sty`
+* `./markdownthemewitiko_graphicx_http.sty`
+* `./markdownthemewitiko_tilde.tex`
+* `./markdownthemewitiko_markdown_defaults.tex`
+* `./markdownthemewitiko_markdown_defaults.sty`
+* `./t-markdownthemewitiko_markdown_defaults.tex`
%</manual>
%<*lua>
@@ -1077,23 +1066,7 @@ local lpeg = require("lpeg")
%
% \end{markdown}
% \begin{macrocode}
-local unicode
-(function()
- local ran_ok
- ran_ok, unicode = pcall(require, "unicode")
-% \end{macrocode}
-% \begin{markdown}
-%
-% If the Selene Unicode library is unavailable (could be because we are using
-% LuaMeta\TeX) and we are using Lua${}\geq{}$5.3, we will use the built-in
-% support for Unicode.
-%
-% \end{markdown}
-% \begin{macrocode}
- if not ran_ok then
- unicode = {utf8 = {char=utf8.char}}
- end
-end)()
+local unicode = require("unicode")
% \end{macrocode}
% \par
% \begin{markdown}
@@ -1133,22 +1106,10 @@ local md5 = require("md5");
% \begin{macrocode}
local should_initialize = package.loaded.kpse == nil
or tex.initialize ~= nil
- local ran_ok
- ran_ok, kpse = pcall(require, "kpse")
- if ran_ok and should_initialize then
+ kpse = require("kpse")
+ if should_initialize then
kpse.set_program_name("luatex")
end
-% \end{macrocode}
-% \begin{markdown}
-%
-% If the \pkg{Kpathsea} library is unavailable, we will look up files only
-% in the current working directory.
-%
-% \end{markdown}
-% \begin{macrocode}
- if not ran_ok then
- kpse = {lookup = function(f, _) return f end}
- end
end)()
% \end{macrocode}
% \par
@@ -1164,35 +1125,7 @@ end)()
%
% \end{markdown}
% \begin{macrocode}
-local uni_case
-(function()
- local ran_ok
- ran_ok, uni_case = pcall(require, "lua-uni-case")
-% \end{macrocode}
-% \begin{markdown}
-%
-% If the lua-uni-algos library is unavailable but the Selene Unicode library
-% is available, we will use its Unicode lower-casing support instead of
-% the more proper case-folding.
-%
-% \end{markdown}
-% \begin{macrocode}
- if not ran_ok then
- if unicode.utf8.lower then
- uni_case = {casefold = unicode.utf8.lower}
- else
-% \end{macrocode}
-% \begin{markdown}
-%
-% If the Selene Unicode library is also unavailable, we will defer to using
-% ASCII lower-casing.
-%
-% \end{markdown}
-% \begin{macrocode}
- uni_case = {casefold = string.lower}
- end
- end
-end)()
+local uni_algos = require("lua-uni-algos")
% \end{macrocode}
% \par
% \begin{markdown}
@@ -1229,10 +1162,16 @@ end)()
%
% \end{markdown}
% \begin{macrocode}
-%<@@=markdown>
+%</tex>
+%<*context>
+\unprotect
+%</context>
+%<*context,tex>
\ifx\ExplSyntaxOn\undefined
- \input expl3-generic\relax
+ \input expl3-generic
\fi
+%</context,tex>
+%<*tex>
% \end{macrocode}
% \begin{markdown}
%
@@ -1264,11 +1203,10 @@ end)()
% \TeX{} part of the package will require that either the Lua\TeX{}
% `\directlua` primitive or the shell access file stream 18 is available in
% your \TeX{} engine. If only the shell access file stream is available in your
-% \TeX{} engine (as is the case with \hologo{pdfTeX} and \Hologo{XeTeX}) or if
-% you enforce the use of shell using the \mref{markdownMode} macro, then unless
-% your \TeX{} engine is globally configured to enable shell access, you will
-% need to provide the `-shell-escape` parameter to your engine when typesetting
-% a document.
+% \TeX{} engine (as is the case with \hologo{pdfTeX} and \Hologo{XeTeX}), then
+% unless your \TeX{} engine is globally configured to enable shell access, you
+% will need to provide the `-shell-escape` parameter to your engine when
+% typesetting a document.
%
% \end{markdown}
% \iffalse
@@ -1284,13 +1222,13 @@ end)()
% loaded,
% \end{markdown}
% \iffalse
-%<*latex-themes-witiko-dot,latex-themes-witiko-graphicx-http,latex-themes-witiko-tilde>
+%<*themes-witiko-dot,latex-themes-witiko-graphicx-http>
% \fi
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}%
% \end{macrocode}
% \iffalse
-%</latex-themes-witiko-dot,latex-themes-witiko-graphicx-http,latex-themes-witiko-tilde>
+%</themes-witiko-dot,latex-themes-witiko-graphicx-http>
% \fi
% \begin{markdown}
% a \TeX{} engine that extends \Hologo{eTeX}, and all the plain \TeX{}
@@ -1299,9 +1237,9 @@ end)()
% The following packages are soft prerequisites. They are only used to provide
% default token renderer prototypes (see sections
% <#sec:texrendererprototypes> and
-% <#sec:latex-default-renderer-prototypes>) or \LaTeX{} themes (see Section
-% <#sec:latexthemes>) and will not be loaded if the `plain` package option
-% has been enabled (see Section <#sec:latexplain>):
+% <#sec:latex-token-renderer-prototypes>) or \LaTeX{} themes (see Section
+% <#sec:latexthemes>) and will not be loaded if the option `plain` has been
+% enabled (see Section <#sec:plain>):
%
% \pkg{url}
%
@@ -1333,7 +1271,7 @@ end)()
% \pkg{csvsimple}
%
%: A package that provides the `\csvautotabular` macro for typesetting
-% \acro{csv} files in the default renderer prototypes for iA\,Writer
+% \acro{csv} files in the default renderer prototypes for iA\\,Writer
% content blocks.
%
% \pkg{gobble}
@@ -1378,7 +1316,7 @@ end)()
% \pkg{soulutf8}
%
%: A package that is used in the default renderer prototype for
-% strike-throughs.
+% strike-throughs and marked text.
%
% \pkg{ltxcmds}
%
@@ -1411,7 +1349,7 @@ end)()
% \pkg{m-database}
%
%: A module that provides the default token renderer prototype for
-% iA\,Writer content blocks with the \acro{csv} filename extension (see
+% iA\\,Writer content blocks with the \acro{csv} filename extension (see
% Section <#sec:texrendererprototypes>).
%
% Feedback
@@ -1498,7 +1436,11 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input hello
+\endgroup
\bye
```````
@@ -1508,8 +1450,8 @@ Using a text editor, create a text document named `hello.lua` with the
following content:
``` lua
#!/usr/bin/env texlua
-local ran_ok, kpse = pcall(require, "kpse")
-if ran_ok then kpse.set_program_name("luatex") end
+local kpse = require("kpse")
+kpse.set_program_name("luatex")
local markdown = require("markdown")
local convert = markdown.new()
print(convert("Hello *world*!"))
@@ -1569,10 +1511,35 @@ Next, invoke LuaTeX from the terminal:
luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the text
-“Hello *world*!” Invoking pdfTeX should have the same effect:
+“Hello *world*!”
+
+Instead of LuaTeX, you may also use pdfTeX:
``` sh
pdftex --shell-escape document.tex
```````
+This should also produce a PDF document named `document.pdf` with the same content.
+
+***
+
+Instead of writing your markdown document between `\markdownBegin` and
+`\markdownEnd`, you can also include markdown documents using the
+`\markdownInput` macro, similarly to how you might use the `\input` TeX
+primitive to include \TeX{} documents.
+
+Using a text editor, create a text document named `hello.md` with the
+following content:
+``` md
+Hello *world*!
+``````
+Create also a text document named `document.tex` with the following content:
+``` tex
+\input markdown
+\markdownInput{hello.md}
+\bye
+```````
+Next, invoke LuaTeX or pdfTeX from the terminal like in the previous example.
+A PDF document named `document.pdf` should be produced and contain the text
+“Hello *world*!”
### Using \LaTeX{}
@@ -1592,10 +1559,39 @@ Next, invoke LuaTeX from the terminal:
lualatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the text “Hello
-*world*!” Invoking pdfTeX should have the same effect:
+*world*!”
+
+Instead of LuaTeX, you may also use pdfTeX:
``` sh
pdflatex --shell-escape document.tex
``````
+This should also produce a PDF document named `document.pdf` with the same content.
+
+***
+
+Instead of writing your markdown document between `\begin{markdown}` and
+`\end{markdown}`, you can also include markdown documents using the
+`\markdownInput` macro, similarly to how you might use the `\input` TeX
+primitive to include \LaTeX{} documents.
+
+Using a text editor, create a text document named `hello.md` with the
+following content:
+``` md
+Hello *world*!
+``````
+Create also a text document named `document.tex` with the following content:
+``` tex
+\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+\begin{markdown}
+\markdownInput{hello.md}
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX or pdfTeX from the terminal like in the previous example.
+A PDF document named `document.pdf` should be produced and contain the text
+“Hello *world*!”
***
@@ -1629,25 +1625,48 @@ Hello *world*!
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the text “Hello
*world*!”
***
+Instead of writing your markdown document between `\startmarkdown` and
+`\stopmarkdown`, you can also include markdown documents using the
+`\inputmarkdown` macro, similarly to how you might use the `\input` TeX
+primitive to include \Hologo{ConTeXt} documents.
+
+Using a text editor, create a text document named `hello.md` with the
+following content:
+``` md
+Hello *world*!
+``````
+Create also a text document named `document.tex` with the following content:
+``` tex
+\usemodule[t][markdown]
+\starttext
+\inputmarkdown{hello.md}
+\stoptext
+```````
+Next, invoke LuaTeX from the terminal like in the previous example.
+A PDF document named `document.pdf` should be produced and contain the text
+“Hello *world*!”
+
+***
+
As the next step, try typesetting the example documents distributed along with
the Markdown package:
``` sh
git clone https://github.com/witiko/markdown
cd markdown/examples
-context context.tex
+context --luatex context.tex
``````
A PDF document named `context.pdf` should be produced. Open the text documents
`context.tex` and `example.md` in a text editor to see how the example documents
are structured. Try changing the documents and typesetting them as follows:
``` sh
-context context.tex
+context --luatex context.tex
``````
to see the effect of your changes.
@@ -1674,6 +1693,7 @@ Each part will be shown by example, leaving the implementation details to the
% Lua Interface {#luainterface}
%---------------
%
+% \end{markdown}
% \iffalse
%</lua>
%<*manual-interfaces>
@@ -1700,6 +1720,7 @@ module and a command-line interface (CLI).
%</manual-interfaces>
%<*lua>
% \fi
+% \begin{markdown}
%
% The Lua interface provides the conversion from \acro{utf}-\oldstylenums8
% encoded markdown to plain \TeX{}. This interface is used by the plain \TeX{}
@@ -1755,8 +1776,11 @@ local walkable_syntax = {
"ThematicBreak",
"BulletList",
"OrderedList",
- "Heading",
"DisplayHtml",
+ "Heading",
+ },
+ BlockOrParagraph = {
+ "Block",
"Paragraph",
"Plain",
},
@@ -1764,11 +1788,8 @@ local walkable_syntax = {
"Str",
"Space",
"Endline",
- "UlOrStarLine",
- "Strong",
- "Emph",
- "Link",
- "Image",
+ "EndlineBreak",
+ "LinkAndEmph",
"Code",
"AutoLinkUrl",
"AutoLinkEmail",
@@ -1794,9 +1815,9 @@ local walkable_syntax = {
% not be interpreted by the Markdown package; you can treat it as a comment.
%
% For example. if we'd like to insert `pattern` into the grammar between the
-% `Inline -> Emph` and `Inline -> Link` rules, we would call
-% \luamref{reader->insert_pattern} with `"Inline after Emph"` (or `"Inline
-% before Link"`) and `pattern` as the arguments.
+% `Inline -> LinkAndEmph` and `Inline -> Code` rules, we would call
+% \luamref{reader->insert_pattern} with `"Inline after LinkAndEmph"` (or `"Inline
+% before Code"`) and `pattern` as the arguments.
%
% The \luamref{reader->add_special_character} method adds a new character with
% special meaning to the grammar of markdown. The method receives the character
@@ -1824,26 +1845,30 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input example
+\endgroup
\bye
```````
Using a text editor, create a text document named `example.lua` with the
following content:
``` lua
#!/usr/bin/env texlua
-local ran_ok, kpse = pcall(require, "kpse")
-if ran_ok then kpse.set_program_name("luatex") end
+local kpse = require("kpse")
+kpse.set_program_name("luatex")
local markdown = require("markdown")
-local input, convert_safe, convert_unsafe, paragraph
+local input, convert_nomath, convert_math, paragraph
input = [[$\sqrt{-1}$ *equals* $i$.]]
-convert_safe = markdown.new()
-convert_unsafe = markdown.new({hybrid = true})
+convert_nomath = markdown.new()
+convert_math = markdown.new({texMathDollars = true})
paragraph = [[\par]]
print(
- convert_safe(input) .. paragraph ..
- convert_unsafe(input)
+ convert_nomath(input) .. paragraph ..
+ convert_math(input)
)
```````
Next, invoke LuaTeX from the terminal:
@@ -1876,16 +1901,16 @@ named `document.tex` with the following content:
\input lmfonts
\directlua{
local markdown = require("markdown")
- local input, convert_safe, convert_unsafe, paragraph
+ local input, convert_nomath, convert_math, paragraph
input = [[$\string\sqrt{-1}$ *equals* $i$.]]
- convert_safe = markdown.new()
- convert_unsafe = markdown.new({hybrid = true})
+ convert_nomath = markdown.new()
+ convert_math = markdown.new({texMathDollars = true})
paragraph = [[\par]]
tex.sprint(
- convert_safe(input) .. paragraph ..
- convert_unsafe(input)
+ convert_nomath(input) .. paragraph ..
+ convert_math(input)
)
}
\bye
@@ -1921,11 +1946,12 @@ following content:
``` tex
\input markdown
\input lmfonts
-\input safe
-
\begingroup
\catcode`\%=12
-\input unsafe
+\catcode`\#=12
+\input nomath
+\par
+\input math
\endgroup
\bye
```````
@@ -1936,8 +1962,8 @@ $\sqrt{-1}$ *equals* $i$.
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- example.md safe.tex
-texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex
+texlua ⟨CLI pathname⟩ -- example.md nomath.tex
+texlua ⟨CLI pathname⟩ tex_math_dollars=true -- example.md math.tex
luatex document.tex
``````
where \meta{CLI pathname} corresponds to the location of the Lua CLI script file,
@@ -1957,8 +1983,8 @@ following text:
Invoking pdfTeX should have the same effect:
``` sh
-texlua ⟨CLI pathname⟩ -- example.md safe.tex
-texlua ⟨CLI pathname⟩ hybrid=true -- example.md unsafe.tex
+texlua ⟨CLI pathname⟩ -- example.md nomath.tex
+texlua ⟨CLI pathname⟩ tex_math_dollars=true -- example.md math.tex
pdftex document.tex
``````
@@ -2331,6 +2357,212 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
% \fi
% \begin{markdown}
%
+%### General Behavior
+%
+% \end{markdown}
+% \par
+% \iffalse
+
+#### Option `eagerCache`
+
+`eagerCache` (default value: `false`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[false]{eagerCache}{\opt{true}, \opt{false}}
+%
+: true
+
+ : Converted markdown documents will be cached in \Opt{cacheDir}. This can be
+ useful for post-processing the converted documents and for recovering
+ historical versions of the documents from the cache. However, it also
+ produces a large number of auxiliary files on the disk and obscures the
+ output of the Lua command-line interface when it is used for plumbing.
+
+ This behavior will always be used if the \Opt{finalizeCache} option is
+ enabled.
+
+: false
+
+ : Converted markdown documents will not be cached. This decreases the number
+ of auxiliary files that we produce and makes it easier to use the Lua
+ command-line interface for plumbing.
+
+ This behavior will only be used when the \Opt{finalizeCache} option is
+ disabled.
+
+% \end{markdown}
+% \iffalse
+
+##### Lua CLI Example {.unnumbered}
+
+Using a text editor, create a text document named `hello.md` with the
+following content:
+``` md
+Hello *world*!
+``````
+Next, invoke LuaTeX from the terminal with the \Opt{eagerCache} option
+disabled:
+``` sh
+texlua ⟨CLI pathname⟩ eagerCache=false -- hello.md hello.tex
+```````
+where \meta{CLI pathname} corresponds to the location of the Lua CLI script file,
+such as `~/texmf/scripts/markdown/markdown-cli.lua` on UN\*X systems or
+`C:\Users\`\meta{Your username}`\texmf\scripts\markdown\markdown-cli.lua` on Windows
+systems. Use the command `kpsewhich -a markdown-cli.lua` to locate the Lua CLI
+script file using [Kpathsea][].
+
+A \TeX{} document named `hello.tex` should be produced and contain the
+following code:
+``` tex
+Hello \markdownRendererEmphasis{world}!\relax
+```
+
+***
+
+Invoke LuaTeX from the terminal again, this time with the \Opt{eagerCache}
+option enabled:
+
+``` tex
+texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex
+```
+
+A \TeX{} document named `hello.tex` should be produced and contain the
+following code:
+
+``` tex
+\input ./⟨hash⟩.md.tex\relax
+```
+
+Additionally, a \TeX{} document named `⟨hash⟩.md.tex` should be produced and
+contain the following code:
+
+``` tex
+Hello \markdownRendererEmphasis{world}!\relax
+```
+
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { eagerCache }
+ { boolean }
+ { false }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli>
+% \fi
+% \begin{macrocode}
+defaultOptions.eagerCache = false
+% \end{macrocode}
+% \par
+% \iffalse
+%</lua,lua-cli>
+%<*manual-options>
+
+#### Option `singletonCache`
+
+`singletonCache` (default value: `true`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[true]{singletonCache}{\opt{true}, \opt{false}}
+%
+: true
+
+ : Conversion functions produced by the function \luamref{new}`(options)`
+ will be cached in an LRU cache of size 1 keyed by `options`. This is
+ more time- and space-efficient than always producing a new conversion
+ function but may expose bugs related to the idempotence of conversion
+ functions.
+
+ This has been the default behavior since version 3.0.0 of the Markdown
+ package.
+
+: false
+
+ : Every call to the function \luamref{new}`(options)` will produce a new
+ conversion function that will not be cached. This is slower than
+ caching conversion functions and may expose bugs related to memory
+ leaks in the creation of conversion functions, see also issue [#226][1].
+
+ This was the default behavior until version 3.0.0 of the Markdown package.
+
+ [1]: https://github.com/witiko/markdown/pull/226#issuecomment-1599641634
+
+% \end{markdown}
+% \iffalse
+
+##### Lua Module Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\input markdown
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
+\directlua{
+ local markdown = require("markdown")
+ local convert1 = markdown.new({})
+ local convert2 = markdown.new({singletonCache=false})
+ local convert3 = markdown.new({singletonCache=true})
+ local newline = [[^^J^^J]]
+ tex.print(tostring(convert1) .. ", ")
+ tex.print(tostring(convert2) .. ", ")
+ tex.print(tostring(convert3))
+}
+\endgroup
+\bye
+```````
+Then, invoke LuaTeX from the terminal:
+``` sh
+luatex document.tex
+```````
+A PDF document named `document.pdf` should be produced and contain the following text:
+
+> function: 0x1a4a038, function: 0x1a52b18, function: 0x1a4a038
+
+As you can see, the caching causes `convert1` and `convert3` to be the same
+conversion function.
+
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { singletonCache }
+ { boolean }
+ { true }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli>
+% \fi
+% \begin{macrocode}
+defaultOptions.singletonCache = true
+% \end{macrocode}
+% \iffalse
+%</lua,lua-cli>
+%<*lua>
+% \fi
+% \begin{macrocode}
+local singletonCache = {
+ convert = nil,
+ options = nil,
+}
+% \end{macrocode}
+% \par
+% \iffalse
+%</lua>
+%<*manual-options>
+% \fi
+% \begin{markdown}
+%
%### File and Directory Names
%
% \end{markdown}
@@ -2365,11 +2597,15 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local convert = markdown.new({cacheDir = "cache"})
local input = "Hello *world*!"
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Create an empty directory named `cache` next to our text document. Then, invoke
@@ -2387,7 +2623,11 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input hello
+\endgroup
\bye
```````
Using a text editor, create a text document named `hello.md` with the
@@ -2469,7 +2709,7 @@ Hello *world*!
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the text “Hello
*world*!” A directory named `cache` containing several cache files of the
@@ -2507,7 +2747,7 @@ defaultOptions.cacheDir = "."
% \Valitem[markdown-languages.json]{contentBlocksLanguageMap}{filename}
%
: The filename of the \acro{JSON} file that maps filename extensions to
- programming language names in the iA\,Writer content blocks when the
+ programming language names in the iA\\,Writer content blocks when the
\Opt{contentBlocks} option is enabled.
% See Section <#sec:texcontentblockrenderers> for more information.
@@ -2621,7 +2861,7 @@ Create also a text document named `document.tex` with the following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -2739,11 +2979,15 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local convert = markdown.new({finalizeCache = true, frozenCacheFileName = "cache.tex"})
local input = "Hello *world*!"
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -2761,7 +3005,11 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input hello
+\endgroup
\bye
```````
Using a text editor, create a text document named `hello.md` with the
@@ -2891,7 +3139,7 @@ Hello *world*!
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the text
“Hello *world*!” A frozen cache will also be produced in the `cache.tex`
@@ -2913,9 +3161,9 @@ Hi *world*!
\stopmarkdown
\stoptext
```````
-Last, invoke pdfTeX without shell access from the terminal:
+Last, invoke LuaTeX from the terminal:
``` sh
-context frozen-document.tex
+context --luatex frozen-document.tex
``````
A PDF document named `frozen-document.pdf` should be produced and contain the
text “Hello *world*!” Since we used the contents of the frozen cache using
@@ -2952,6 +3200,55 @@ defaultOptions.frozenCacheFileName = "frozenCache.tex"
% \par
% \iffalse
+#### Option `autoIdentifiers`
+
+`autoIdentifiers` (default value: `false`)
+
+% \fi
+% \begin{markdown}
+% \Optitem[false]{autoIdentifiers}{\opt{true}, \opt{false}}
+%
+: true
+
+ : Enable the Pandoc [auto identifiers syntax extension][pandoc-auto-identifiers]:
+
+ ``` md
+ The following heading received the identifier `sesame-street`:
+
+ # 123 Sesame Street
+ ``````
+
+ false
+
+ : Disable the Pandoc auto identifiers syntax extension.
+
+See also the option \Opt{gfmAutoIdentifiers}.
+
+ [pandoc-auto-identifiers]: https://pandoc.org/MANUAL.html#extension-auto_identifiers
+
+% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { autoIdentifiers }
+ { boolean }
+ { false }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli>
+% \fi
+% \begin{macrocode}
+defaultOptions.autoIdentifiers = false
+% \end{macrocode}
+% \par
+% \iffalse
+%</lua,lua-cli>
+%<*manual-options>
+
#### Option `blankBeforeBlockquote`
`blankBeforeBlockquote` (default value: `false`)
@@ -2979,6 +3276,9 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local newline = [[^^J^^J]]
@@ -2993,6 +3293,7 @@ following content:
input = "A paragraph." .. newline ..
"> Not a quote." .. newline
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -3015,8 +3316,12 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -3093,10 +3398,10 @@ A paragraph.
> A quote.
\end{markdown}
-\begin{markdown*}{blankBeforeBlockquote}
+\begin{markdown}[blankBeforeBlockquote]
A paragraph.
> Not a quote.
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -3136,7 +3441,7 @@ A paragraph.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -3197,6 +3502,9 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local newline = [[^^J^^J]]
@@ -3216,6 +3524,7 @@ following content:
"Not a fenced code." .. newline ..
"```" .. newline
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -3240,8 +3549,12 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -3331,12 +3644,12 @@ A fenced code.
```
\end{markdown}
-\begin{markdown*}{blankBeforeCodeFence}
+\begin{markdown}[blankBeforeCodeFence]
A paragraph.
```
Not a fenced code.
```
-\end{markdown*}
+\end{markdown}
\end{document}
````````
@@ -3383,7 +3696,7 @@ Not a fenced code.
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -3454,13 +3767,13 @@ A fenced div.
:::
\end{markdown}
-\begin{markdown*}{blankBeforeDivFence}
+\begin{markdown}[blankBeforeDivFence]
A paragraph.
::: {.identifier}
Not a fenced div.
:::
-\end{markdown*}
+\end{markdown}
\end{document}
````````
@@ -3529,6 +3842,9 @@ following content:
\input markdown
\input lmfonts
\def\markdownRendererHeadingOne#1{{\bf #1}\par}
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local newline = [[^^J^^J]]
@@ -3545,6 +3861,7 @@ following content:
"Not a heading." .. newline ..
"==============" .. newline
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -3568,8 +3885,12 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -3652,11 +3973,11 @@ A heading.
==========
\end{markdown}
-\begin{markdown*}{blankBeforeHeading}
+\begin{markdown}[blankBeforeHeading]
A paragraph.
Not a heading.
==============
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -3699,7 +4020,7 @@ Not a heading.
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -3732,6 +4053,232 @@ defaultOptions.blankBeforeHeading = false
%</lua,lua-cli>
%<*manual-options>
+#### Option `blankBeforeList`
+
+`blankBeforeList` (default value: `false`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[false]{blankBeforeList}{\opt{true}, \opt{false}}
+%
+: true
+
+ : Require a blank line between a paragraph and the following list.
+
+ false
+
+ : Do not require a blank line between a paragraph and the following
+ list.
+
+% \end{markdown}
+% \iffalse
+
+##### Lua Module Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\input markdown
+\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
+\directlua{
+ local markdown = require("markdown")
+ local newline = [[^^J^^J]]
+ local convert, input
+
+ convert = markdown.new()
+ input = "A paragraph." .. newline ..
+ "- a list" .. newline
+ tex.sprint(convert(input))
+
+ convert = markdown.new({
+ blankBeforeList = true})
+ input = "A paragraph." .. newline ..
+ "- not a list" .. newline
+ tex.sprint(convert(input)) }
+\endgroup
+\bye
+```````
+Then, invoke LuaTeX from the terminal:
+``` sh
+luatex document.tex
+```````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> A paragraph.
+>
+> - a list
+>
+> A paragraph. - not a list
+
+##### Lua CLI Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\input markdown
+\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
+\input optionfalse
+\input optiontrue
+\endgroup
+\bye
+```````
+Using a text editor, create a text document named `content.md` with the
+following content:
+```` md
+A paragraph.
+- a list?
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ blankBeforeList=true -- content.md optiontrue.tex
+luatex document.tex
+```````
+where \meta{CLI pathname} corresponds to the location of the Lua CLI script file,
+such as `~/texmf/scripts/markdown/markdown-cli.lua` on UN\*X systems or
+`C:\Users\`\meta{Your username}`\texmf\scripts\markdown\markdown-cli.lua` on Windows
+systems. Use the command `kpsewhich -a markdown-cli.lua` to locate the Lua CLI
+script file using [Kpathsea][].
+
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> A paragraph.
+>
+> - a list?
+>
+> A paragraph. - a list?
+
+##### Plain \TeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+```` tex
+\input markdown
+
+\markdownBegin
+A paragraph.
+- a list
+\markdownEnd
+
+\def\markdownOptionBlankBeforeList{true}
+\markdownBegin
+A paragraph.
+- not a list
+\markdownEnd
+
+\bye
+````````
+Next, invoke LuaTeX from the terminal:
+``` sh
+luatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> A paragraph.
+>
+> - a list
+>
+> A paragraph. - not a list
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+```` tex
+\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+A paragraph.
+- a list
+\end{markdown}
+
+\begin{markdown}[blankBeforeList]
+A paragraph.
+- not a list
+\end{markdown}
+
+\end{document}
+````````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> A paragraph.
+>
+> - a list
+>
+> A paragraph. - not a list
+
+##### \Hologo{ConTeXt} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+```` tex
+\usemodule[t][markdown]
+\starttext
+
+\startmarkdown
+A paragraph.
+- a list
+\stopmarkdown
+
+\setupmarkdown[blankBeforeList = yes]
+\startmarkdown
+A paragraph.
+- not a list
+\stopmarkdown
+
+\stoptext
+````````
+Next, invoke LuaTeX from the terminal:
+``` sh
+context document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> A paragraph.
+>
+> - a list
+>
+> A paragraph. - not a list
+
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { blankBeforeList }
+ { boolean }
+ { false }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli>
+% \fi
+% \begin{macrocode}
+defaultOptions.blankBeforeList = false
+% \end{macrocode}
+% \par
+% \iffalse
+%</lua,lua-cli>
+%<*manual-options>
+
#### Option `bracketedSpans`
`bracketedSpans` (default value: `false`)
@@ -3830,12 +4377,12 @@ defaultOptions.bracketedSpans = false
#### Option `breakableBlockquotes`
-`breakableBlockquotes` (default value: `false`)
+`breakableBlockquotes` (default value: `true`)
% \fi
% \begin{markdown}
%
-% \Optitem[false]{breakableBlockquotes}{\opt{true}, \opt{false}}
+% \Optitem[true]{breakableBlockquotes}{\opt{true}, \opt{false}}
%
: true
@@ -3856,20 +4403,24 @@ following content:
\input markdown
\input lmfonts
\def\markdownRendererHeadingOne#1{{\bf #1}\par}
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local newline = [[^^J^^J]]
local convert, input
- convert = markdown.new()
+ convert = markdown.new({breakableBlockquotes = false})
input = "> A single" .. newline .. newline ..
"> block quote." .. newline
tex.sprint(convert(input))
- convert = markdown.new({breakableBlockquotes = true})
+ convert = markdown.new()
input = "> A block quote." .. newline .. newline ..
"> Another block quote." .. newline
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -3892,8 +4443,12 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -3905,8 +4460,8 @@ following content:
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ breakableBlockquotes=true -- content.md optiontrue.tex
+texlua ⟨CLI pathname⟩ breakableBlockquotes=false -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex
luatex document.tex
```````
where \meta{CLI pathname} corresponds to the location of the Lua CLI script file,
@@ -3931,6 +4486,7 @@ following content:
``` tex
\input markdown
+\def\markdownOptionBreakableBlockquotes{false}
\markdownBegin
> A single
@@ -3968,17 +4524,17 @@ following content:
\usepackage{markdown}
\begin{document}
-\begin{markdown}
+\begin{markdown}[breakableBlockquotes = false]
> A single
> block quote.
\end{markdown}
-\begin{markdown*}{breakableBlockquotes}
+\begin{markdown}
> A block quote.
> Another block quote.
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -4003,6 +4559,7 @@ following content:
\usemodule[t][markdown]
\starttext
+\setupmarkdown[breakableBlockquotes = no]
\startmarkdown
> A single
@@ -4020,7 +4577,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -4038,14 +4595,14 @@ following text:
\@@_add_lua_option:nnn
{ breakableBlockquotes }
{ boolean }
- { false }
+ { true }
% \end{macrocode}
% \iffalse
%</tex>
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.breakableBlockquotes = false
+defaultOptions.breakableBlockquotes = true
% \end{macrocode}
% \par
% \iffalse
@@ -4099,9 +4656,9 @@ following content:
The TeXbook [@knuth:tex, p. 123 and 130] is good.
\end{markdown}
-\begin{markdown*}{citationNbsps = false}
+\begin{markdown}[citationNbsps = false]
The TeXbook [@knuth:tex, p. 123 and 130] is good.
-\end{markdown*}
+\end{markdown}
\bibliographystyle{plain}
\bibliography{document.bib}
@@ -4287,6 +4844,9 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local convert = markdown.new()
@@ -4302,6 +4862,7 @@ following content:
"``This is a quote.'' " ..
"``This is another quote.''"
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -4322,9 +4883,13 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\par
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -4396,10 +4961,10 @@ following content:
``This is no longer a code span.''
\end{markdown}
-\begin{markdown*}{codeSpans=false}
+\begin{markdown}[codeSpans=false]
``This is a quote.''
``This is another quote.''
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -4437,7 +5002,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -4479,9 +5044,9 @@ defaultOptions.codeSpans = true
: true
: Enable the
-% iA\,Writer content blocks syntax extension~[@sotkov17]:
+% iA\\,Writer content blocks syntax extension~[@sotkov17]:
% \iffalse
- iA\,Writer content blocks syntax extension:
+ iA\\,Writer content blocks syntax extension:
% \fi
``` md
@@ -4496,7 +5061,7 @@ defaultOptions.codeSpans = true
: false
: Disable the
- iA\,Writer content blocks syntax extension.
+ iA\\,Writer content blocks syntax extension.
% \end{markdown}
% \iffalse
@@ -4601,7 +5166,7 @@ Create also a text document named `document.tex` with the following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -4641,6 +5206,143 @@ defaultOptions.contentBlocks = false
%</lua,lua-cli>
%<*manual-options>
+#### Option `contentLevel`
+
+`contentLevel` (default value: `block`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[block]{contentLevel}{\opt{block}, \opt{inline}}
+%
+: block
+
+ : Treat content as a sequence of blocks.
+ ``` md
+ - this is a list
+ - it contains two items
+ ``````
+
+: inline
+
+ : Treat all content as inline content.
+ ``` md
+ - this is a text
+ - not a list
+ ``````
+
+% \end{markdown}
+% \iffalse
+
+##### Plain \TeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\input markdown
+\def\markdownOptionContentLevel{inline}
+\markdownBegin
+- this is
+- a text
+\markdownEnd
+\bye
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+luatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> \- this is - a text
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage{markdown}
+\begin{document}
+
+\begin{markdown}
+- this is
+- a list
+\end{markdown}
+
+\begin{markdown}[contentLevel=inline]
+- this is
+- a text
+\end{markdown}
+
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> - this is
+> - a list
+>
+> \- this is - a text
+
+##### \Hologo{ConTeXt} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\usemodule[t][markdown]
+\starttext
+
+\startmarkdown
+- this is
+- a list
+\stopmarkdown
+
+\setupmarkdown[contentLevel = inline]
+\startmarkdown
+- this is
+- a text
+\stopmarkdown
+
+\stoptext
+````````
+Next, invoke LuaTeX from the terminal:
+``` sh
+context --luatex document.tex
+`````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> - this is
+> - a list
+>
+> \- this is - a text
+
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { contentLevel }
+ { string }
+ { block }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli>
+% \fi
+% \begin{macrocode}
+defaultOptions.contentLevel = "block"
+% \end{macrocode}
+% \par
+% \iffalse
+%</lua,lua-cli>
+%<*manual-options>
+
#### Option `debugExtensions`
`debugExtensions` (default value: `false`)
@@ -4685,7 +5387,7 @@ following content:
``` lua
local strike_through = {
api_version = 2,
- grammar_version = 2,
+ grammar_version = 4,
finalize_grammar = function(reader)
local nonspacechar = lpeg.P(1) - lpeg.S("\t ")
local doubleslashes = lpeg.P("//")
@@ -4699,7 +5401,7 @@ local strike_through = {
lpeg.V("Inline"), doubleslashes, doubleslashes
) / function(s) return {"\\st{", s, "}"} end
- reader.insert_pattern("Inline after Emph", read_strike_through,
+ reader.insert_pattern("Inline after LinkAndEmph", read_strike_through,
"StrikeThrough")
reader.add_special_character("/")
end
@@ -4737,24 +5439,28 @@ be produced and contain the following text:
"Block": [
"Blockquote",
"Verbatim",
+ "FencedCode (built-in fenced_code syntax extension)",
"ThematicBreak",
"BulletList",
"OrderedList",
- "Heading",
"DisplayHtml",
+ "Heading"
+ ],
+ "BlockOrParagraph": [
+ "Block",
"Paragraph",
"Plain"
],
+ "EndlineExceptions": [
+ "EndlineExceptions (built-in fenced_code syntax extension)"
+ ],
"Inline": [
"Str",
"Space",
"Endline",
- "UlOrStarLine",
- "Strong",
- "Emph",
+ "EndlineBreak",
+ "LinkAndEmph",
"StrikeThrough (user-defined \"./strike-through.lua\" syntax extension)",
- "Link",
- "Image",
"Code",
"AutoLinkUrl",
"AutoLinkEmail",
@@ -4893,7 +5599,7 @@ Term 2 with *inline markup*
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -4931,107 +5637,6 @@ defaultOptions.definitionLists = false
%</lua,lua-cli>
%<*manual-options>
-#### Option `eagerCache`
-
-`eagerCache` (default value: `true`)
-
-% \fi
-% \begin{markdown}
-%
-% \Optitem[true]{eagerCache}{\opt{true}, \opt{false}}
-%
-: true
-
- : Converted markdown documents will be cached in \Opt{cacheDir}. This can be
- useful for post-processing the converted documents and for recovering
- historical versions of the documents from the cache. However, it also
- produces a large number of auxiliary files on the disk and obscures the
- output of the Lua command-line interface when it is used for plumbing.
-
- This behavior will always be used if the \Opt{finalizeCache} option is
- enabled.
-
-: false
-
- : Converted markdown documents will not be cached. This decreases the number
- of auxiliary files that we produce and makes it easier to use the Lua
- command-line interface for plumbing.
-
- This behavior will only be used when the \Opt{finalizeCache} option is
- disabled. Recursive nesting of markdown document fragments is undefined
- behavior when \Opt{eagerCache} is disabled.
-
-% \end{markdown}
-% \iffalse
-
-##### Lua Module Example {.unnumbered}
-
-Using a text editor, create a text document named `hello.md` with the
-following content:
-``` md
-Hello *world*!
-``````
-Next, invoke LuaTeX from the terminal with the \Opt{eagerCache} option
-disabled:
-``` sh
-texlua ⟨CLI pathname⟩ eagerCache=false -- hello.md hello.tex
-```````
-where \meta{CLI pathname} corresponds to the location of the Lua CLI script file,
-such as `~/texmf/scripts/markdown/markdown-cli.lua` on UN\*X systems or
-`C:\Users\`\meta{Your username}`\texmf\scripts\markdown\markdown-cli.lua` on Windows
-systems. Use the command `kpsewhich -a markdown-cli.lua` to locate the Lua CLI
-script file using [Kpathsea][].
-
-A \TeX{} document named `hello.tex` should be produced and contain the
-following code:
-``` tex
-Hello \markdownRendererEmphasis{world}!\relax
-```
-
-***
-
-Invoke LuaTeX from the terminal again, this time with the \Opt{eagerCache}
-option enabled:
-
-``` tex
-texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex
-```
-
-A \TeX{} document named `hello.tex` should be produced and contain the
-following code:
-
-``` tex
-\input ./⟨hash⟩.md.tex\relax
-```
-
-Additionally, a \TeX{} document named `⟨hash⟩.md.tex` should be produced and
-contain the following code:
-
-``` tex
-Hello \markdownRendererEmphasis{world}!\relax
-```
-
-%</manual-options>
-%<*tex>
-% \fi
-% \begin{macrocode}
-\@@_add_lua_option:nnn
- { eagerCache }
- { boolean }
- { true }
-% \end{macrocode}
-% \iffalse
-%</tex>
-%<*lua,lua-cli>
-% \fi
-% \begin{macrocode}
-defaultOptions.eagerCache = true
-% \end{macrocode}
-% \par
-% \iffalse
-%</lua,lua-cli>
-%<*manual-options>
-
#### Option `expectJekyllData`
`expectJekyllData` (default value: `false`)
@@ -5175,7 +5780,7 @@ defaultOptions.expectJekyllData = false
% ``` lua
% local strike_through = {
% api_version = 2,
-% grammar_version = 2,
+% grammar_version = 4,
% finalize_grammar = function(reader)
% local nonspacechar = lpeg.P(1) - lpeg.S("\t ")
% local doubleslashes = lpeg.P("//")
@@ -5189,7 +5794,7 @@ defaultOptions.expectJekyllData = false
% lpeg.V("Inline"), doubleslashes, doubleslashes
% ) / function(s) return {"\\st{", s, "}"} end
%
-% reader.insert_pattern("Inline after Emph", read_strike_through,
+% reader.insert_pattern("Inline after LinkAndEmph", read_strike_through,
% "StrikeThrough")
% reader.add_special_character("/")
% end
@@ -5210,7 +5815,7 @@ defaultOptions.expectJekyllData = false
% \fi
% \begin{macrocode}
metadata.user_extension_api_version = 2
-metadata.grammar_version = 2
+metadata.grammar_version = 4
% \end{macrocode}
% \iffalse
%</lua>
@@ -5218,17 +5823,17 @@ metadata.grammar_version = 2
% \fi
% \begin{markdown}
%
-% Any changes to the syntax extension API or grammar will cause the
-% corresponding current version to be incremented. After Markdown 3.0.0,
-% any changes to the API and the grammar will be either backwards-compatible
-% or constitute a breaking change that will cause the major version of the
-% Markdown package to increment (to 4.0.0).
+% Any changes to the syntax extension API or grammar will cause the
+% corresponding current version to be incremented. After Markdown 3.0.0,
+% any changes to the API and the grammar will be either backwards-compatible
+% or constitute a breaking change that will cause the major version of the
+% Markdown package to increment (to 4.0.0).
%
-% The `finalize_grammar` field is a function that finalizes the grammar of
-% markdown using the interface of a Lua \luamref{reader} object, such as
-% the \luamref{reader->insert_pattern} and
-% \luamref{reader->add_special_character} methods,
-% see Section <#lua-user-extensions>.
+% The `finalize_grammar` field is a function that finalizes the grammar of
+% markdown using the interface of a Lua \luamref{reader} object, such as
+% the \luamref{reader->insert_pattern} and
+% \luamref{reader->add_special_character} methods,
+% see Section <#sec:lua-user-extensions>.
%
% \end{markdown}
% \iffalse
@@ -5240,7 +5845,7 @@ following content:
``` lua
local strike_through = {
api_version = 2,
- grammar_version = 2,
+ grammar_version = 4,
finalize_grammar = function(reader)
local nonspacechar = lpeg.P(1) - lpeg.S("\t ")
local doubleslashes = lpeg.P("//")
@@ -5254,7 +5859,7 @@ local strike_through = {
lpeg.V("Inline"), doubleslashes, doubleslashes
) / function(s) return {"\\st{", s, "}"} end
- reader.insert_pattern("Inline after Emph", read_strike_through,
+ reader.insert_pattern("Inline after LinkAndEmph", read_strike_through,
"StrikeThrough")
reader.add_special_character("/")
end
@@ -5379,7 +5984,7 @@ c) third item
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -5411,12 +6016,12 @@ defaultOptions.fancyLists = false
#### Option `fencedCode`
-`fencedCode` (default value: `false`)
+`fencedCode` (default value: `true`)
% \fi
% \begin{markdown}
%
-% \Optitem[false]{fencedCode}{\opt{true}, \opt{false}}
+% \Optitem[true]{fencedCode}{\opt{true}, \opt{false}}
%
: true
@@ -5455,7 +6060,7 @@ following content:
```` tex
\documentclass{article}
\usepackage{minted}
-\usepackage[fencedCode]{markdown}
+\usepackage{markdown}
\begin{document}
\begin{markdown}
~~~ js
@@ -5489,7 +6094,7 @@ following text:
> moveShip(5 * gravity, DOWN);
> }
> ```
->
+>
> ``` html
> <pre>
> <code>
@@ -5507,7 +6112,6 @@ Using a text editor, create a text document named `document.tex` with the
following content:
```` tex
\usemodule[t][markdown]
-\setupmarkdown[fencedCode = yes]
\definetyping [js]
\definetyping [html]
\setuptyping [html] [option=XML]
@@ -5534,7 +6138,7 @@ if (a > 3) {
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -5544,7 +6148,7 @@ following text:
> moveShip(5 * gravity, DOWN);
> }
> ```
->
+>
> ``` html
> <pre>
> <code>
@@ -5563,14 +6167,14 @@ following text:
\@@_add_lua_option:nnn
{ fencedCode }
{ boolean }
- { false }
+ { true }
% \end{macrocode}
% \iffalse
%</tex>
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.fencedCode = false
+defaultOptions.fencedCode = true
% \end{macrocode}
% \par
% \iffalse
@@ -5873,7 +6477,7 @@ Hello *world*!
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the text
“Hello *world*!” A frozen cache will also be produced in the `cache.tex`
@@ -5889,9 +6493,9 @@ Hi *world*!
\stopmarkdown
\stoptext
```````
-Last, invoke pdfTeX without shell access from the terminal:
+Last, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A new PDF document named `document.pdf` should be produced and contain the
same text “Hello *world*!” Since we used the contents of the frozen cache using
@@ -5947,6 +6551,9 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local firstConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 0})
@@ -5954,6 +6561,7 @@ following content:
local secondConvert = markdown.new({finalizeCache = true, frozenCacheCounter = 1})
local secondInput = "*world*!"
tex.sprint(firstConvert(firstInput) .. [[ ]] .. secondConvert(secondInput)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -5985,91 +6593,49 @@ defaultOptions.frozenCacheCounter = 0
%</lua,lua-cli>
%<*manual-options>
-#### Option `hardLineBreaks`
+#### Option `gfmAutoIdentifiers`
-`hardLineBreaks` (default value: `false`)
+`gfmAutoIdentifiers` (default value: `false`)
% \fi
% \begin{markdown}
-%
-% \Optitem[false]{hardLineBreaks}{\opt{true}, \opt{false}}
+% \Optitem[false]{gfmAutoIdentifiers}{\opt{true}, \opt{false}}
%
: true
- : Interpret all newlines within a paragraph as hard line breaks instead
- of spaces.
+ : Enable the Pandoc [GitHub-flavored auto identifiers syntax extension][pandoc-gfm-auto-identifiers]:
-: false
-
- : Interpret all newlines within a paragraph as spaces.
-
-% \end{markdown}
-% \iffalse
-
-##### \LaTeX{} Example {.unnumbered}
+ ``` md
+ The following heading received the identifier `123-sesame-street`:
-Using a text editor, create a text document named `document.tex` with the
-following content:
-``` tex
-\documentclass{article}
-\usepackage{markdown}
-\begin{document}
+ # 123 Sesame Street
+ ``````
-\begin{markdown}
-'Twas brillig, and the slithy toves
-Did gyre and gimble in the wabe;
-All mimsy were the borogoves,
-And the mome raths outgrabe.
-\end{markdown}
+ false
-\begin{markdown*}{hardLineBreaks}
-'Twas brillig, and the slithy toves
-Did gyre and gimble in the wabe;
-All mimsy were the borogoves,
-And the mome raths outgrabe.
-\end{markdown*}
+ : Disable the Pandoc GitHub-flavored auto identifiers syntax extension.
-\end{document}
-```````
-Next, invoke LuaTeX from the terminal:
-``` sh
-lualatex document.tex
-``````
-A PDF document named `document.pdf` should be produced and contain the
-following text:
+See also the option \Opt{autoIdentifiers}.
-> 'Twas brillig, and the slithy toves
-> Did gyre and gimble in the wabe;
-> All mimsy were the borogoves,
-> And the mome raths outgrabe.
->
-> 'Twas brillig, and the slithy toves
-> Did gyre and gimble in the wabe;
-> All mimsy were the borogoves,
-> And the mome raths outgrabe.
+ [pandoc-gfm-auto-identifiers]: https://pandoc.org/MANUAL.html#extension-gfm_auto_identifiers
+% \end{markdown}
+% \iffalse
%</manual-options>
%<*tex>
% \fi
% \begin{macrocode}
\@@_add_lua_option:nnn
- { hardLineBreaks }
+ { gfmAutoIdentifiers }
{ boolean }
{ false }
% \end{macrocode}
-% \begin{markdown}
-%
-% The hardLineBreaks option has been deprecated and will be removed in
-% Markdown 3.0.0. From then on, all line breaks within a paragraph will
-% be interpreted as soft line breaks.
-%
-% \end{markdown}
% \iffalse
%</tex>
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.hardLineBreaks = false
+defaultOptions.gfmAutoIdentifiers = false
% \end{macrocode}
% \par
% \iffalse
@@ -6119,11 +6685,11 @@ following content:
#. Parish
\end{markdown}
-\begin{markdown*}{hashEnumerators}
+\begin{markdown}[hashEnumerators]
#. Bird
#. McHale
#. Parish
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -6170,7 +6736,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -6258,12 +6824,12 @@ defaultOptions.headerAttributes = false
#### Option `html`
-`html` (default value: `false`)
+`html` (default value: `true`)
% \fi
% \begin{markdown}
%
-% \Optitem[false]{html}{\opt{true}, \opt{false}}
+% \Optitem[true]{html}{\opt{true}, \opt{false}}
%
: true
@@ -6288,9 +6854,12 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
- local convert = markdown.new()
+ local convert = markdown.new({html = false})
local newline = [[^^J^^J]]
local input =
"<div>*There is no block tag support.*</div>" .. newline ..
@@ -6301,13 +6870,14 @@ following content:
\par
\directlua{
local markdown = require("markdown")
- local convert = markdown.new({html = true})
+ local convert = markdown.new()
local input =
"<div>*There is block tag support.*</div>" .. newline ..
"*There is <inline tag="tag"></inline> support.*" .. newline ..
"_There is <!-- comment --> support._" .. newline ..
"_There is <? HTML instruction ?> support._"
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -6331,9 +6901,13 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\par
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -6348,8 +6922,8 @@ _Is there <? HTML instruction ?> support?_
````````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ html=true -- content.md optiontrue.tex
+texlua ⟨CLI pathname⟩ html=false -- content.md optionfalse.tex
+texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex
luatex document.tex
```````
where \meta{CLI pathname} corresponds to the location of the Lua CLI script file,
@@ -6376,6 +6950,7 @@ following content:
\input markdown
\input lmfonts
+\def\markdownOptionHtml{false}
\markdownBegin
<div>
*There is no block tag support.*
@@ -6420,7 +6995,7 @@ following content:
\usepackage{markdown}
\begin{document}
-\begin{markdown}
+\begin{markdown}[html = false]
<div>
*There is no block tag support.*
</div>
@@ -6429,14 +7004,14 @@ _There is no <!-- comment --> support._
_There is no <? HTML instruction ?> support._
\end{markdown}
-\begin{markdown*}{html}
+\begin{markdown}
<div>
*There is block tag support.*
</div>
*There is <inline tag="tag"></inline> support.*
_There is <!-- comment --> support._
_There is <? HTML instruction ?> support._
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -6462,6 +7037,7 @@ following content:
\usemodule[t][markdown]
\starttext
+\setupmarkdown[html = no]
\startmarkdown
<div>
*There is no block tag support.*
@@ -6485,7 +7061,7 @@ _There is <? HTML instruction ?> support._
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -6504,14 +7080,14 @@ following text:
\@@_add_lua_option:nnn
{ html }
{ boolean }
- { false }
+ { true }
% \end{macrocode}
% \iffalse
%</tex>
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.html = false
+defaultOptions.html = true
% \end{macrocode}
% \par
% \iffalse
@@ -6552,6 +7128,9 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local input, convert_safe, convert_unsafe, paragraph
@@ -6566,6 +7145,7 @@ following content:
convert_unsafe(input)
)
}
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -6588,10 +7168,11 @@ following content:
``` tex
\input markdown
\input lmfonts
-\input optionfalse
-
\begingroup
\catcode`\%=12
+\catcode`\#=12
+\input optionfalse
+\par
\input optiontrue
\endgroup
\bye
@@ -6667,9 +7248,9 @@ following content:
$\sqrt{-1}$ *equals* $i$.
\end{markdown}
-\begin{markdown*}{hybrid}
+\begin{markdown}[hybrid]
$\sqrt{-1}$ *equals* $i$.
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -6707,7 +7288,7 @@ $\sqrt{-1}$ *equals* $i$.
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -6906,7 +7487,7 @@ move down to type the note.]
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -6918,18 +7499,8 @@ following text:
%</manual-options>
%<*tex>
% \fi
-% \begin{markdown}
-%
-% The inlineFootnotes option has been deprecated and will be removed in
-% Markdown 3.0.0.
-%
-% \end{markdown}
% \begin{macrocode}
\@@_add_lua_option:nnn
- { inlineFootnotes }
- { boolean }
- { false }
-\@@_add_lua_option:nnn
{ inlineNotes }
{ boolean }
{ false }
@@ -6939,7 +7510,6 @@ following text:
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.inlineFootnotes = false
defaultOptions.inlineNotes = false
% \end{macrocode}
% \par
@@ -7086,7 +7656,7 @@ age: 99
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -7315,7 +7885,7 @@ following content:
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -7346,6 +7916,77 @@ defaultOptions.lineBlocks = false
%</lua,lua-cli>
%<*manual-options>
+#### Option `mark`
+
+`mark` (default value: `false`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[false]{mark}{\opt{true}, \opt{false}}
+%
+: true
+
+ : Enable the Pandoc [mark syntax extension][pandoc-mark]:
+
+ ``` md
+ This ==is highlighted text.==
+ ``````
+
+: false
+
+ : Disable the Pandoc mark syntax extension.
+
+ [pandoc-mark]: https://pandoc.org/MANUAL.html#extension-mark
+
+% \end{markdown}
+% \iffalse
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage[mark]{markdown}
+\begin{document}
+\begin{markdown}
+
+This ==is highlighted text.==
+
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> This <mark>is highlighted text.</mark>
+
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { mark }
+ { boolean }
+ { false }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli>
+% \fi
+% \begin{macrocode}
+defaultOptions.mark = false
+% \end{macrocode}
+% \par
+% \iffalse
+%</lua,lua-cli>
+%<*manual-options>
+
#### Option `notes`
`notes` (default value: `false`)
@@ -7473,7 +8114,7 @@ isn't indented.
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -7499,18 +8140,8 @@ following text:
%</manual-options>
%<*tex>
% \fi
-% \begin{markdown}
-%
-% The footnotes option has been deprecated and will be removed in
-% Markdown 3.0.0.
-%
-% \end{markdown}
% \begin{macrocode}
\@@_add_lua_option:nnn
- { footnotes }
- { boolean }
- { false }
-\@@_add_lua_option:nnn
{ notes }
{ boolean }
{ false }
@@ -7520,7 +8151,6 @@ following text:
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.footnotes = false
defaultOptions.notes = false
% \end{macrocode}
% \par
@@ -7605,7 +8235,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -7639,12 +8269,12 @@ defaultOptions.pipeTables = false
#### Option `preserveTabs`
-`preserveTabs` (default value: `false`)
+`preserveTabs` (default value: `true`)
% \fi
% \begin{markdown}
%
-% \Optitem[false]{preserveTabs}{\opt{true}, \opt{false}}
+% \Optitem[true]{preserveTabs}{\opt{true}, \opt{false}}
%
: true
@@ -7663,14 +8293,14 @@ defaultOptions.pipeTables = false
\@@_add_lua_option:nnn
{ preserveTabs }
{ boolean }
- { false }
+ { true }
% \end{macrocode}
% \iffalse
%</tex>
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.preserveTabs = false
+defaultOptions.preserveTabs = true
% \end{macrocode}
% \par
% \iffalse
@@ -7765,7 +8395,7 @@ following text:
%<*lua,lua-cli>
% \fi
% \begin{macrocode}
-defaultOptions.rawAttribute = true
+defaultOptions.rawAttribute = false
% \end{macrocode}
% \par
% \iffalse
@@ -7971,7 +8601,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -8181,7 +8811,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -8246,8 +8876,11 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
-\def\markdownRendererEllipsis{. . .}
\input lmfonts
+\def\markdownRendererEllipsis{. . .}
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local convert = markdown.new()
@@ -8259,6 +8892,7 @@ following content:
local convert = markdown.new({smartEllipses = true})
local input = "... and this is a victorian ellipsis."
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -8278,11 +8912,15 @@ Using a text editor, create a text document named `document.tex` with the
following content:
``` tex
\input markdown
-\def\markdownRendererEllipsis{. . .}
\input lmfonts
+\def\markdownRendererEllipsis{. . .}
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\par
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -8357,9 +8995,9 @@ following content:
These are just three regular dots ...
\end{markdown}
-\begin{markdown*}{smartEllipses}
+\begin{markdown}[smartEllipses]
... and this is a victorian ellipsis.
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -8396,7 +9034,7 @@ These are just three regular dots ...
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -8466,14 +9104,14 @@ The following list respects the numbers specified in the markup:
5. fifth item
\end{markdown}
-\begin{markdown*}{startNumber=false}
+\begin{markdown}[startNumber=false]
The following list does not respect the numbers specified in the
markup:
3. third item
4. fourth item
5. fifth item
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -8524,7 +9162,7 @@ The following list respects the numbers specified in the markup:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -8656,7 +9294,7 @@ This is ~~a lunar roving vehicle~~ strike-through text.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -8771,7 +9409,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
text “Hello *world*!”
@@ -8861,7 +9499,7 @@ H~2~O is a liquid.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -8953,7 +9591,7 @@ following content:
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -8981,7 +9619,132 @@ defaultOptions.superscripts = false
%</lua,lua-cli>
%<*manual-options>
-#### Option `tableCaptions`
+#### Option `tableAttributes`
+
+`tableAttributes` (default value: `false`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[false]{tableAttributes}{\opt{true}, \opt{false}}
+%
+: true
+
+ : Enable the assignment of HTML attributes to
+% table captions (see the \Opt{tableCaptions} option).
+% \iffalse
+ [table captions](#table-captions).
+% \fi
+
+ ``` md
+ | Right | Left | Default | Center |
+ |------:|:-----|---------|:------:|
+ | 12 | 12 | 12 | 12 |
+ | 123 | 123 | 123 | 123 |
+ | 1 | 1 | 1 | 1 |
+
+ : Demonstration of pipe table syntax. {#example-table}
+ ```
+
+: false
+
+ : Disable the assignment of HTML attributes to table captions.
+
+% \end{markdown}
+% \iffalse
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage[
+ pipeTables,
+ tableCaptions,
+ tableAttributes,
+ relativeReferences,
+]{markdown}
+\usepackage{expl3}
+\ExplSyntaxOn
+\markdownSetup{
+ renderers = {
+ tableAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup{
+ renderers = {
+ attributeIdentifier = {
+ \markdownSetup{
+ renderers = {
+ tableAttributeContextEnd = {
+ \label{##1}
+ \group_end:
+ },
+ },
+ }
+ },
+ },
+ }
+ },
+ tableAttributeContextEnd = {
+ \group_end:
+ },
+ },
+}
+\ExplSyntaxOff
+\begin{document}
+\begin{markdown}
+See Table <#example-table>.
+
+| Right | Left | Default | Center |
+|------:|:-----|---------|:------:|
+| 12 | 12 | 12 | 12 |
+| 123 | 123 | 123 | 123 |
+| 1 | 1 | 1 | 1 |
+
+ : Demonstration of pipe table syntax. {#example-table}
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> See Table 1.
+>
+> | Right | Left | Default | Center |
+> |------:|:-----|---------|:------:|
+> | 12 | 12 | 12 | 12 |
+> | 123 | 123 | 123 | 123 |
+> | 1 | 1 | 1 | 1 |
+>
+> : Table 1. Demonstration of pipe table syntax.
+
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { tableAttributes }
+ { boolean }
+ { false }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli>
+% \fi
+% \begin{macrocode}
+defaultOptions.tableAttributes = false
+% \end{macrocode}
+% \par
+% \iffalse
+%</lua,lua-cli>
+%<*manual-options>
+
+#### Option `tableCaptions` {#table-captions}
`tableCaptions` (default value: `false`)
@@ -9077,7 +9840,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -9194,7 +9957,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -9314,7 +10077,7 @@ Hel% this is a comment
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
text “Hello *world*!”
@@ -9376,6 +10139,9 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local newline = [[^^J^^J]]
@@ -9384,6 +10150,7 @@ following content:
[[$E=mc^2$]] .. newline .. newline ..
[[$$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$]]
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -9404,9 +10171,13 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\par
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -9432,11 +10203,11 @@ A PDF document named `document.pdf` should be produced and contain the
following text:
> \$E=mc^2\$
->
+>
> \$\$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\$\$
>
> $E=mc^2$
->
+>
> $$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx$$
##### Plain \TeX{} Example {.unnumbered}
@@ -9513,7 +10284,7 @@ $$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -9579,6 +10350,9 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local newline = [[^^J^^J]]
@@ -9587,6 +10361,7 @@ following content:
[[\\(E=mc^2\\)]] .. newline .. newline ..
[[\\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]]]
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -9607,9 +10382,13 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\par
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -9635,11 +10414,11 @@ A PDF document named `document.pdf` should be produced and contain the
following text:
> \\\(E=mc^2\\)
->
+>
> \\\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]
>
> \\(E=mc^2\\)
->
+>
> \\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\\]
##### Plain \TeX{} Example {.unnumbered}
@@ -9716,7 +10495,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -9782,6 +10561,9 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\directlua{
local markdown = require("markdown")
local newline = [[^^J^^J]]
@@ -9790,6 +10572,7 @@ following content:
[[\(E=mc^2\)]] .. newline .. newline ..
[[\[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\]]]
tex.sprint(convert(input)) }
+\endgroup
\bye
```````
Then, invoke LuaTeX from the terminal:
@@ -9810,9 +10593,13 @@ following content:
``` tex
\input markdown
\input lmfonts
+\begingroup
+\catcode`\%=12
+\catcode`\#=12
\input optionfalse
\par
\input optiontrue
+\endgroup
\bye
```````
Using a text editor, create a text document named `content.md` with the
@@ -9838,11 +10625,11 @@ A PDF document named `document.pdf` should be produced and contain the
following text:
> (E=mc^2)
->
+>
> [\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx]
>
> \(E=mc^2\)
->
+>
> \[\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^{-i2\pi \xi x} dx\]
##### Plain \TeX{} Example {.unnumbered}
@@ -9919,7 +10706,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -10010,13 +10797,13 @@ The following list is loose:
- third item
\end{markdown}
-\begin{markdown*}{tightLists=false}
+\begin{markdown}[tightLists=false]
The following list is now also loose:
- first item
- second item
- third item
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -10143,9 +10930,9 @@ following content:
This is _emphasized text_ and this is a math subscript: $m\_n$.
\end{markdown}
-\begin{markdown*}{underscores=false}
+\begin{markdown}[underscores=false]
This is *emphasized text* and this is a math subscript: $m_n$.
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -10182,7 +10969,7 @@ This is *emphasized text* and this is a math subscript: $m_n$.
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -10468,6 +11255,7 @@ end
% Plain \TeX{} Interface {#texinterface}
%------------------------
%
+% \end{markdown}
% \iffalse
%</tex>
%<*manual-interfaces>
@@ -10494,7 +11282,7 @@ following content:
$\sqrt{-1}$ *equals* $i$.
\markdownEnd
-\def\markdownOptionHybrid{true}
+\def\markdownOptionTexMathDollars{true}
\markdownBegin
$\sqrt{-1}$ *equals* $i$.
\markdownEnd
@@ -10522,6 +11310,7 @@ pdftex --shell-escape document.tex
%</manual-interfaces>
%<*tex>
% \fi
+% \begin{markdown}
%
% The plain \TeX{} interface provides macros for the typesetting of markdown
% input from within plain \TeX{}, for setting the Lua interface options (see
@@ -10605,9 +11394,11 @@ pdftex --shell-escape document.tex
% \bye
% ```````
%
-% The \mref{markdownInput} macro accepts a single parameter with the filename
-% of a markdown document and expands to the result of the conversion of the
-% input markdown document to plain \TeX{}.
+% You can use the \mref{markdownInput} macro to include markdown documents,
+% similarly to how you might use the \mref{input} \TeX{} primitive to include
+% \TeX{} documents. The \mref{markdownInput} macro accepts a single parameter
+% with the filename of a markdown document and expands to the result of the
+% conversion of the input markdown document to plain \TeX{}.
%
% \end{markdown}
% \begin{macrocode}
@@ -10648,12 +11439,33 @@ pdftex --shell-escape document.tex
% Section <#sec:lua-options>), while some of them are specific to the plain
% \TeX{} interface.
%
+% To determine whether plain \TeX{} is the top layer or if there are other
+% layers above plain \TeX{}, we take a look on whether the
+% \mdef{c_@@_top_layer_tl} token list has already been defined. If not,
+% we will assume that plain \TeX{} is the top layer.
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\tl_const:Nn \c_@@_option_layer_plain_tex_tl { plain_tex }
+\cs_generate_variant:Nn
+ \tl_const:Nn
+ { NV }
+\tl_if_exist:NF
+ \c_@@_top_layer_tl
+ {
+ \tl_const:NV
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_plain_tex_tl
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
% To enable the enumeration of plain \TeX{} options, we will maintain the
% \mdef{g_\@\@_plain_tex_options_seq} sequence.
%
% \end{markdown}
% \begin{macrocode}
-\ExplSyntaxOn
\seq_new:N \g_@@_plain_tex_options_seq
% \end{macrocode}
% \begin{markdown}
@@ -10666,7 +11478,6 @@ pdftex --shell-escape document.tex
% \begin{macrocode}
\prop_new:N \g_@@_plain_tex_option_types_prop
\prop_new:N \g_@@_default_plain_tex_options_prop
-\tl_const:Nn \c_@@_option_layer_plain_tex_tl { plain_tex }
\seq_gput_right:NV \g_@@_option_layers_seq \c_@@_option_layer_plain_tex_tl
\cs_new:Nn
\@@_add_plain_tex_option:nnn
@@ -10705,6 +11516,90 @@ following code in your plain \TeX{} document:
% \par
% \begin{markdown}
%
+% The plain \TeX{} options may be also be specified via the \mdef{markdownSetup}
+% macro. Here, the plain \TeX{} options are represented by a comma-delimited
+% list of \meta{key}`=`\meta{value} pairs. For boolean options, the
+% `=`\meta{value} part is optional, and \meta{key} will be interpreted as
+% \meta{key}`=true` if the `=`\meta{value} part has been omitted.
+% The \mref{markdownSetup} macro receives the options to set up as its only
+% argument.
+%
+% \end{markdown}
+% \begin{macrocode}
+\cs_new:Nn
+ \@@_setup:n
+ {
+ \keys_set:nn
+ { markdown/options }
+ { #1 }
+ }
+\cs_gset_eq:NN
+ \markdownSetup
+ \@@_setup:n
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*manual-options>
+
+Alternatively, you can also set plain \TeX{} options using the `\markdownSetup`
+\TeX{} macro. For example, to set the \Opt{taskLists} Lua option to `true`,
+you would include the following code in your plain \TeX{} document:
+
+``` tex
+\markdownSetup{taskLists = true}
+```
+
+%</manual-options>
+%<*tex>
+% \fi
+% \par
+% \begin{markdown}
+%
+% The
+% \mdef{markdownIfOption}`{`\meta{name}`}{`\meta{iftrue}`}{`\meta{iffalse}`}`
+% macro is provided for testing, whether the value of
+% `\markdownOption`\meta{name} is `true`. If the value is `true`, then
+% \meta{iftrue} is expanded, otherwise \meta{iffalse} is expanded.
+%
+% \end{markdown}
+% \begin{macrocode}
+\prg_new_conditional:Nnn
+ \@@_if_option:n
+ { TF, T, F }
+ {
+ \@@_get_option_type:nN
+ { #1 }
+ \l_tmpa_tl
+ \str_if_eq:NNF
+ \l_tmpa_tl
+ \c_@@_option_type_boolean_tl
+ {
+ \msg_error:nnxx
+ { markdown }
+ { expected-boolean-option }
+ { #1 }
+ { \l_tmpa_tl }
+ }
+ \@@_get_option_value:nN
+ { #1 }
+ \l_tmpa_tl
+ \str_if_eq:NNTF
+ \l_tmpa_tl
+ \c_@@_option_value_true_tl
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\msg_new:nnn
+ { markdown }
+ { expected-boolean-option }
+ {
+ Option~#1~has~type~#2,~
+ but~a~boolean~was~expected.
+ }
+\let\markdownIfOption=\@@_if_option:nTF
+% \end{macrocode}
+% \begin{markdown}
+%
%#### Finalizing and Freezing the Cache
% The \mdef{markdownOptionFinalizeCache} option corresponds to the Lua
% interface \Opt{finalizeCache} option, which creates an output file
@@ -10777,11 +11672,9 @@ For more information, see the examples for the \Opt{finalizeCache} option.
% \fi
% \begin{markdown}
%
-% The \mdef{markdownOptionHelperScriptFileName} macro sets the filename of the
-% helper Lua script file that is created during the conversion from markdown to
-% plain \TeX{} in \TeX{} engines without the `\directlua` primitive. It
-% defaults to `\jobname.markdown.lua`, where `\jobname` is the base name
-% of the document being typeset.
+% The \mdef{markdownOptionInputTempFileName} macro sets the filename of the
+% temporary input file that is created during the buffering of markdown text
+% from a \TeX{} source. It defaults to `\jobname.markdown.in`.
%
% The expansion of this macro must not contain quotation marks (`"`) or
% backslash symbols (`\`). Mind that \TeX{} engines tend to
@@ -10790,140 +11683,311 @@ For more information, see the examples for the \Opt{finalizeCache} option.
% \end{markdown}
% \begin{macrocode}
\@@_add_plain_tex_option:nnn
- { helperScriptFileName }
+ { inputTempFileName }
{ path }
- { \jobname.markdown.lua }
+ { \jobname.markdown.in }
% \end{macrocode}
% \par
% \begin{markdown}
%
-% The \Opt{helperScriptFileName} macro has been deprecated and
-% will be removed in Markdown 3.0.0. To control the filename of the helper Lua
-% script file, use the `\g_luabridge_helper_script_filename_str` macro from the
-% \pkg{lt3luabridge} package.
+% The \mdef{markdownOptionOutputDir} macro sets the path to the directory that
+% will contain the auxiliary cache files produced by the Lua implementation and
+% also the auxiliary files produced by the plain \TeX{} implementation. The
+% option defaults to `.` or, since \TeX{} Live 2024, to the value of the
+% `-output-directory` option of your \TeX{} engine.
%
-% \end{markdown}
-% \begin{macrocode}
-\str_new:N
- \g_luabridge_helper_script_filename_str
-\tl_gset:Nn
- \g_luabridge_helper_script_filename_str
- { \markdownOptionHelperScriptFileName }
-% \end{macrocode}
-% \begin{markdown}
+% The path must be set to the same value as the `-output-directory` option of
+% your \TeX{} engine for the package to function correctly. We need this macro
+% to make the Lua implementation aware where it should store the helper files.
+% The same limitations apply here as in the case of the
+% \Opt{inputTempFileName} macro.
%
-% The \mdef{markdownOptionInputTempFileName} macro sets the filename of the
-% temporary input file that is created during the buffering of markdown text
-% from a \TeX{} source. It defaults to `\jobname.markdown.in`. The same
-% limitations as in the case of the \Opt{helperScriptFileName}
-% macro apply here.
+% The \mref{markdownOptionOutputDir} macro has been deprecated and will be
+% removed in the next major version of the Markdown package. <!-- After the
+% macro has been removed, we should remove support for TeX Live 2023 and
+% earlier, where the automatic detection does not work. -->
%
% \end{markdown}
% \begin{macrocode}
-\@@_add_plain_tex_option:nnn
- { inputTempFileName }
- { path }
- { \jobname.markdown.in }
+\cs_generate_variant:Nn
+ \@@_add_plain_tex_option:nnn
+ { nnV }
% \end{macrocode}
-% \par
% \begin{markdown}
%
-% The \mdef{markdownOptionOutputTempFileName} macro sets the filename of the
-% temporary output file that is created during the conversion from markdown to
-% plain \TeX{} in \mref{markdownMode} other than `2` It defaults to
-% `\jobname.markdown.out`. The same limitations apply here as in the case
-% of the \Opt{helperScriptFileName} macro.
+% Use the \pkg{lt3luabridge} library to determine the default value of the
+% \mref{markdownOptionOutputDir} macro by using the environmental variable
+% `TEXMF_OUTPUT_DIRECTORY` that is available since TeX~Live 2024.
%
% \end{markdown}
% \begin{macrocode}
-\@@_add_plain_tex_option:nnn
- { outputTempFileName }
+\ExplSyntaxOff
+\input lt3luabridge.tex
+\ExplSyntaxOn
+\bool_if:nTF
+ {
+ \cs_if_exist_p:N
+ \luabridge_tl_set:Nn &&
+ (
+ \int_compare_p:nNn
+ { \g_luabridge_method_int }
+ =
+ { \c_luabridge_method_directlua_int } ||
+ \sys_if_shell_unrestricted_p:
+ )
+ }
+ {
+ \luabridge_tl_set:Nn
+ \l_tmpa_tl
+ { print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { . }
+ }
+\@@_add_plain_tex_option:nnV
+ { outputDir }
{ path }
- { \jobname.markdown.out }
+ \l_tmpa_tl
% \end{macrocode}
-% \par
+% \iffalse
+%</tex>
+%<*manual-options>
+
+The plain \TeX{} interface provides the following commands that you can use to
+specify the location of temporary files produced during the conversion from
+Markdown to \TeX{}:
+
+- `\markdownOptionInputTempFileName`,
+- `\markdownOptionOutputDir`,
+- `\markdownOptionCacheDir`, and
+- `\markdownOptionFrozenCacheFileName`.
+
+The `\markdownOptionCacheDir` and `\markdownOptionFrozenCacheFileName` commands
+correspond to the `cacheDir` and `frozenCacheFileName` Lua options.
+
+Using a text editor, create a folder named `output-directory` and a text
+document named `document.tex` with the following content:
+``` tex
+\input lmfonts
+\input markdown
+\def\markdownOptionInputTempFileName{temporary-input.md}
+\def\markdownOptionOutputDir{output-directory}
+\def\markdownOptionCacheDir{output-directory/cache-directory}
+\def\markdownOptionEagerCache{true}
+\def\markdownOptionFinalizeCache{true}
+\def\markdownOptionFrozenCacheFileName{output-directory/cache-directory/frozen-cache.tex}
+\markdownBegin
+Hello *world*!
+\markdownEnd
+\bye
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+luatex --output-directory output-directory document.tex
+``````
+A text document named `temporary-input.md` should be produced in the folder
+named `output-directory` and contain the following text:
+
+> Hello \*world\*!
+
+A folder named `output-directory/cache-directory` should also be produced and
+contain fragments of the converted markdown document. LuaTeX does not need
+other temporary files to perform the conversion from markdown to \TeX{}. To
+produce the remaining temporary files, invoke pdfTeX from the terminal:
+``` sh
+pdftex --output-directory output-directory --shell-escape document.tex
+``````
+Text document named `temporary-output.md` should be produced in the folder
+named `output-directory`. The document will contain the input markdown
+document converted to \TeX{}.
+
+% \fi
% \begin{markdown}
-%
-% The \Opt{outputTempFileName} macro has been deprecated and
-% will be removed in Markdown 3.0.0.
-%
+
+#### No default token renderer prototypes {#plain}
+
+The Markdown package provides default definitions for token renderer prototypes
+using the `witiko/markdown/defaults`
+% theme (see Section~<sec:#themes>).
+% \iffalse
+theme.
+% \fi
+Although these default definitions provide a useful starting point for authors,
+they use extra resources, especially with higher-level \TeX{} formats such as
+\LaTeX{} and \Hologo{ConTeXt}. Furthermore, the default definitions may change
+at any time, which may pose a problem for maintainers of Markdown themes and
+templates who may require a stable output.
+
+The \mdef{markdownOptionPlain} macro specifies whether higher-level \TeX{}
+formats should only use the plain \TeX{} default definitions or whether they
+should also use the format-specific default definitions. Whereas plain \TeX{}
+default definitions only provide definitions for simple elements such as
+emphasis, strong emphasis, and paragraph separators, format-specific default
+definitions add support for more complex elements such as lists, tables, and
+citations. On the flip side, plain \TeX{} default definitions load no extra
+resources and are rather stable, whereas format-specific default definitions
+load extra resources and are subject to a more rapid change.
+
+Here is how you would enable the macro in a \LaTeX{} document:
+
+``` tex
+\usepackage[plain]{markdown}
+```````
+
+Here is how you would enable the macro in a \Hologo{ConTeXt} document:
+
+``` tex
+\def\markdownOptionPlain{true}
+\usemodule[t][markdown]
+```````
+
+The macro must be set before or during the loading of the package. Setting the
+macro after loading the package has no effect.
+
% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*tex>
+% \fi
% \begin{macrocode}
-\str_new:N
- \g_luabridge_standard_output_filename_str
-\tl_gset:Nn
- \g_luabridge_standard_output_filename_str
- { \markdownOptionOutputTempFileName }
+\@@_add_plain_tex_option:nnn
+ { plain }
+ { boolean }
+ { false }
% \end{macrocode}
+% \iffalse
+%</tex>
+%<*manual-options>
+% \fi
% \begin{markdown}
-%
-% The \mdef{markdownOptionErrorTempFileName} macro sets the filename of the
-% temporary output file that is created when a Lua error is encountered during
-% the conversion from markdown to plain \TeX{} in \mref{markdownMode} other than
-% `2`. It defaults to `\jobname.markdown.err`. The same limitations
-% apply here as in the case of the \Opt{helperScriptFileName}
-% macro.
-%
+
+The \mdef{markdownOptionNoDefaults} macro specifies whether we should prevent
+the loading of default definitions or not. This is useful in contexts, where
+we want to have total control over how all elements are rendered.
+
+Here is how you would enable the macro in a \LaTeX{} document:
+
+``` tex
+\usepackage[noDefaults]{markdown}
+```````
+
+Here is how you would enable the macro in a \Hologo{ConTeXt} document:
+
+``` tex
+\def\markdownOptionNoDefaults{true}
+\usemodule[t][markdown]
+```````
+
+The macro must be set before or during the loading of the package. Setting the
+macro after loading the package has no effect.
+
% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*tex>
+% \fi
% \begin{macrocode}
\@@_add_plain_tex_option:nnn
- { errorTempFileName }
- { path }
- { \jobname.markdown.err }
+ { noDefaults }
+ { boolean }
+ { false }
% \end{macrocode}
-% \par
% \begin{markdown}
%
-% The \Opt{errorTempFileName} macro has been deprecated and
-% will be removed in Markdown 3.0.0. To control the filename of the temporary
-% file for Lua errors, use the `\g_luabridge_error_output_filename_str` macro
-% from the \pkg{lt3luabridge} package.
+%#### Miscellaneous Options
+%
+% The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent
+% sign (`\%`) at the beginning of a line will be discarded when buffering
+% Markdown input (see Section <#sec:buffering>) or not. Notably, this
+% enables the use of markdown when writing \TeX{} package documentation using
+% the \pkg{Doc} \LaTeX{}~package~[@mittelbach17] or similar. The recognized
+% values of the macro are `true` (discard) and `false` (retain). It defaults
+% to `false`.
%
% \end{markdown}
% \begin{macrocode}
-\str_new:N
- \g_luabridge_error_output_filename_str
-\tl_gset:Nn
- \g_luabridge_error_output_filename_str
- { \markdownOptionErrorTempFileName }
+\seq_gput_right:Nn
+ \g_@@_plain_tex_options_seq
+ { stripPercentSigns }
+\prop_gput:Nnn
+ \g_@@_plain_tex_option_types_prop
+ { stripPercentSigns }
+ { boolean }
+\prop_gput:Nnx
+ \g_@@_default_plain_tex_options_prop
+ { stripPercentSigns }
+ { false }
% \end{macrocode}
+% \iffalse
+%</tex>
+%<*manual-options>
+
+#### Package Documentation
+
+The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent
+sign (`\%`) at the beginning of a line will be discarded when reading Markdown
+input from a \TeX{} document. This enables the use of markdown when writing
+\TeX{} package documentation using the [Doc \LaTeX{} package][doc] by Frank
+Mittelbach. The recognized values of the macro are `true` (discard) and `false`
+(retain). It defaults to `false`.
+
+ [doc]: https://ctan.org/pkg/doc (doc – Format LaTeX documentation)
+
+Using a text editor, create a text document named `document.dtx` with the
+following content:
+
+ ``` tex
+ % \iffalse
+ \documentclass{ltxdoc}
+ \usepackage[stripPercentSigns]{markdown}
+ \begin{document}
+ \DocInput{document.dtx}
+ \end{document}
+ % \fi
+ %
+ % \begin{markdown}
+ % Hello *world*!
+ % \end{markdown}
+ ```````
+
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.dtx
+``````
+A PDF document named `document.pdf` should be produced and contain the text
+“Hello *world*!”
+
+%</manual-options>
+%<*tex>
+% \fi
% \begin{markdown}
%
-% The \mdef{markdownOptionOutputDir} macro sets the path to the directory that
-% will contain the auxiliary cache files produced by the Lua implementation and
-% also the auxiliary files produced by the plain \TeX{} implementation. The
-% option defaults to `.`.
-%
-% The path must be set to the same value as the `-output-directory` option of
-% your \TeX{} engine for the package to function correctly. We need this macro
-% to make the Lua implementation aware where it should store the helper files.
-% The same limitations apply here as in the case of the
-% \Opt{helperScriptFileName} macro.
+%#### Generating Plain \TeX{} Option Macros and Key-Values
%
-% \end{markdown}
-% \begin{macrocode}
-\@@_add_plain_tex_option:nnn
- { outputDir }
- { path }
- { . }
-% \end{macrocode}
-% \begin{markdown}
+% We define the command \mdef{@@_define_option_commands_and_keyvals:} that
+% defines plain \TeX{} macros and the key-value interface
+% of the \mref{markdownSetup} macro for the above plain \TeX{} options.
%
-% Here, we automatically define plain \TeX{} macros for the above plain \TeX{}
-% options.
+% The command also defines macros and key-values that map
+% directly to the options recognized by the Lua interface, such as
+% \mdef{markdownOptionHybrid} for the \Opt{hybrid} Lua option (see Section
+% <#sec:lua-options>), which are not processed by the plain \TeX{}
+% implementation, only passed along to Lua.
%
-% Furthemore, we also define macros that map directly to the options recognized
-% by the Lua interface, such as \mdef{markdownOptionHybrid} for the
-% \Opt{hybrid} Lua option (see Section <#sec:lua-options>), which are not
-% processed by the plain \TeX{} implementation, only passed along to Lua.
+% Furthermore, the command also defines options and key-values
+% for subsequently loaded layers that correspond to higher-level \TeX{} formats
+% such as \LaTeX{} and \Hologo{ConTeXt}.
%
% For the macros that correspond to the non-boolean options recognized by the
% Lua interface, the same limitations apply here in the case of the
-% \Opt{helperScriptFileName} macro.
+% \Opt{inputTempFileName} macro.
%
% \end{markdown}
% \begin{macrocode}
-\cs_new:Nn \@@_plain_tex_define_option_commands:
+\cs_new:Nn
+ \@@_define_option_commands_and_keyvals:
{
\seq_map_inline:Nn
\g_@@_option_layers_seq
@@ -10931,19 +11995,53 @@ For more information, see the examples for the \Opt{finalizeCache} option.
\seq_map_inline:cn
{ g_@@_ ##1 _options_seq }
{
- \@@_plain_tex_define_option_command:n
+ \@@_define_option_command:n
{ ####1 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% To make it easier to copy-and-paste options from Pandoc [@macfarlane22] such
+% as `fancy_lists`, `header_attributes`, and `pipe_tables`, we accept
+% snake\\\_case in addition to camelCase variants of options. As a bonus,
+% studies [@sharif10] also show that snake\\\_case is faster to read than
+% camelCase.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \@@_with_various_cases:nn
+ { ####1 }
+ {
+ \@@_define_option_keyval:nnn
+ { ##1 }
+ { ####1 }
+ { ########1 }
+ }
}
}
}
-\cs_new:Nn \@@_plain_tex_define_option_command:n
+\cs_new:Nn
+ \@@_define_option_command:n
{
- \@@_get_default_option_value:nN
- { #1 }
- \l_tmpa_tl
- \@@_set_option_value:nV
+% \end{macrocode}
+% \begin{markdown}
+%
+% Do not override options defined before loading the package.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \@@_option_tl_to_csname:nN
{ #1 }
\l_tmpa_tl
+ \cs_if_exist:cF
+ { \l_tmpa_tl }
+ {
+ \@@_get_default_option_value:nN
+ { #1 }
+ \l_tmpa_tl
+ \@@_set_option_value:nV
+ { #1 }
+ \l_tmpa_tl
+ }
}
\cs_new:Nn
\@@_set_option_value:nn
@@ -11000,140 +12098,750 @@ For more information, see the examples for the \Opt{finalizeCache} option.
}
}
}
-\@@_plain_tex_define_option_commands:
+\cs_new:Nn
+ \@@_define_option_keyval:nnn
+ {
+ \prop_get:cnN
+ { g_@@_ #1 _option_types_prop }
+ { #2 }
+ \l_tmpa_tl
+ \str_if_eq:VVTF
+ \l_tmpa_tl
+ \c_@@_option_type_boolean_tl
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% For boolean options, we also accept `yes` as an alias for
+% `true` and `no` as an alias for `false`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ #3 .code:n = {
+ \tl_set:Nx
+ \l_tmpa_tl
+ {
+ \str_case:nnF
+ { ##1 }
+ {
+ { yes } { true }
+ { no } { false }
+ }
+ { ##1 }
+ }
+ \@@_set_option_value:nV
+ { #2 }
+ \l_tmpa_tl
+ },
+ #3 .default:n = { true },
+ }
+ }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #3 .code:n = {
+ \@@_set_option_value:nn
+ { #2 }
+ { ##1 }
+ },
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% For options of type `clist`, we assume that \meta{key} is a regular English
+% noun in plural (such as `extensions`) and we also define the
+% \meta{singular key}`=`\meta{value} interface, where \meta{singular key} is
+% \meta{key} after stripping the trailing -s (such as `extension`). Rather
+% than setting the option to \meta{value}, this interface appends \meta{value}
+% to the current value as the rightmost item in the list.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \str_if_eq:VVT
+ \l_tmpa_tl
+ \c_@@_option_type_clist_tl
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #3 }
+ \tl_reverse:N
+ \l_tmpa_tl
+ \str_if_eq:enF
+ {
+ \tl_head:V
+ \l_tmpa_tl
+ }
+ { s }
+ {
+ \msg_error:nnn
+ { markdown }
+ { malformed-name-for-clist-option }
+ { #3 }
+ }
+ \tl_set:Nx
+ \l_tmpa_tl
+ {
+ \tl_tail:V
+ \l_tmpa_tl
+ }
+ \tl_reverse:N
+ \l_tmpa_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ {
+ .code:n = {
+ \@@_get_option_value:nN
+ { #2 }
+ \l_tmpa_tl
+ \clist_set:NV
+ \l_tmpa_clist
+ { \l_tmpa_tl, { ##1 } }
+ \@@_set_option_value:nV
+ { #2 }
+ \l_tmpa_clist
+ }
+ }
+ \keys_define:nV
+ { markdown/options }
+ \l_tmpa_tl
+ }
+ }
+\cs_generate_variant:Nn
+ \clist_set:Nn
+ { NV }
+\cs_generate_variant:Nn
+ \keys_define:nn
+ { nV }
+\cs_generate_variant:Nn
+ \@@_set_option_value:nn
+ { nV }
+\prg_generate_conditional_variant:Nnn
+ \str_if_eq:nn
+ { en }
+ { F }
+\msg_new:nnn
+ { markdown }
+ { malformed-name-for-clist-option }
+ {
+ Clist~option~name~#1~does~not~end~with~-s.
+ }
% \end{macrocode}
+% \begin{markdown}
+%
+% If plain \TeX{} is the top layer, we use the
+% \mref{@@_define_option_commands_and_keyvals:} macro to define plain \TeX{}
+% option macros and key-values immediately. Otherwise, we
+% postpone the definition until the upper layers have been loaded.
%
+% \end{markdown}
+% \begin{macrocode}
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_plain_tex_tl
+ {
+ \@@_define_option_commands_and_keyvals:
+ }
+\ExplSyntaxOff
+% \end{macrocode}
% \iffalse
%</tex>
%<*manual-options>
+% \fi
+% \begin{markdown}
-The plain \TeX{} interface provides the following commands that you can use to
-specify the location of temporary files produced during the conversion from
-Markdown to \TeX{}:
+### Themes {#themes}
-- `\markdownOptionHelperScriptFileName`,
-- `\markdownOptionInputTempFileName`,
-- `\markdownOptionOutputTempFileName`,
-- `\markdownOptionErrorTempFileName`,
-- `\markdownOptionOutputDir`,
-- `\markdownOptionCacheDir`, and
-- `\markdownOptionFrozenCacheFileName`.
+User-defined themes for the Markdown package provide a domain-specific
+interpretation of Markdown tokens. Themes allow the authors to achieve
+a specific look and other high-level goals without low-level programming.
-The `\markdownOptionCacheDir` and `\markdownOptionFrozenCacheFileName` commands
-correspond to the `cacheDir` and `frozenCacheFileName` Lua options.
+% The key-values `theme`=\meta{theme name} and `import`=\meta{theme name} load
+% a \TeX{} document (further referred to as *a theme*) named
+% `markdowntheme`\meta{munged theme name}`.tex`, where the *munged theme name*
+% is the *theme name* after the substitution of all forward slashes (`/`) for
+% an underscore (`_`). The theme name is *qualified* and contains no
+% underscores. A theme name is qualified if and only if it contains at least
+% one forward slash. Themes are inspired by the Beamer \LaTeX{} package, which
+% provides similar functionality with its `\usetheme` macro [@tantau21, Section
+% 15.1].
+%
+% Theme names must be qualified to minimize naming conflicts between different
+% themes with a similar purpose. The preferred format of a theme name is
+% \meta{theme author}`/`\meta{theme purpose}`/`\meta{private naming
+% scheme}, where the *private naming scheme* may contain additional forward
+% slashes. For example, a theme by a user `witiko` for the MU theme of the
+% Beamer document class may have the name `witiko/beamer/MU`.
+%
+% Theme names are munged to allow structure inside theme names without
+% dictating where the themes should be located inside the \TeX{} directory
+% structure. For example, loading a theme named `witiko/beamer/MU` would
+% load a \TeX{} document package named `markdownthemewitiko_beamer_MU.tex`.
+%
+% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\ExplSyntaxOn
+\keys_define:nn
+ { markdown/options }
+ {
+ theme .code:n = {
+ \@@_set_theme:n
+ { #1 }
+ },
+ import .code:n = {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #1 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% To ensure that keys containing forward slashes get passed correctly, we
+% replace all forward slashes in the input with backslash tokens with category
+% code letter and then undo the replacement. This means that if any unbraced
+% backslash tokens with category code letter exist in the input, they will be
+% replaced with forward slashes. However, this should be extremely rare.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \tl_replace_all:NnV
+ \l_tmpa_tl
+ { / }
+ \c_backslash_str
+ \keys_set:nV
+ { markdown/options/import }
+ \l_tmpa_tl
+ },
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% To keep track of the current theme when themes are nested, we will
+% maintain the \mdef{g_\@\@_themes_seq} stack of theme names.
+% For convenience, the name of the current theme is also available in the
+% \mdef{g_@@_current_theme_tl} macro.
+%
+% \end{markdown}
+% \begin{macrocode}
+\seq_new:N
+ \g_@@_themes_seq
+\tl_new:N
+ \g_@@_current_theme_tl
+\tl_gset:Nn
+ \g_@@_current_theme_tl
+ { }
+\seq_gput_right:NV
+ \g_@@_themes_seq
+ \g_@@_current_theme_tl
+\cs_new:Nn
+ \@@_set_theme:n
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% First, we validate the theme name.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \str_if_in:nnF
+ { #1 }
+ { / }
+ {
+ \msg_error:nnn
+ { markdown }
+ { unqualified-theme-name }
+ { #1 }
+ }
+ \str_if_in:nnT
+ { #1 }
+ { _ }
+ {
+ \msg_error:nnn
+ { markdown }
+ { underscores-in-theme-name }
+ { #1 }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Next, we munge the theme name.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \str_set:Nn
+ \l_tmpa_str
+ { #1 }
+ \str_replace_all:Nnn
+ \l_tmpa_str
+ { / }
+ { _ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Finally, we load the theme.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \tl_gset:Nn
+ \g_@@_current_theme_tl
+ { #1 / }
+ \seq_gput_right:NV
+ \g_@@_themes_seq
+ \g_@@_current_theme_tl
+ \@@_load_theme:nV
+ { #1 }
+ \l_tmpa_str
+ \seq_gpop_right:NN
+ \g_@@_themes_seq
+ \l_tmpa_tl
+ \seq_get_right:NN
+ \g_@@_themes_seq
+ \l_tmpa_tl
+ \tl_gset:NV
+ \g_@@_current_theme_tl
+ \l_tmpa_tl
+ }
+\msg_new:nnnn
+ { markdown }
+ { unqualified-theme-name }
+ { Won't~load~theme~with~unqualified~name~#1 }
+ { Theme~names~must~contain~at~least~one~forward~slash }
+\msg_new:nnnn
+ { markdown }
+ { underscores-in-theme-name }
+ { Won't~load~theme~with~an~underscore~in~its~name~#1 }
+ { Theme~names~must~not~contain~underscores~in~their~names }
+\cs_generate_variant:Nn
+ \tl_replace_all:Nnn
+ { NnV }
+\ExplSyntaxOff
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*manual-options>
+% \fi
+% \par
+% \begin{markdown}
-Using a text editor, create a folder named `output-directory` and a text
-document named `document.tex` with the following content:
+Built-in plain \TeX{} themes provided with the Markdown package include:
+
+\pkg{witiko/tilde}
+
+: A theme that makes tilde (`~`) always typeset the non-breaking space even
+ when the \Opt{hybrid} Lua option is disabled.
+% ``` tex
+% \input markdown
+% \markdownSetup{import=witiko/tilde}
+% \markdownBegin
+% Bartel~Leendert van~der~Waerden
+% \markdownEnd
+% \bye
+% ```````
+% Typesetting the above document produces the following text:
+% “Bartel~Leendert van~der~Waerden”.
+%
+% \end{markdown}
+% \iffalse
+
+##### Plain \TeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
``` tex
-\input lmfonts
\input markdown
-\def\markdownOptionHelperScriptFileName{helper-script.lua}
-\def\markdownOptionInputTempFileName{temporary-input.md}
-\def\markdownOptionOutputTempFileName{temporary-output.tex}
-\def\markdownOptionErrorTempFileName{error-output.txt}
-\def\markdownOptionOutputDir{output-directory}
-\def\markdownOptionCacheDir{output-directory/cache-directory}
-\markdownOptionFinalizeCachetrue
-\def\markdownOptionFrozenCacheFileName{output-directory/cache-directory/frozen-cache.tex}
+\markdownSetup{import=witiko/tilde}
\markdownBegin
-Hello *world*!
+Bartel~Leendert van~der~Waerden
\markdownEnd
\bye
```````
Next, invoke LuaTeX from the terminal:
``` sh
-luatex --output-directory output-directory document.tex
+luatex document.tex
``````
-A text document named `temporary-input.md` should be produced in the folder
-named `output-directory` and contain the following text:
-
-> Hello \*world\*!
+A PDF document named `document.pdf` should be produced and contain the
+following text, where the middot (`·`) denotes a non-breaking space:
-A folder named `output-directory/cache-directory` should also be produced and
-contain fragments of the converted markdown document. LuaTeX does not need
-other temporary files to perform the conversion from markdown to \TeX{}. To
-produce the remaining temporary files, invoke pdfTeX from the terminal:
-``` sh
-pdftex --output-directory output-directory --shell-escape document.tex
-``````
-Text documents named `helper-script.lua`, and `temporary-output.md` should be
-produced in the folder named `output-directory`. The document named
-`helper-script.lua` will contain Lua code that was executed to convert markdown
-to plain \TeX{}. The document named `temporary-output.tex` will contain the
-input markdown document converted to \TeX{}.
+> Bartel·Leendert van·der·Waerden
-No document named `error-output.txt` should be produced in the folder named
-`output-directory`. This document would only be produced if an error had occured
-while executing the Lua code. If this happens, please [file a
-bug](https://github.com/witiko/markdown/issues).
+% \fi
+% \par
+% \begin{markdown}
-#### Package Documentation
+\pkg{witiko/markdown/defaults}
-The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent
-sign (`\%`) at the beginning of a line will be discarded when reading Markdown
-input from a \TeX{} document. This enables the use of markdown when writing
-\TeX{} package documentation using the [Doc \LaTeX{} package][doc] by Frank
-Mittelbach. The recognized values of the macro are `true` (discard) and `false`
-(retain). It defaults to `false`.
+: A plain \TeX{} theme with the default definitions of token renderer
+ prototypes for plain \TeX{}. This theme is loaded automatically together
+ with the package and explicitly loading it has no effect.
- [doc]: https://ctan.org/pkg/doc (doc – Format LaTeX documentation)
+% Please, see Section <#sec:themes-implementation> for implementation
+% details of the built-in plain \TeX{} themes.
-Using a text editor, create a text document named `document.dtx` with the
-following content:
+### Snippets {#snippets}
- ``` tex
- % \iffalse
- \documentclass{ltxdoc}
- \usepackage[stripPercentSigns]{markdown}
- \begin{document}
- \DocInput{document.dtx}
- \end{document}
- % \fi
- %
- % \begin{markdown}
- % Hello *world*!
- % \end{markdown}
- ```````
+% \end{markdown}
+% \iffalse
-Next, invoke LuaTeX from the terminal:
-``` sh
-lualatex document.dtx
-``````
-A PDF document named `document.pdf` should be produced and contain the text
-“Hello *world*!”
+User-defined themes provide global control over high-level goals.
+However, it is often desirable to change only some local aspects of a document.
+Snippets provide syntactic sugar for defining and invoking various
+options locally.
%</manual-options>
%<*tex>
% \fi
+% \par
% \begin{markdown}
%
-%#### Miscellaneous Options
+% We may set up options as *snippets* using the
+% \mdef{markdownSetupSnippet} macro and invoke them later. The
+% \mref{markdownSetupSnippet} macro receives two arguments: the name
+% of the snippet and the options to store.
%
-% The \mdef{markdownOptionStripPercentSigns} macro controls whether a percent
-% sign (`\%`) at the beginning of a line will be discarded when buffering
-% Markdown input (see Section <#sec:buffering>) or not. Notably, this
-% enables the use of markdown when writing \TeX{} package documentation using
-% the \pkg{Doc} \LaTeX{}~package~[@mittelbach17] or similar. The recognized
-% values of the macro are `true` (discard) and `false` (retain). It defaults
-% to `false`.
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\prop_new:N
+ \g_@@_snippets_prop
+\cs_new:Nn
+ \@@_setup_snippet:nn
+ {
+ \tl_if_empty:nT
+ { #1 }
+ {
+ \msg_error:nnn
+ { markdown }
+ { empty-snippet-name }
+ { #1 }
+ }
+ \tl_set:NV
+ \l_tmpa_tl
+ \g_@@_current_theme_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { #1 }
+ \@@_if_snippet_exists:nT
+ { #1 }
+ {
+ \msg_warning:nnV
+ { markdown }
+ { redefined-snippet }
+ \l_tmpa_tl
+ }
+ \prop_gput:NVn
+ \g_@@_snippets_prop
+ \l_tmpa_tl
+ { #2 }
+ }
+\cs_gset_eq:NN
+ \markdownSetupSnippet
+ \@@_setup_snippet:nn
+\msg_new:nnnn
+ { markdown }
+ { empty-snippet-name }
+ { Empty~snippet~name~#1 }
+ { Pick~a~non-empty~name~for~your~snippet }
+\msg_new:nnn
+ { markdown }
+ { redefined-snippet }
+ { Redefined~snippet~#1 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% To decide whether a snippet exists, we can use the
+% \mdef{markdownIfSnippetExists} macro.
%
% \end{markdown}
% \begin{macrocode}
-\seq_gput_right:Nn
- \g_@@_plain_tex_options_seq
- { stripPercentSigns }
-\prop_gput:Nnn
- \g_@@_plain_tex_option_types_prop
- { stripPercentSigns }
- { boolean }
-\prop_gput:Nnx
- \g_@@_default_plain_tex_options_prop
- { stripPercentSigns }
- { false }
+\prg_new_conditional:Nnn
+ \@@_if_snippet_exists:n
+ { TF, T, F }
+ {
+ \tl_set:NV
+ \l_tmpa_tl
+ \g_@@_current_theme_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { #1 }
+ \prop_get:NVNTF
+ \g_@@_snippets_prop
+ \l_tmpa_tl
+ \l_tmpb_tl
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\cs_gset_eq:NN
+ \markdownIfSnippetExists
+ \@@_if_snippet_exists:nTF
+% \end{macrocode}
+% \begin{markdown}
+%
+% The option with key `snippet` invokes a snippet named \meta{value}.
+%
+% \end{markdown}
+% \begin{macrocode}
+\keys_define:nn
+ { markdown/options }
+ {
+ snippet .code:n = {
+ \tl_set:NV
+ \l_tmpa_tl
+ \g_@@_current_theme_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { #1 }
+ \@@_if_snippet_exists:nTF
+ { #1 }
+ {
+ \prop_get:NVN
+ \g_@@_snippets_prop
+ \l_tmpa_tl
+ \l_tmpb_tl
+ \@@_setup:V
+ \l_tmpb_tl
+ }
+ {
+ \msg_error:nnV
+ { markdown }
+ { undefined-snippet }
+ \l_tmpa_tl
+ }
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { undefined-snippet }
+ { Can't~invoke~undefined~snippet~#1 }
+\cs_generate_variant:Nn
+ \@@_setup:n
+ { V }
\ExplSyntaxOff
% \end{macrocode}
% \iffalse
%</tex>
+%<*manual-options>
+% \fi
+% \par
+% \markdownBegin
+
+Here is how we can use snippets to store options and invoke them later
+in \LaTeX{}:
+
+``` tex
+\markdownSetupSnippet{romanNumerals}{
+ renderers = {
+ olItemWithNumber = {%
+ \item[\romannumeral#1\relax.]%
+ },
+ },
+}
+\begin{markdown}
+
+The following ordered list will be preceded by arabic numerals:
+
+1. wahid
+2. aithnayn
+
+\end{markdown}
+\begin{markdown}[snippet=romanNumerals]
+
+The following ordered list will be preceded by roman numerals:
+
+3. tres
+4. quattuor
+
+\end{markdown}
+```````
+
+If the `romanNumerals` snippet were defined in the `jdoe/lists` theme,
+we could import the `jdoe/lists` theme and use the qualified name
+`jdoe/lists/romanNumerals` to invoke the snippet:
+
+``` tex
+\markdownSetup{import=jdoe/lists}
+\begin{markdown}[snippet=jdoe/lists/romanNumerals]
+
+The following ordered list will be preceded by roman numerals:
+
+3. tres
+4. quattuor
+
+\end{markdown}
+```````
+
+Alternatively, we can use the extended variant of the `import` \LaTeX{}
+option that allows us to import the `romanNumerals` snippet to the
+current namespace for easier access:
+
+``` tex
+\markdownSetup{
+ import = {
+ jdoe/lists = romanNumerals,
+ },
+}
+\begin{markdown}[snippet=romanNumerals]
+
+The following ordered list will be preceded by roman numerals:
+
+3. tres
+4. quattuor
+
+\end{markdown}
+```````
+
+Furthermore, we can also specify the name of the snippet in the current
+namespace, which can be different from the name of the snippet in the
+`jdoe/lists` theme. For example, we can make the snippet
+`jdoe/lists/romanNumerals` available under the name `roman`.
+
+``` tex
+\markdownSetup{
+ import = {
+ jdoe/lists = romanNumerals as roman,
+ },
+}
+\begin{markdown}[snippet=roman]
+
+The following ordered list will be preceded by roman numerals:
+
+3. tres
+4. quattuor
+
+\end{markdown}
+```````
+
+Several themes and/or snippets can be loaded at once using the extended
+variant of the `import` \LaTeX{} option:
+
+``` tex
+\markdownSetup{
+ import = {
+ jdoe/longpackagename/lists = {
+ arabic as arabic1,
+ roman,
+ alphabetic,
+ },
+ jdoe/anotherlongpackagename/lists = {
+ arabic as arabic2,
+ },
+ jdoe/yetanotherlongpackagename,
+ },
+}
+```````
+
+% \markdownEnd
+% \iffalse
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\ExplSyntaxOn
+\tl_new:N
+ \l_@@_import_current_theme_tl
+\keys_define:nn
+ { markdown/options/import }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% If a theme name is given without a list of snippets to import,
+% we assume that an empty list was given.
+%
+% \end{markdown}
+% \begin{macrocode}
+ unknown .default:n = {},
+ unknown .code:n = {
+% \end{macrocode}
+% \begin{markdown}
+%
+% To ensure that keys containing forward slashes get passed correctly, we
+% replace all forward slashes in the input with backslash tokens with category
+% code letter and then undo the replacement. This means that if any unbraced
+% backslash tokens with category code letter exist in the input, they will be
+% replaced with forward slashes. However, this should be extremely rare.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \tl_set_eq:NN
+ \l_@@_import_current_theme_tl
+ \l_keys_key_str
+ \tl_replace_all:NVn
+ \l_@@_import_current_theme_tl
+ \c_backslash_str
+ { / }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Here, we import the snippets.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \clist_map_inline:nn
+ { #1 }
+ {
+ \regex_extract_once:nnNTF
+ { ^(.*?)\s+as\s+(.*?)$ }
+ { ##1 }
+ \l_tmpa_seq
+ {
+ \seq_pop:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \seq_pop:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \seq_pop:NN
+ \l_tmpa_seq
+ \l_tmpb_tl
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { ##1 }
+ \tl_set:Nn
+ \l_tmpb_tl
+ { ##1 }
+ }
+ \tl_put_left:Nn
+ \l_tmpa_tl
+ { / }
+ \tl_put_left:NV
+ \l_tmpa_tl
+ \l_@@_import_current_theme_tl
+ \@@_setup_snippet:Vx
+ \l_tmpb_tl
+ { snippet = { \l_tmpa_tl } }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Here, we load the theme.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \@@_set_theme:V
+ \l_@@_import_current_theme_tl
+ },
+ }
+\cs_generate_variant:Nn
+ \tl_replace_all:Nnn
+ { NVn }
+\cs_generate_variant:Nn
+ \@@_set_theme:n
+ { V }
+\cs_generate_variant:Nn
+ \@@_setup_snippet:nn
+ { Vx }
+% \end{macrocode}
+% \iffalse
+%</tex>
%<*manual-tokens>
## Markdown Tokens
@@ -11200,19 +12908,25 @@ In this section, I will describe the individual token renderers.
% \begin{markdown}
#### Attribute Renderers
-The following macros are only produced, when the \Opt{headerAttributes} option
-is enabled.
+The following macros are only produced, when at least one of the following
+options for markdown attributes on different elements is enabled:
+
+- \Opt{autoIdentifiers}
+- \Opt{fencedCodeAttributes}
+- \Opt{gfmAutoIdentifiers}
+- \Opt{headerAttributes}
+- \Opt{inlineCodeAttributes}
+- \Opt{linkAttributes}
\mdef{markdownRendererAttributeIdentifier} represents the \meta{identifier} of
a markdown element (`id="`\meta{identifier}`"` in HTML and `#`\meta{identifier}
-in Markdown's \Opt{headerAttributes} syntax extension). The macro receives a
-single attribute that corresponds to the \meta{identifier}.
+in markdown attributes). The macro receives a single attribute that corresponds
+to the \meta{identifier}.
\mdef{markdownRendererAttributeClassName} represents the \meta{class name} of a
markdown element (`class="`\meta{class name} ...`"` in HTML and
-`.`\meta{class name} in Markdown's \Opt{headerAttributes} syntax extension).
-The macro receives a single attribute that corresponds to the \meta{class
-name}.
+`.`\meta{class name} in markdown attributes). The macro receives a single
+attribute that corresponds to the \meta{class name}.
\mdef{markdownRendererAttributeKeyValue} represents a HTML attribute in the form
\meta{key}`=`\meta{value} that is neither an identifier nor a class name.
@@ -11468,7 +13182,7 @@ A quote from William Shakespeare's King Lear:
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -11512,8 +13226,8 @@ enabled.
The \mdef{markdownRendererBracketedSpanAttributeContextBegin} and
\mdef{markdownRendererBracketedSpanAttributeContextEnd} macros represent the
-beginning and the end of an inline bracketed span in which the attributes of
-the span apply. The macros receive no arguments.
+beginning and the end of a context in which the attributes of
+an inline bracketed span apply. The macros receive no arguments.
% \end{markdown}
%
@@ -11834,7 +13548,7 @@ following content:
\usepackage[tightLists]{markdown}
\begin{document}
-\begin{markdown*}{
+\begin{markdown}[
renderers = {
interblockSeparator = {},
ulBeginTight = { (},
@@ -11847,15 +13561,15 @@ following content:
ulItemEnd = {},
ulEndTight = {).},
},
-}
+]
This is a tight list
- the first item
- the second item
- the third item
-\end{markdown*}
+\end{markdown}
-\begin{markdown*}{
+\begin{markdown}[
renderers = {
interblockSeparator = {%
:\par
@@ -11866,7 +13580,7 @@ This is a tight list
ulItemEnd = {.},
ulEnd = {\end{itemize}},
},
-}
+]
This is a loose list
- This is the first item
@@ -11874,7 +13588,7 @@ This is a loose list
- This is the second item
- This is the third item
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -11946,7 +13660,7 @@ This is a loose list
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -11987,6 +13701,194 @@ following text:
%
% \begin{markdown}
+#### Citation Renderers
+The \mdef{markdownRendererCite} macro represents a string of one or more
+parenthetical citations. This macro will only be produced, when the
+\Opt{citations} option is enabled. The macro receives the parameter
+`{`\meta{number of citations}`}` followed by \meta{suppress author}
+`{`\meta{prenote}`}{`\meta{postnote}`}{`\meta{name}`}` repeated
+\meta{number of citations} times. The \meta{suppress author} parameter is
+either the token `-`, when the author's name is to be suppressed, or `+`
+otherwise.
+
+% \end{markdown}
+%
+% \iffalse
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage[citations]{markdown}
+\newcount\citationsCounter
+\newcount\citationsTotal
+\makeatletter
+\def\citations#1#2#3#4{%
+ a parenthesized citation \emph{#4}
+ \advance\citationsCounter by 1\relax
+ \ifx\relax#2\relax
+ \ifx\relax#3\relax\else
+ with a postfix \emph{#3}%
+ \fi
+ \else
+ with a prefix \emph{#2}%
+ \ifx\relax#3\relax\else
+ \ and a postfix \emph{#3}%
+ \fi
+ \fi
+ \ifnum\citationsCounter>\citationsTotal\relax
+ .%
+ \expandafter\@gobble
+ \else
+ , and
+ \fi\citations}
+\makeatother
+\markdownSetup{
+ renderers = {
+ cite = {%
+ \citationsCounter=1%
+ \citationsTotal=#1%
+ This is
+ \expandafter\citations
+ },
+ },
+}
+\begin{document}
+\begin{markdown}
+[see @abrahams90, pp. 12; @eijkhout91, pp. 34]
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> This is a parenthesized citation *abrahams90* with a prefix see
+> and a postfix *pp. 12*, and a citation *eijkhout91* with a
+> postfix *pp. 34*.
+
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\def\markdownRendererCite{%
+ \markdownRendererCitePrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { cite }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { cite }
+ { 1 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
+The \mdef{markdownRendererTextCite} macro represents a string of one or more
+text citations. This macro will only be produced, when the
+\Opt{citations} option is enabled. The macro receives parameters in the same
+format as the \mref{markdownRendererCite} macro.
+
+% \end{markdown}
+%
+% \iffalse
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage[citations]{markdown}
+\newcount\citationsCounter
+\newcount\citationsTotal
+\makeatletter
+\def\citations#1#2#3#4{%
+ a text citation \emph{#4}
+ \advance\citationsCounter by 1\relax
+ \ifx\relax#2\relax
+ \ifx\relax#3\relax\else
+ with a postfix \emph{#3}%
+ \fi
+ \else
+ with a prefix \emph{#2}%
+ \ifx\relax#3\relax\else
+ \ and a postfix \emph{#3}%
+ \fi
+ \fi
+ \ifnum\citationsCounter>\citationsTotal\relax
+ .%
+ \expandafter\@gobble
+ \else
+ , and
+ \fi\citations}
+\makeatother
+\markdownSetup{
+ renderers = {
+ textCite = {%
+ \citationsCounter=1%
+ \citationsTotal=#1%
+ This is
+ \expandafter\citations
+ },
+ },
+}
+\begin{document}
+\begin{markdown}
+@abrahams90 [pp. 12; also @eijkhout91]
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> This is a text citation *abrahams90* with a postfix *pp. 12*,
+> and a citation *eijkhout91* with a prefix *also*.
+
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\def\markdownRendererTextCite{%
+ \markdownRendererTextCitePrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { textCite }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { textCite }
+ { 1 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
#### Code Block Renderers
The \mdef{markdownRendererInputVerbatim} macro represents a code
block. The macro receives a single argument that corresponds to the
@@ -12023,8 +13925,10 @@ filename of a file contaning the code block contents.
The \mdef{markdownRendererInputFencedCode} macro represents a fenced code
block. This macro will only be produced, when the \Opt{fencedCode} option is
-enabled. The macro receives two arguments that correspond to the filename of
-a file contaning the code block contents and to the code fence infostring.
+enabled. The macro receives three arguments that correspond to the filename of
+a file contaning the code block contents, the fully escaped code fence infostring
+that can be directly typeset, and the raw code fence infostring that can be used
+outside typesetting.
% \end{markdown}
%
@@ -12125,7 +14029,7 @@ following text except for the filename, which may differ:
\prop_gput:Nnn
\g_@@_renderer_arities_prop
{ inputFencedCode }
- { 2 }
+ { 3 }
\ExplSyntaxOff
% \end{macrocode}
% \par
@@ -12203,9 +14107,9 @@ following content:
$\sqrt{-1}$ *equals* $i$
\end{markdown}
-\begin{markdown*}{hybrid}
+\begin{markdown}[hybrid]
$\sqrt{-1}$ *equals* $i$
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -12248,7 +14152,7 @@ $\sqrt{-1}$ *equals* $i$
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -12293,8 +14197,8 @@ option is enabled.
The \mdef{markdownRendererCodeSpanAttributeContextBegin} and
\mdef{markdownRendererCodeSpanAttributeContextEnd} macros represent the beginning
-and the end of an inline code span in which the attributes of the inline code
-span apply. The macros receive no arguments.
+and the end of a context in which the attributes of an inline code span apply.
+The macros receive no arguments.
% \end{markdown}
%
@@ -12370,7 +14274,7 @@ following text:
#### Content Block Renderers {#texcontentblockrenderers}
-The \mdef{markdownRendererContentBlock} macro represents an iA\,Writer content
+The \mdef{markdownRendererContentBlock} macro represents an iA\\,Writer content
block. It receives four arguments: the local file or online image filename
extension cast to the lower case, the fully escaped \acro{uri} that can be
directly typeset, the raw \acro{uri} that can be used outside typesetting,
@@ -12406,7 +14310,7 @@ and the title of the content block.
% \begin{markdown}
The \mdef{markdownRendererContentBlockOnlineImage} macro represents an
-iA\,Writer online image content block. The macro receives the same arguments
+iA\\,Writer online image content block. The macro receives the same arguments
as \mref{markdownRendererContentBlock}.
% \end{markdown}
@@ -12438,7 +14342,7 @@ as \mref{markdownRendererContentBlock}.
%
% \begin{markdown}
-The \mdef{markdownRendererContentBlockCode} macro represents an iA\,Writer
+The \mdef{markdownRendererContentBlockCode} macro represents an iA\\,Writer
content block that was recognized as a file in a known programming language
by its filename extension $s$. If any `markdown-languages.json` file found
by \pkg{kpathsea}^[Filenames other than `markdown-languages.json` may
@@ -12593,7 +14497,7 @@ content:
``````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -12996,7 +14900,7 @@ following content:
\usepackage[definitionLists, tightLists]{markdown}
\begin{document}
-\begin{markdown*}{
+\begin{markdown}[
renderers = {
interblockSeparator = {%
:%
@@ -13018,7 +14922,7 @@ following content:
dlDefinitionBegin = \item,
dlEndTight = {\end{description}},
},
-}
+]
This is a tight definition list
Coffee
@@ -13030,9 +14934,9 @@ Milk
: white cold drink
: nutrient-rich
: produced on an industrial scale
-\end{markdown*}
+\end{markdown}
-\begin{markdown*}{
+\begin{markdown}[
renderers = {
interblockSeparator = {%
\def\markdownRendererInterblockSeparator{\par}%
@@ -13051,7 +14955,7 @@ Milk
dlDefinitionEnd = {},
dlEnd = {.},
},
-}
+]
This is a loose definition list
Coffee
@@ -13069,7 +14973,7 @@ Milk
: nutrient-rich
: produced on an industrial scale
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -13187,7 +15091,7 @@ Milk
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -13311,7 +15215,7 @@ The secret word is ...
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -13356,6 +15260,39 @@ span of text.
% \end{markdown}
%
% \iffalse
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\def\markdownRendererEmphasis{%
+ \markdownRendererEmphasisPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { emphasis }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { emphasis }
+ { 1 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
+The \mdef{markdownRendererStrongEmphasis} macro represents a strongly
+emphasized span of text. The macro receives a single argument that
+corresponds to the emphasized span of text.
+
+% \end{markdown}
+%
+% \iffalse
##### Plain \TeX{} Example {.unnumbered}
@@ -13433,7 +15370,7 @@ This is **strong emphasis**.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -13447,39 +15384,6 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererEmphasis{%
- \markdownRendererEmphasisPrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { emphasis }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { emphasis }
- { 1 }
-\ExplSyntaxOff
-% \end{macrocode}
-% \par
-%
-% \iffalse
-%</tex>
-%<*manual-tokens>
-% \fi
-%
-% \begin{markdown}
-
-The \mdef{markdownRendererStrongEmphasis} macro represents a strongly
-emphasized span of text. The macro receives a single argument that
-corresponds to the emphasized span of text.
-
-% \end{markdown}
-%
-% \iffalse
-%</manual-tokens>
-%<*tex>
-% \fi
-%
-% \begin{macrocode}
\def\markdownRendererStrongEmphasis{%
\markdownRendererStrongEmphasisPrototype}%
\ExplSyntaxOn
@@ -13606,7 +15510,7 @@ enabled.
The \mdef{markdownRendererFencedDivAttributeContextBegin} and
\mdef{markdownRendererFencedDivAttributeContextEnd} macros represent the beginning
-and the end of a div in which the attributes of the div apply. The macros
+and the end of a context in which the attributes of a div apply. The macros
receive no arguments.
% \end{markdown}
@@ -13721,12 +15625,12 @@ following text:
% \begin{markdown}
#### Header Attribute Context Renderers
-The following macros are only produced, when the \Opt{headerAttributes} option
-is enabled.
+The following macros are only produced, when the \Opt{autoIdentifiers},
+\Opt{gfmAutoIdentifiers}, or \Opt{headerAttributes} options are enabled.
The \mdef{markdownRendererHeaderAttributeContextBegin} and
\mdef{markdownRendererHeaderAttributeContextEnd} macros represent the beginning
-and the end of a section in which the attributes of a heading apply. The macros
+and the end of a context in which the attributes of a heading apply. The macros
receive no arguments.
% \end{markdown}
@@ -13790,13 +15694,6 @@ following text:
%</manual-tokens>
%<*tex>
% \fi
-% \begin{markdown}
-%
-% These semantics have been deprecated and will be changed in Markdown 3.0.0.
-% From then on, header attribute contexts will only span headings, not the
-% surrounding sections.
-%
-% \end{markdown}
% \begin{macrocode}
\def\markdownRendererHeaderAttributeContextBegin{%
\markdownRendererHeaderAttributeContextBeginPrototype}%
@@ -14096,7 +15993,7 @@ following content:
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -14129,17 +16026,13 @@ following text:
%
% \begin{markdown}
-#### HTML Comment Renderers
+#### Inline HTML Comment Renderer
The \mdef{markdownRendererInlineHtmlComment} macro represents the contents of an
inline \acro{HTML} comment. This macro will only be produced, when the
\Opt{html} option is enabled. The macro receives a single argument that
corresponds to the contents of the \acro{HTML} comment.
-The \mdef{markdownRendererBlockHtmlCommentBegin} and
-\mdef{markdownRendererBlockHtmlCommentEnd} macros represent the beginning
-and the end of a block \acro{HTML} comment. The macros receive no arguments.
-
% \end{markdown}
%
% \iffalse
@@ -14155,8 +16048,6 @@ following content:
\markdownSetup{
renderers = {
inlineHtmlComment = {\marginnote{#1}},
- blockHtmlCommentBegin = {\begin{quote}},
- blockHtmlCommentEnd = {\end{quote}},
},
}
\begin{document}
@@ -14164,14 +16055,6 @@ following content:
A useful use of inline HTML comments are side notes.
<!-- Side notes are displayed in the horizontal margins next to the relevant
passages, which makes them *easier for the reader to find* than notes. -->
-
-We can render block HTML comments as blockquotes:
-
-<!--
-Here is a block HTML comment with a code example that a programmer might understand:
-
- foo = bar + baz - 42
--->
\end{markdown}
\end{document}
```````
@@ -14184,13 +16067,6 @@ A PDF document named `document.pdf` should be produced and contain the
following body text:
> A useful use of HTML comments are side notes.
->
-> We can render block HTML comments as blockquotes:
->
-> > Here is a block HTML comment with a code example that a programmer might
-> > understand:
-> >
-> > foo = bar + baz - 42
The horizontal margins should contain the following text:
@@ -14213,28 +16089,6 @@ The horizontal margins should contain the following text:
{ inlineHtmlComment }
{ 1 }
\ExplSyntaxOff
-\def\markdownRendererBlockHtmlCommentBegin{%
- \markdownRendererBlockHtmlCommentBeginPrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { blockHtmlCommentBegin }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { blockHtmlCommentBegin }
- { 0 }
-\ExplSyntaxOff
-\def\markdownRendererBlockHtmlCommentEnd{%
- \markdownRendererBlockHtmlCommentEndPrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { blockHtmlCommentEnd }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { blockHtmlCommentEnd }
- { 0 }
-\ExplSyntaxOff
% \end{macrocode}
% \par
%
@@ -14374,7 +16228,7 @@ following content:
}^^A
{^^A
\everyeof={\noexpand}^^A
- \edef\filename{\@@input"\jobname.fetched" }^^A
+ \edef\filename{\@@@@input"\jobname.fetched" }^^A
\includegraphics[width=\textwidth]{\filename}^^A
}^^A
}
@@ -14429,7 +16283,7 @@ is enabled.
The \mdef{markdownRendererImageAttributeContextBegin} and
\mdef{markdownRendererImageAttributeContextEnd} macros represent the beginning
-and the end of an image in which the attributes of the image apply. The macros
+and the end of a context in which the attributes of an image apply. The macros
receive no arguments.
% \end{markdown}
@@ -14504,9 +16358,10 @@ following text:
%
% \begin{markdown}
-#### Interblock Separator Renderer
-The \mdef{markdownRendererInterblockSeparator} macro represents a separator
-between two markdown block elements. The macro receives no arguments.
+#### Interblock Separator Renderers
+The \mdef{markdownRendererInterblockSeparator} macro represents an interblock
+separator between two markdown block elements. The macro receives no
+arguments.
% \end{markdown}
%
@@ -14524,7 +16379,7 @@ following content:
\par
}
\markdownBegin
-Hello *world*!
+- Hello *world*!
_Foo_ bar!
\markdownEnd
@@ -14537,7 +16392,7 @@ luatex document.tex
A PDF document named `document.pdf` should be produced and contain the
following text:
-> Hello *world*!
+> - Hello *world*!
>
> *(The end of a block)*
>
@@ -14561,7 +16416,7 @@ following content:
}
\begin{document}
\begin{markdown}
-Hello *world*!
+- Hello *world*!
_Foo_ bar!
\end{markdown}
@@ -14574,7 +16429,7 @@ lualatex document.tex
A PDF document named `document.pdf` should be produced and contain the
following text:
-> Hello *world*!
+> - Hello *world*!
>
> *(The end of a block)*
>
@@ -14593,7 +16448,7 @@ following content:
}
\starttext
\startmarkdown
-Hello *world*!
+- Hello *world*!
_Foo_ bar!
\stopmarkdown
@@ -14601,12 +16456,12 @@ _Foo_ bar!
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
-> Hello *world*!
+> - Hello *world*!
>
> *(The end of a block)*
>
@@ -14638,7 +16493,82 @@ following text:
%
% \begin{markdown}
-#### Line Block Renderer
+Users can use more than one blank line to delimit two block to indicate the
+end of a series of blocks that make up a logical paragraph. This produces a
+paragraph separator instead of an interblock separator. Between some blocks,
+such as markdown paragraphs, a paragraph separator is always produced.
+
+The \mdef{markdownRendererParagraphSeparator} macro represents a paragraph
+separator. The macro receives no arguments.
+
+% \end{markdown}
+%
+% \iffalse
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage{markdown}
+\markdownSetup{
+ renderers = {
+ paragraphSeparator = {%
+ \par
+ \emph{(The end of a paragraph)}%
+ \par
+ },
+ },
+}
+\begin{document}
+\begin{markdown}
+Hello *world*!
+
+_Foo_ bar!
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> Hello *world*!
+>
+> *(The end of a paragraph)*
+>
+> _Foo_ bar!
+
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\def\markdownRendererParagraphSeparator{%
+ \markdownRendererParagraphSeparatorPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { paragraphSeparator }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { paragraphSeparator }
+ { 0 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
+#### Line Block Renderers
The following macros are only produced, when the \Opt{lineBlocks} option
is enabled.
@@ -14722,7 +16652,7 @@ following content:
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -14769,7 +16699,114 @@ following text:
%
% \begin{markdown}
-#### Line Break Renderer
+#### Line Break Renderers
+
+The \mdef{markdownRendererSoftLineBreak} macro represents a soft line break.
+The macro receives no arguments.
+
+% \end{markdown}
+%
+% \iffalse
+
+##### Plain \TeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\input markdown
+\def\markdownRendererSoftLineBreak{%
+ \par
+ {\it(A soft line break)}%
+ \par
+}
+\markdownInput{example.md}
+\bye
+```````
+Using a text editor, create a text document named `example.md` with the
+following content:
+
+``` md
+Hello world!
+_Foo_ bar!
+``````
+Next, invoke LuaTeX from the terminal:
+``` sh
+luatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> Hello *world*!
+>
+> *(A soft line break)*
+>
+> _Foo_ bar!
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage{markdown}
+\markdownSetup{
+ renderers = {
+ softLineBreak = {%
+ \par
+ \emph{(A soft line break)}%
+ \par
+ },
+ },
+}
+\begin{document}
+\markdownInput{example.md}
+\end{document}
+```````
+Using a text editor, create a text document named `example.md` with the
+following content:
+
+``` md
+Hello world!
+_Foo_ bar!
+``````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> Hello *world*!
+>
+> *(A soft line break)*
+>
+> _Foo_ bar!
+
+%</manual-tokens>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\def\markdownRendererSoftLineBreak{%
+ \markdownRendererSoftLineBreakPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { softLineBreak }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { softLineBreak }
+ { 0 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
The \mdef{markdownRendererHardLineBreak} macro represents a hard line break.
The macro receives no arguments.
@@ -14856,51 +16893,10 @@ following text:
%</manual-tokens>
%<*tex>
% \fi
-% \begin{markdown}
-%
-% The \mdef{markdownRendererLineBreak} and
-% \mdef{markdownRendererLineBreakPrototype} macros have been deprecated
-% and will be removed in Markdown 3.0.0.
-%
-% \end{markdown}
% \begin{macrocode}
+\def\markdownRendererHardLineBreak{%
+ \markdownRendererHardLineBreakPrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererHardLineBreak
- {
- \cs_if_exist:NTF
- \markdownRendererLineBreak
- {
- \markdownWarning
- {
- Line~break~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererLineBreak
- }
- {
- \cs_if_exist:NTF
- \markdownRendererLineBreakPrototype
- {
- \markdownWarning
- {
- Line~break~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererLineBreakPrototype
- }
- {
- \markdownRendererHardLineBreakPrototype
- }
- }
- }
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { lineBreak }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { lineBreak }
- { 0 }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ hardLineBreak }
@@ -15009,7 +17005,7 @@ Please visit [the link][ctan].
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -15049,7 +17045,7 @@ is enabled.
The \mdef{markdownRendererLinkAttributeContextBegin} and
\mdef{markdownRendererLinkAttributeContextEnd} macros represent the beginning
-and the end of a hyperlink in which the attributes of the hyperlink apply.
+and the end of a context in which the attributes of a hyperlink apply.
The macros receive no arguments.
% \end{markdown}
@@ -15124,6 +17120,73 @@ following text:
%
% \begin{markdown}
+#### Marked Text Renderer
+The following macro is only produced, when the \Opt{mark} option is enabled.
+
+The \mdef{markdownRendererMark} macro represents a span of marked or
+highlighted text. The macro receives a single argument that corresponds to
+the marked text.
+
+% \end{markdown}
+%
+% \iffalse
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage[mark]{markdown}
+\usepackage{soul}
+\markdownSetup{
+ renderers = {
+ mark = {\hl{#1}},
+ },
+}
+\begin{document}
+\begin{markdown}
+
+This ==is highlighted text.==
+
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> This <mark>is highlighted text.</mark>
+
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\def\markdownRendererMark{%
+ \markdownRendererMarkPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { mark }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { mark }
+ { 1 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
#### Markdown Document Renderers
The \mdef{markdownRendererDocumentBegin} and \mdef{markdownRendererDocumentEnd}
macros represent the beginning and the end of a *markdown* document. The macros
@@ -15450,7 +17513,7 @@ This is some text[^1] and this is some other text[^2].
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -15461,51 +17524,10 @@ following text:
%</manual-tokens>
%<*tex>
% \fi
-% \begin{markdown}
-%
-% The \mdef{markdownRendererFootnote} and
-% \mdef{markdownRendererFootnotePrototype} macros have been deprecated
-% and will be removed in Markdown 3.0.0.
-%
-% \end{markdown}
% \begin{macrocode}
+\def\markdownRendererNote{%
+ \markdownRendererNotePrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererNote
- {
- \cs_if_exist:NTF
- \markdownRendererFootnote
- {
- \markdownWarning
- {
- Footnote~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererFootnote
- }
- {
- \cs_if_exist:NTF
- \markdownRendererFootnotePrototype
- {
- \markdownWarning
- {
- Footnote~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererFootnotePrototype
- }
- {
- \markdownRendererNotePrototype
- }
- }
- }
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { footnote }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { footnote }
- { 1 }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ note }
@@ -16074,7 +18096,7 @@ following content:
\usepackage[tightLists, startNumber]{markdown}
\begin{document}
-\begin{markdown*}{
+\begin{markdown}[
renderers = {
interblockSeparator = {},
olBeginTight = { (},
@@ -16092,15 +18114,15 @@ following content:
olItemEnd = {},
olEndTight = {).},
},
-}
+]
This is a tight list
1. item
2. item
3. item
-\end{markdown*}
+\end{markdown}
-\begin{markdown*}{
+\begin{markdown}[
renderers = {
interblockSeparator = {%
:\par
@@ -16122,7 +18144,7 @@ This is a tight list
olItemEnd = {.},
olEnd = {\end{enumerate}},
},
-}
+]
This is a loose list
1. item
@@ -16130,7 +18152,7 @@ This is a loose list
2. item
3. item
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -16223,7 +18245,7 @@ This is a loose list
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -16264,103 +18286,6 @@ following text:
%
% \begin{markdown}
-#### Parenthesized Citations Renderer
-The \mdef{markdownRendererCite} macro represents a string of one or more
-parenthetical citations. This macro will only be produced, when the
-\Opt{citations} option is enabled. The macro receives the parameter
-`{`\meta{number of citations}`}` followed by \meta{suppress author}
-`{`\meta{prenote}`}{`\meta{postnote}`}{`\meta{name}`}` repeated
-\meta{number of citations} times. The \meta{suppress author} parameter is
-either the token `-`, when the author's name is to be suppressed, or `+`
-otherwise.
-
-% \end{markdown}
-%
-% \iffalse
-
-##### \LaTeX{} Example {.unnumbered}
-
-Using a text editor, create a text document named `document.tex` with the
-following content:
-``` tex
-\documentclass{article}
-\usepackage[citations]{markdown}
-\newcount\citationsCounter
-\newcount\citationsTotal
-\makeatletter
-\def\citations#1#2#3#4{%
- a parenthesized citation \emph{#4}
- \advance\citationsCounter by 1\relax
- \ifx\relax#2\relax
- \ifx\relax#3\relax\else
- with a postfix \emph{#3}%
- \fi
- \else
- with a prefix \emph{#2}%
- \ifx\relax#3\relax\else
- \ and a postfix \emph{#3}%
- \fi
- \fi
- \ifnum\citationsCounter>\citationsTotal\relax
- .%
- \expandafter\@gobble
- \else
- , and
- \fi\citations}
-\makeatother
-\markdownSetup{
- renderers = {
- cite = {%
- \citationsCounter=1%
- \citationsTotal=#1%
- This is
- \expandafter\citations
- },
- },
-}
-\begin{document}
-\begin{markdown}
-[see @abrahams90, pp. 12; @eijkhout91, pp. 34]
-\end{markdown}
-\end{document}
-```````
-Next, invoke LuaTeX from the terminal:
-``` sh
-lualatex document.tex
-``````
-A PDF document named `document.pdf` should be produced and contain the
-following text:
-
-> This is a parenthesized citation *abrahams90* with a prefix see
-> and a postfix *pp. 12*, and a citation *eijkhout91* with a
-> postfix *pp. 34*.
-
-%</manual-tokens>
-%<*tex>
-% \fi
-%
-% \begin{macrocode}
-\def\markdownRendererCite{%
- \markdownRendererCitePrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { cite }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { cite }
- { 1 }
-\ExplSyntaxOff
-% \end{macrocode}
-% \par
-%
-% \iffalse
-%</tex>
-%<*manual-tokens>
-% \fi
-%
-% \begin{markdown}
-
#### Raw Content Renderers
The \mdef{markdownRendererInputRawInline} macro represents an inline raw span.
The macro receives two arguments: the filename of a file contaning the inline
@@ -16648,7 +18573,7 @@ Bartel~Leendert van~der~Waerden
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text, where the middot (`·`) denotes a non-breaking space:
@@ -16868,7 +18793,7 @@ This is ~~a lunar roving vehicle~~ strike-through text.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -16976,7 +18901,7 @@ H~2~O is a liquid.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -17083,7 +19008,7 @@ following content:
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -17116,6 +19041,126 @@ following text:
%
% \begin{markdown}
+#### Table Attribute Context Renderers
+The following macros are only produced, when the \Opt{tableCaptions} and
+\Opt{tableAttributes} options are enabled.
+
+The \mdef{markdownRendererTableAttributeContextBegin} and
+\mdef{markdownRendererTableAttributeContextEnd} macros represent the
+beginning and the end of a context in which the attributes of a table
+apply. The macros receive no arguments.
+
+% \end{markdown}
+%
+% \iffalse
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage[
+ pipeTables,
+ tableCaptions,
+ tableAttributes,
+ relativeReferences,
+]{markdown}
+\usepackage{expl3}
+\ExplSyntaxOn
+\markdownSetup{
+ renderers = {
+ tableAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup{
+ renderers = {
+ attributeIdentifier = {
+ \markdownSetup{
+ renderers = {
+ tableAttributeContextEnd = {
+ \label{##1}
+ \group_end:
+ },
+ },
+ }
+ },
+ },
+ }
+ },
+ tableAttributeContextEnd = {
+ \group_end:
+ },
+ },
+}
+\ExplSyntaxOff
+\begin{document}
+\begin{markdown}
+See Table <#example-table>.
+
+| Right | Left | Default | Center |
+|------:|:-----|---------|:------:|
+| 12 | 12 | 12 | 12 |
+| 123 | 123 | 123 | 123 |
+| 1 | 1 | 1 | 1 |
+
+ : Demonstration of pipe table syntax. {#example-table}
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following text:
+
+> See Table 1.
+>
+> | Right | Left | Default | Center |
+> |------:|:-----|---------|:------:|
+> | 12 | 12 | 12 | 12 |
+> | 123 | 123 | 123 | 123 |
+> | 1 | 1 | 1 | 1 |
+>
+> : Table 1. Demonstration of pipe table syntax.
+
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\def\markdownRendererTableAttributeContextBegin{%
+ \markdownRendererTableAttributeContextBeginPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { tableAttributeContextBegin }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { tableAttributeContextBegin }
+ { 0 }
+\ExplSyntaxOff
+\def\markdownRendererTableAttributeContextEnd{%
+ \markdownRendererTableAttributeContextEndPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { tableAttributeContextEnd }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { tableAttributeContextEnd }
+ { 0 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
#### Table Renderer
The \mdef{markdownRendererTable} macro represents a table. This macro will only
be produced, when the \Opt{pipeTables} option is enabled. The macro receives the
@@ -17243,10 +19288,10 @@ following text:
%
% \begin{markdown}
-#### Tex Math Renderers
+#### \TeX{} Math Renderers
The \mdef{markdownRendererInlineMath} and \mdef{markdownRendererDisplayMath} macros
represent inline and display \TeX{} math.
-Both macros receive a single argument that corresponds to the tex math content.
+Both macros receive a single argument that corresponds to the \TeX{} math content.
These macros will only be produced, when the \Opt{texMathDollars},
\Opt{texMathSingleBackslash}, or \Opt{texMathDoubleBackslash} option are enabled.
@@ -17329,7 +19374,7 @@ $$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -17375,98 +19420,6 @@ following text:
%
% \begin{markdown}
-#### Text Citations Renderer
-The \mdef{markdownRendererTextCite} macro represents a string of one or more
-text citations. This macro will only be produced, when the
-\Opt{citations} option is enabled. The macro receives parameters in the same
-format as the \mref{markdownRendererCite} macro.
-
-% \end{markdown}
-%
-% \iffalse
-
-##### \LaTeX{} Example {.unnumbered}
-
-Using a text editor, create a text document named `document.tex` with the
-following content:
-``` tex
-\documentclass{article}
-\usepackage[citations]{markdown}
-\newcount\citationsCounter
-\newcount\citationsTotal
-\makeatletter
-\def\citations#1#2#3#4{%
- a text citation \emph{#4}
- \advance\citationsCounter by 1\relax
- \ifx\relax#2\relax
- \ifx\relax#3\relax\else
- with a postfix \emph{#3}%
- \fi
- \else
- with a prefix \emph{#2}%
- \ifx\relax#3\relax\else
- \ and a postfix \emph{#3}%
- \fi
- \fi
- \ifnum\citationsCounter>\citationsTotal\relax
- .%
- \expandafter\@gobble
- \else
- , and
- \fi\citations}
-\makeatother
-\markdownSetup{
- renderers = {
- textCite = {%
- \citationsCounter=1%
- \citationsTotal=#1%
- This is
- \expandafter\citations
- },
- },
-}
-\begin{document}
-\begin{markdown}
-@abrahams90 [pp. 12; also @eijkhout91]
-\end{markdown}
-\end{document}
-```````
-Next, invoke LuaTeX from the terminal:
-``` sh
-lualatex document.tex
-``````
-A PDF document named `document.pdf` should be produced and contain the
-following text:
-
-> This is a text citation *abrahams90* with a postfix *pp. 12*,
-> and a citation *eijkhout91* with a prefix *also*.
-
-%</manual-tokens>
-%<*tex>
-% \fi
-%
-% \begin{macrocode}
-\def\markdownRendererTextCite{%
- \markdownRendererTextCitePrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { textCite }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { textCite }
- { 1 }
-\ExplSyntaxOff
-% \end{macrocode}
-% \par
-%
-% \iffalse
-%</tex>
-%<*manual-tokens>
-% \fi
-%
-% \begin{markdown}
-
#### Thematic Break Renderer
The \mdef{markdownRendererThematicBreak} macro represents a thematic break.
The macro receives no arguments.
@@ -17558,7 +19511,7 @@ This is the second page.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -17572,51 +19525,10 @@ following text:
%</manual-tokens>
%<*tex>
% \fi
-% \begin{markdown}
-%
-% The \mdef{markdownRendererHorizontalRule} and
-% \mdef{markdownRendererHorizontalRulePrototype} macros have been deprecated
-% and will be removed in Markdown 3.0.0.
-%
-% \end{markdown}
% \begin{macrocode}
+\def\markdownRendererThematicBreak{%
+ \markdownRendererThematicBreakPrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererThematicBreak
- {
- \cs_if_exist:NTF
- \markdownRendererHorizontalRule
- {
- \markdownWarning
- {
- Horizontal~rule~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererHorizontalRule
- }
- {
- \cs_if_exist:NTF
- \markdownRendererHorizontalRulePrototype
- {
- \markdownWarning
- {
- Horizontal~rule~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererHorizontalRulePrototype
- }
- {
- \markdownRendererThematicBreakPrototype
- }
- }
- }
-\seq_gput_right:Nn
- \g_@@_renderers_seq
- { horizontalRule }
-\prop_gput:Nnn
- \g_@@_renderer_arities_prop
- { horizontalRule }
- { 0 }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ thematicBreak }
@@ -17695,7 +19607,7 @@ following content:
````````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
`````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -18182,15 +20094,300 @@ age: 99
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
> Jane Doe is 99 years old.
+%</manual-tokens>
+%<*tex>
% \fi
+% \begin{markdown}
+%
+%#### Generating Plain \TeX{} Token Renderer Macros and Key-Values {#plain-tex-renderers}
+%
+% We define the command \mdef{@@_define_renderers:} that defines plain \TeX{}
+% macros for token renderers. Futhermore, the `\markdownSetup` macro also accepts
+% the `renderers` key, whose value must be a list of key-values, where the keys
+% correspond to the markdown token renderer macros and the values are new
+% definitions of these token renderers.
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_new:Nn \@@_define_renderers:
+ {
+ \seq_map_function:NN
+ \g_@@_renderers_seq
+ \@@_define_renderer:n
+ }
+\cs_new:Nn \@@_define_renderer:n
+ {
+ \@@_renderer_tl_to_csname:nN
+ { #1 }
+ \l_tmpa_tl
+ \prop_get:NnN
+ \g_@@_renderer_arities_prop
+ { #1 }
+ \l_tmpb_tl
+ \@@_define_renderer:ncV
+ { #1 }
+ { \l_tmpa_tl }
+ \l_tmpb_tl
+ }
+\cs_new:Nn \@@_renderer_tl_to_csname:nN
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \str_uppercase:n { #1 } }
+ \tl_set:Nx
+ #2
+ {
+ markdownRenderer
+ \tl_head:f { \l_tmpa_tl }
+ \tl_tail:n { #1 }
+ }
+ }
+\tl_new:N
+ \l_@@_renderer_definition_tl
+\cs_new:Nn \@@_define_renderer:nNn
+ {
+ \keys_define:nn
+ { markdown/options/renderers }
+ {
+ #1 .code:n = {
+ \tl_set:Nn
+ \l_@@_renderer_definition_tl
+ { ##1 }
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { #1 }
+ \l_@@_renderer_definition_tl
+ \cs_generate_from_arg_count:NNnV
+ #2
+ \cs_set:Npn
+ { #3 }
+ \l_@@_renderer_definition_tl
+ },
+ }
+ }
+\cs_generate_variant:Nn
+ \@@_define_renderer:nNn
+ { ncV }
+\cs_generate_variant:Nn
+ \cs_generate_from_arg_count:NNnn
+ { NNnV }
+\keys_define:nn
+ { markdown/options }
+ {
+ renderers .code:n = {
+ \keys_set:nn
+ { markdown/options/renderers }
+ { #1 }
+ },
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% The following example code showcases a possible configuration of the
+% \mref{markdownRendererLink} and \mref{markdownRendererEmphasis} token
+% renderer macros.
+% ``` tex
+% \markdownSetup{
+% renderers = {
+% link = {#4}, \% Render links as the link title.
+% emphasis = {{\it #1}}, \% Render emphasized text using italics.
+% }
+% }
+% ```````
+%
+% In addition to exact token renderer names, we also support wildcards
+% and enumerations that match multiple token renderer names:
+% ``` tex
+% \markdownSetup{
+% renderers = {
+% heading* = {{\bf #1}}, \% Render headings using the bold face.
+% jekyllData(String|Number) = { \% Render YAML string and numbers
+% {\it #2}\% \% using italics.
+% },
+% }
+% }
+% ```````
+%
+% Wildcards and enumerations can be combined:
+% ``` tex
+% \markdownSetup{
+% renderers = {
+% *lItem(|End) = {"}, \% Quote ordered/bullet list items.
+% }
+% }
+% ```````
+%
+% To determine the current token renderer, you can use the parameter `#0`:
+% ``` tex
+% \markdownSetup{
+% renderers = {
+% heading* = {#0: #1}, \% Render headings as the renderer name
+% } \% followed by the heading text.
+% }
+% ```````
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\prop_new:N
+ \g_@@_glob_cache_prop
+\tl_new:N
+ \l_@@_current_glob_tl
+\cs_new:Nn
+ \@@_glob_seq:nnN
+ {
+ \tl_set:Nn
+ \l_@@_current_glob_tl
+ { ^ #1 $ }
+ \prop_get:NeNTF
+ \g_@@_glob_cache_prop
+ { #2 / \l_@@_current_glob_tl }
+ \l_tmpa_clist
+ {
+ \seq_set_from_clist:NN
+ #3
+ \l_tmpa_clist
+ }
+ {
+ \seq_clear:N
+ #3
+ \regex_replace_all:nnN
+ { \* }
+ { .* }
+ \l_@@_current_glob_tl
+ \regex_set:NV
+ \l_tmpa_regex
+ \l_@@_current_glob_tl
+ \seq_map_inline:cn
+ { #2 }
+ {
+ \regex_match:NnT
+ \l_tmpa_regex
+ { ##1 }
+ {
+ \seq_put_right:Nn
+ #3
+ { ##1 }
+ }
+ }
+ \clist_set_from_seq:NN
+ \l_tmpa_clist
+ #3
+ \prop_gput:NeV
+ \g_@@_glob_cache_prop
+ { #2 / \l_@@_current_glob_tl }
+ \l_tmpa_clist
+ }
+ }
+% TODO: Remove in TeX Live 2023.
+\prg_generate_conditional_variant:Nnn
+ \prop_get:NnN
+ { NeN }
+ { TF }
+\cs_generate_variant:Nn
+ \regex_set:Nn
+ { NV }
+\cs_generate_variant:Nn
+ \prop_gput:Nnn
+ { NeV }
+\seq_new:N
+ \l_@@_renderer_glob_results_seq
+\keys_define:nn
+ { markdown/options/renderers }
+ {
+ unknown .code:n = {
+ \@@_glob_seq:VnN
+ \l_keys_key_str
+ { g_@@_renderers_seq }
+ \l_@@_renderer_glob_results_seq
+ \seq_if_empty:NTF
+ \l_@@_renderer_glob_results_seq
+ {
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer }
+ \l_keys_key_str
+ }
+ {
+ \tl_set:Nn
+ \l_@@_renderer_definition_tl
+ { #1 }
+ \seq_map_inline:Nn
+ \l_@@_renderer_glob_results_seq
+ {
+ \@@_renderer_tl_to_csname:nN
+ { ##1 }
+ \l_tmpa_tl
+ \prop_get:NnN
+ \g_@@_renderer_arities_prop
+ { ##1 }
+ \l_tmpb_tl
+ \int_set:Nn
+ \l_tmpa_int
+ \l_tmpb_tl
+ \tl_set:NV
+ \l_tmpb_tl
+ \l_@@_renderer_definition_tl
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { ##1 }
+ \l_tmpb_tl
+ \cs_generate_from_arg_count:cNVV
+ { \l_tmpa_tl }
+ \cs_set:Npn
+ \l_tmpa_int
+ \l_tmpb_tl
+ }
+ }
+ },
+ }
+\msg_new:nnn
+ { markdown }
+ { undefined-renderer }
+ {
+ Renderer~#1~is~undefined.
+ }
+\cs_generate_variant:Nn
+ \@@_glob_seq:nnN
+ { VnN }
+\cs_generate_variant:Nn
+ \cs_generate_from_arg_count:NNnn
+ { cNVV }
+\cs_generate_variant:Nn
+ \msg_error:nnn
+ { nnV }
+% \end{macrocode}
+% \begin{markdown}
+%
+% If plain \TeX{} is the top layer, we use the \mref{@@_define_renderers:}
+% macro to define plain \TeX{} token renderer macros and key-values
+% immediately. Otherwise, we postpone the definition until the upper layers
+% have been loaded.
%
+% \end{markdown}
+% \begin{macrocode}
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_plain_tex_tl
+ {
+ \@@_define_renderers:
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
% \begin{markdown}
### Token Renderer Prototypes {#texrendererprototypes}
@@ -18250,13 +20447,13 @@ following content:
~
\end{markdown}
-\begin{markdown*}{
+\begin{markdown}[
renderers = {
tilde = {User-defined token renderers take precedence.},
},
-}
+]
~
-\end{markdown*}
+\end{markdown}
\end{document}
```````
Next, invoke LuaTeX from the terminal:
@@ -18294,7 +20491,7 @@ following content:
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -18416,7 +20613,7 @@ age: 99
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -18435,49 +20632,89 @@ following text:
% \end{macrocode}
% \begin{markdown}
%
-% The following \TeX{} macros provide definitions for the token renderers (see
-% Section <#sec:texrenderersuser>) that have not been redefined by the
-% user. These macros are intended to be redefined by macro package authors
-% who wish to provide sensible default token renderers. They are also redefined
-% by the \LaTeX{} and \Hologo{ConTeXt} implementations (see sections
-% <#sec:lateximplementation> and <#sec:contextimplementation>).
+% The `jekyllDataRenderers` key can be used as a syntactic sugar for setting
+% the `markdown/jekyllData` key--values without using the expl3 language.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
-\cs_new:Nn \@@_plaintex_define_renderer_prototypes:
+\@@_with_various_cases:nn
+ { jekyllDataRenderers }
{
- \seq_map_function:NN
- \g_@@_renderers_seq
- \@@_plaintex_define_renderer_prototype:n
- \let\markdownRendererBlockHtmlCommentBeginPrototype=\iffalse
- \let\markdownRendererBlockHtmlCommentBegin=\iffalse
- \let\markdownRendererBlockHtmlCommentEndPrototype=\fi
- \let\markdownRendererBlockHtmlCommentEnd=\fi
+ \keys_define:nn
+ { markdown/options }
+ {
+ #1 .code:n = {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { ##1 }
% \end{macrocode}
% \begin{markdown}
%
-% The \mref{markdownRendererFootnote} and
-% \mref{markdownRendererFootnotePrototype} macros have been deprecated
-% and will be removed in Markdown 3.0.0.
+% To ensure that keys containing forward slashes get passed correctly, we
+% replace all forward slashes in the input with backslash tokens with category
+% code letter and then undo the replacement. This means that if any unbraced
+% backslash tokens with category code letter exist in the input, they will be
+% replaced with forward slashes. However, this should be extremely rare.
%
% \end{markdown}
% \begin{macrocode}
- \cs_undefine:N \markdownRendererFootnote
- \cs_undefine:N \markdownRendererFootnotePrototype
+ \tl_replace_all:NnV
+ \l_tmpa_tl
+ { / }
+ \c_backslash_str
+ \keys_set:nV
+ { markdown/options/jekyll-data-renderers }
+ \l_tmpa_tl
+ },
+ }
+ }
+\keys_define:nn
+ { markdown/options/jekyll-data-renderers }
+ {
+ unknown .code:n = {
+ \tl_set_eq:NN
+ \l_tmpa_tl
+ \l_keys_key_str
+ \tl_replace_all:NVn
+ \l_tmpa_tl
+ \c_backslash_str
+ { / }
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ {
+ .code:n = { #1 }
+ }
+ \keys_define:nV
+ { markdown/jekyllData }
+ \l_tmpa_tl
+ }
+ }
+\cs_generate_variant:Nn
+ \keys_define:nn
+ { nV }
+\ExplSyntaxOff
% \end{macrocode}
% \begin{markdown}
%
-% The \mref{markdownRendererHorizontalRule} and
-% \mref{markdownRendererHorizontalRulePrototype} macros have been deprecated
-% and will be removed in Markdown 3.0.0.
+%#### Generating Plain \TeX{} Token Renderer Prototype Macros and Key-Values {#plain-tex-renderer-prototypes}
+%
+% We define the command \mdef{@@_define_renderer_prototypes:} that defines plain \TeX{}
+% macros for token renderer prototypes. Futhermore, the `\markdownSetup` macro also accepts
+% the `rendererPrototype` key, whose value must be a list of key-values, where the keys
+% correspond to the markdown token renderer prototype macros and the values are new
+% definitions of these token renderer prototypes.
%
% \end{markdown}
% \begin{macrocode}
- \cs_undefine:N \markdownRendererHorizontalRule
- \cs_undefine:N \markdownRendererHorizontalRulePrototype
+\ExplSyntaxOn
+\cs_new:Nn \@@_define_renderer_prototypes:
+ {
+ \seq_map_function:NN
+ \g_@@_renderers_seq
+ \@@_define_renderer_prototype:n
}
-\cs_new:Nn \@@_plaintex_define_renderer_prototype:n
+\cs_new:Nn \@@_define_renderer_prototype:n
{
\@@_renderer_prototype_tl_to_csname:nN
{ #1 }
@@ -18486,7 +20723,8 @@ following text:
\g_@@_renderer_arities_prop
{ #1 }
\l_tmpb_tl
- \@@_plaintex_define_renderer_prototype:cV
+ \@@_define_renderer_prototype:ncV
+ { #1 }
{ \l_tmpa_tl }
\l_tmpb_tl
}
@@ -18504,23 +20742,191 @@ following text:
Prototype
}
}
-\cs_new:Nn \@@_plaintex_define_renderer_prototype:Nn
+\tl_new:N
+ \l_@@_renderer_prototype_definition_tl
+\cs_new:Nn \@@_define_renderer_prototype:nNn
{
- \cs_generate_from_arg_count:NNnn
- #1
- \cs_set:Npn
- { #2 }
- { }
+ \keys_define:nn
+ { markdown/options/renderer-prototypes }
+ {
+ #1 .code:n = {
+ \tl_set:Nn
+ \l_@@_renderer_prototype_definition_tl
+ { ##1 }
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { #1 }
+ \l_@@_renderer_prototype_definition_tl
+ \cs_generate_from_arg_count:NNnV
+ #2
+ \cs_set:Npn
+ { #3 }
+ \l_@@_renderer_prototype_definition_tl
+ },
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Unless the token renderer prototype macro has already been defined,
+% we provide an empty definition.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_if_free:NT
+ #2
+ {
+ \cs_generate_from_arg_count:NNnn
+ #2
+ \cs_set:Npn
+ { #3 }
+ { }
+ }
}
\cs_generate_variant:Nn
- \@@_plaintex_define_renderer_prototype:Nn
- { cV }
-\@@_plaintex_define_renderer_prototypes:
+ \@@_define_renderer_prototype:nNn
+ { ncV }
\ExplSyntaxOff
% \end{macrocode}
% \par
% \begin{markdown}
%
+% The following example code showcases a possible configuration of the
+% `\markdownRendererImagePrototype` and `\markdownRendererCodeSpanPrototype`
+% token renderer prototype macros.
+% ``` tex
+% \markdownSetup{
+% rendererPrototypes = {
+% image = {\pdfximage{#2}}, \% Embed PDF images in the document.
+% codeSpan = {{\tt #1}}, \% Render inline code using monospace.
+% }
+% }
+% ```````
+%
+% In addition to exact token renderer names, we also support wildcards
+% and enumerations that match multiple token renderer prototype names:
+% ``` tex
+% \markdownSetup{
+% rendererPrototypes = {
+% heading* = {{\bf #1}}, \% Render headings using the bold face.
+% jekyllData(String|Number) = { \% Render YAML string and numbers
+% {\it #2}\% \% using italics.
+% },
+% }
+% }
+% ```````
+%
+% Wildcards and enumerations can be combined:
+% ``` tex
+% \markdownSetup{
+% rendererPrototypes = {
+% *lItem(|End) = {"}, \% Quote ordered/bullet list items.
+% }
+% }
+% ```````
+%
+% To determine the current token renderer prototype, you can use the
+% parameter `#0`:
+% ``` tex
+% \markdownSetup{
+% rendererPrototypes = {
+% heading* = {#0: #1}, \% Render headings as the renderer prototype
+% } \% name followed by the heading text.
+% }
+% ```````
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\seq_new:N
+ \l_@@_renderer_prototype_glob_results_seq
+\keys_define:nn
+ { markdown/options/renderer-prototypes }
+ {
+ unknown .code:n = {
+ \@@_glob_seq:VnN
+ \l_keys_key_str
+ { g_@@_renderers_seq }
+ \l_@@_renderer_prototype_glob_results_seq
+ \seq_if_empty:NTF
+ \l_@@_renderer_prototype_glob_results_seq
+ {
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer-prototype }
+ \l_keys_key_str
+ }
+ {
+ \tl_set:Nn
+ \l_@@_renderer_prototype_definition_tl
+ { #1 }
+ \seq_map_inline:Nn
+ \l_@@_renderer_prototype_glob_results_seq
+ {
+ \@@_renderer_prototype_tl_to_csname:nN
+ { ##1 }
+ \l_tmpa_tl
+ \prop_get:NnN
+ \g_@@_renderer_arities_prop
+ { ##1 }
+ \l_tmpb_tl
+ \int_set:Nn
+ \l_tmpa_int
+ \l_tmpb_tl
+ \tl_set:NV
+ \l_tmpb_tl
+ \l_@@_renderer_prototype_definition_tl
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { ##1 }
+ \l_tmpb_tl
+ \cs_generate_from_arg_count:cNVV
+ { \l_tmpa_tl }
+ \cs_set:Npn
+ \l_tmpa_int
+ \l_tmpb_tl
+ }
+ }
+ },
+ }
+\msg_new:nnn
+ { markdown }
+ { undefined-renderer-prototype }
+ {
+ Renderer~prototype~#1~is~undefined.
+ }
+\@@_with_various_cases:nn
+ { rendererPrototypes }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #1 .code:n = {
+ \keys_set:nn
+ { markdown/options/renderer-prototypes }
+ { ##1 }
+ },
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% If plain \TeX{} is the top layer, we use the \mref{@@_define_renderer_prototypes:}
+% macro to define plain \TeX{} token renderer prototype macros and key-values
+% immediately. Otherwise, we postpone the definition until the upper layers
+% have been loaded.
+%
+% \end{markdown}
+% \begin{macrocode}
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_plain_tex_tl
+ {
+ \@@_define_renderer_prototypes:
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+% \begin{markdown}
+%
%### Logging Facilities
% The \mdef{markdownInfo}, \mdef{markdownWarning}, and \mdef{markdownError}
% macros perform logging for the Markdown package. Their first argument
@@ -18529,6 +20935,10 @@ following text:
% text. You may redefine these macros to redirect and process the info,
% warning, and error messages.
%
+% The \mref{markdownInfo}, \mref{markdownWarning}, and \mref{markdownError}
+% macros have been deprecated and will be removed in the next major version of
+% the Markdown package.
+%
%### Miscellanea
% The \mdef{markdownMakeOther} macro is used by the package, when a \TeX{}
% engine that does not support direct Lua access is starting to buffer a text.
@@ -18572,72 +20982,26 @@ following text:
|endgroup
% \end{macrocode}
% \begin{markdown}
-% The macro is exposed in the interface, so that the user can create their own
-% markdown environments. Due to the way the arguments are passed to Lua (see
-% Section <#sec:direct-lua>), the first argument may not contain the
-% string `]]` (regardless of the category code of the bracket symbol (`]`)).
-%
-% The \mdef{markdownMode} macro specifies how the plain \TeX{} implementation
-% interfaces with the Lua interface. The valid values and their meaning are
-% as follows:
-%
-% - `0` – Shell escape via the 18 output file stream
-% - `1` – Shell escape via the Lua `os.execute` method
-% - `2` – Direct Lua access
-% - `3` – The \pkg{lt3luabridge} Lua package
-%
-% By defining the macro, the user can coerce the package to use a specific mode.
-% If the user does not define the macro prior to loading the plain \TeX{}
-% implementation, the correct value will be automatically detected. The outcome
-% of changing the value of \mref{markdownMode} after the implementation has been
-% loaded is undefined.
-%
-% The \mref{markdownMode} macro has been deprecated and will be removed in
-% Markdown 3.0.0. The code that corresponds to \mref{markdownMode} value of `3`
-% will be the only implementation.
+% The macro is exposed in the interface, so that users can create their own
+% markdown environments. Due to the way the arguments are passed to Lua, the
+% first argument may not contain the string `]]` (regardless of the category
+% code of the bracket symbol).
%
+% The `code` key, which can be used to immediately expand and execute code.
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
-\cs_if_exist:NF
- \markdownMode
+\keys_define:nn
+ { markdown/options }
{
- \file_if_exist:nTF
- { lt3luabridge.tex }
- {
- \cs_new:Npn
- \markdownMode
- { 3 }
- }
- {
- \cs_if_exist:NTF
- \directlua
- {
- \cs_new:Npn
- \markdownMode
- { 2 }
- }
- {
- \cs_new:Npn
- \markdownMode
- { 0 }
- }
- }
+ code .code:n = { #1 },
}
\ExplSyntaxOff
% \end{macrocode}
-% \par
% \begin{markdown}
-%
-% The \mdef{markdownLuaRegisterIBCallback} and
-% \mdef{markdownLuaUnregisterIBCallback} macros have been deprecated and will
-% be removed in Markdown 3.0.0:
+% This can be especially useful in snippets.
%
% \end{markdown}
-% \begin{macrocode}
-\def\markdownLuaRegisterIBCallback#1{\relax}%
-\def\markdownLuaUnregisterIBCallback#1{\relax}%
-% \end{macrocode}
% \iffalse
%</tex>
% \fi
@@ -18674,9 +21038,9 @@ following content:
$\sqrt{-1}$ *equals* $i$
\end{markdown}
-\begin{markdown*}{hybrid}
+\begin{markdown}[texMathDollars]
$\sqrt{-1}$ *equals* $i$
-\end{markdown*}
+\end{markdown}
\end{document}
```````
@@ -18710,15 +21074,26 @@ pdflatex --shell-escape document.tex
% rest of the interface is inherited from the plain \TeX{} interface (see
% Section <#sec:texinterface>).
%
-% The \LaTeX{} implementation redefines the plain \TeX{} logging macros (see
-% Section <#sec:tex-interface-logging>) to use the \LaTeX{} `\PackageInfo`,
-% `\PackageWarning`, and `\PackageError` macros.
+% To determine whether \LaTeX{} is the top layer or if there are other
+% layers above \LaTeX{}, we take a look on whether the
+% \mref{c_@@_top_layer_tl} token list has already been defined. If not,
+% we will assume that \LaTeX{} is the top layer.
%
% \end{markdown}
% \begin{macrocode}
-\newcommand\markdownInfo[1]{\PackageInfo{markdown}{#1}}%
-\newcommand\markdownWarning[1]{\PackageWarning{markdown}{#1}}%
-\newcommand\markdownError[2]{\PackageError{markdown}{#1}{#2.}}%
+\ExplSyntaxOn
+\tl_const:Nn \c_@@_option_layer_latex_tl { latex }
+\cs_generate_variant:Nn
+ \tl_const:Nn
+ { NV }
+\tl_if_exist:NF
+ \c_@@_top_layer_tl
+ {
+ \tl_const:NV
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_latex_tl
+ }
+\ExplSyntaxOff
\input markdown/markdown
% \end{macrocode}
% \begin{markdown}
@@ -18733,12 +21108,12 @@ pdflatex --shell-escape document.tex
% where \meta{options} are the \LaTeX{} interface options (see Section
% <#sec:latex-options>). Note that \meta{options} inside the `\usepackage`
% macro may not set the `markdownRenderers` (see Section
-% <#sec:latex-renderers>) and `markdownRendererPrototypes` (see Section
-% <#sec:latex-renderer-prototypes>) keys. Furthermore, although the
+% <#sec:plain-tex-renderers>) and `markdownRendererPrototypes` (see Section
+% <#sec:plain-tex-renderer-prototypes>) keys. Furthermore, although the
% base variant of the `import` key that loads a single \LaTeX{} theme
% (see Section <#sec:latexthemes>) can be used, the extended variant
% that can load multiple themes and import snippets from them (see
-% Section <#sec:latexsnippets>). This limitation is due to the way
+% Section <#sec:snippets>) cannot. This limitation is due to the way
% \Hologo{LaTeX2e} parses package options.
%
% \end{markdown}
@@ -18749,11 +21124,14 @@ pdflatex --shell-escape document.tex
% The interface exposes the \envmdef{markdown} and \envmdef{markdown*}
% \LaTeX{} environments, and redefines the \mref{markdownInput} command.
%
-% The \envmref{markdown} and \envmref{markdown*} \LaTeX{} environments are used to
-% typeset markdown document fragments. The starred version of the
-% \envmref{markdown} environment accepts \LaTeX{} interface options (see
-% Section <#sec:latex-options>) as its only argument. These options will
-% only influence this markdown document fragment.
+% The \envmref{markdown} and \envmref{markdown*} \LaTeX{} environments are used
+% to typeset markdown document fragments. Both \LaTeX{} environments accept
+% \LaTeX{} interface options (see ection <#sec:latex-options>) as the only
+% argument. This argument is optional for the \envmref{markdown} environment
+% and mandatory for the \envmref{markdown*} environment.
+%
+% The \envmref{markdown*} environment has been deprecated and will be removed
+% in the next major version of the Markdown package.
%
% \end{markdown}
% \begin{macrocode}
@@ -18763,7 +21141,7 @@ pdflatex --shell-escape document.tex
% \markdownBegin
%
% You may prepend your own code to the \mdef{markdown} macro and append your own
-% code to the \mdef{endmarkdown} macro to produce special effects before and after
+% code to the \mref{markdownEnd} macro to produce special effects before and after
% the \envmref{markdown} \LaTeX{} environment (and likewise for the starred
% version).
%
@@ -18778,7 +21156,7 @@ pdflatex --shell-escape document.tex
% \usepackage{markdown} \usepackage{markdown}
% \begin{document} \begin{document}
% \% ... \% ...
-% \begin{markdown} \begin{markdown*}{smartEllipses}
+% \begin{markdown}[smartEllipses] \begin{markdown*}{smartEllipses}
% _Hello_ **world** ... _Hello_ **world** ...
% \end{markdown} \end{markdown*}
% \% ... \% ...
@@ -18812,9 +21190,6 @@ pdflatex --shell-escape document.tex
% part is optional, and \meta{key} will be interpreted as \meta{key}`=true`
% if the `=`\meta{value} part has been omitted.
%
-% Except for the `plain` option described in Section <#sec:latexplain>, and
-% the \LaTeX{} themes described in Section <#sec:latexthemes>, and the
-% \LaTeX{} snippets described in Section <#sec:latex-setup-snippets>,
% \LaTeX{} options map directly to the options recognized by the plain
% \TeX{} interface (see Section <#sec:tex-options>) and to the markdown token
% renderers and their prototypes recognized by the plain \TeX{} interface (see
@@ -18822,75 +21197,36 @@ pdflatex --shell-escape document.tex
%
% The \LaTeX{} options may be specified when loading the \LaTeX{} package, when
% using the \envmref{markdown*} \LaTeX{} environment or the \mref{markdownInput}
-% macro (see Section <#sec:latexinterface>), or via the \mdef{markdownSetup}
-% macro. The \mref{markdownSetup} macro receives the options to set up as its only
-% argument:
-%
-% \markdownEnd
-% \begin{macrocode}
-\ExplSyntaxOn
-\cs_new:Nn
- \@@_setup:n
- {
- \keys_set:nn
- { markdown/latex-options }
- { #1 }
- }
-\let\markdownSetup=\@@_setup:n
-\ExplSyntaxOff
-% \end{macrocode}
-% \begin{markdown}
+% macro (see Section <#sec:latexinterface>), or via the \mref{markdownSetup}
+% macro.
%
-%#### \LaTeX{} snippets {#latex-setup-snippets}
+%#### Finalizing and Freezing the Cache
%
-% We may also set up \LaTeX{} options as *snippets* using the
-% \mdef{markdownSetupSnippet} macro and invoke them later. The
-% \mref{markdownSetupSnippet} macro receives two arguments: the name
-% of the snippet and the options to store:
+% To ensure compatibility with the `minted` package [@poore17, Section
+% 5.1], which supports the `finalizecache` and `frozencache` package options
+% with similar semantics to the \Opt{finalizeCache} and \Opt{frozenCache} plain
+% \TeX{} options, the Markdown package also recognizes these as aliases
+% and accepts them as document class options. By passing `finalizecache` and
+% `frozencache` as document class options, you may conveniently control the
+% behavior of both packages at once:
%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\cs_new:Nn
- \@@_latex_setup_snippet:nn
- {
- \markdownIfSnippetExists
- { #1 }
- {
- \markdownWarning
- {Redefined~snippet~\markdownLaTeXThemeName#1}
- \csname markdownLaTeXSetupSnippet%
- \markdownLaTeXThemeName#1\endcsname={#2}
- }
- {
- \newtoks\next
- \next={#2}
- \expandafter\let\csname markdownLaTeXSetupSnippet%
- \markdownLaTeXThemeName#1\endcsname=\next
- }
- }
-\let\markdownSetupSnippet=\@@_latex_setup_snippet:nn
-\ExplSyntaxOff
-% \end{macrocode}
-% \begin{markdown}
+% ``` tex
+% \documentclass[frozencache]{article}
+% \usepackage{markdown,minted}
+% \begin{document}
+% % ...
+% \end{document}
+% ```````
%
-% To decide whether a snippet exists, we can use the
-% \mdef{markdownIfSnippetExists} macro:
+% We hope that other packages will support the `finalizecache` and
+% `frozencache` package options in the future, so that they can become a
+% standard interface for preparing \LaTeX{} document sources for distribution.
%
-% \end{markdown}
+% \markdownEnd
% \begin{macrocode}
-\newcommand\markdownIfSnippetExists[3]{%
- \@ifundefined
- {markdownLaTeXSetupSnippet\markdownLaTeXThemeName#1}%
- {#3}{#2}}%
+\DeclareOption{finalizecache}{\markdownSetup{finalizeCache}}
+\DeclareOption{frozencache}{\markdownSetup{frozenCache}}
% \end{macrocode}
-% \begin{markdown}
-%
-% See Section <#sec:latexthemes> for information on interactions between
-% snippets and \LaTeX{} themes. See Section <#sec:latexsnippets>
-% for information about invoking the set-up snippets.
-%
-% \end{markdown}
% \iffalse
%</latex>
%<*manual-options>
@@ -18914,133 +21250,95 @@ following code in our \LaTeX{} document:
```
We can also set all plain \TeX{} options directly from \LaTeX{}. For example,
-to set the `\markdownOptionHelperScriptFileName` plain \TeX{} option to
+to set the `\markdownOptionInputTempFileName` plain \TeX{} option to
`helper-script.lua`, we would inclde the following code in our \LaTeX{}
document:
``` tex
\markdownSetup{
- helperScriptFileName = helper-script.lua,
+ inputTempFileName = temporary-input.md,
}
```
%</manual-options>
%<*latex>
% \fi
-% \par
% \begin{markdown}
%
-% To enable the enumeration of \LaTeX{} options, we will maintain the
-% \mdef{g_\@\@_latex_options_seq} sequence.
+%#### Generating Plain \TeX{} Option, Token Renderer, and Token Renderer Prototype Macros and Key-Values
+%
+% If \LaTeX{} is the top layer, we use the
+% \mref{@@_define_option_commands_and_keyvals:}, \mref{@@_define_renderers:},
+% and \mref{@@_define_renderer_prototypes:} macro to define plain \TeX{}
+% option, token renderer, and token renderer prototype macros and key-values
+% immediately. Otherwise, we postpone the definition until the upper layers
+% have been loaded.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
-\seq_new:N \g_@@_latex_options_seq
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_latex_tl
+ {
+ \@@_define_option_commands_and_keyvals:
+ \@@_define_renderers:
+ \@@_define_renderer_prototypes:
+ }
+\ExplSyntaxOff
% \end{macrocode}
+% \par
% \begin{markdown}
%
-% To enable the reflection of default \LaTeX{} options and their types, we
-% will maintain the \mdef{g_\@\@_default_latex_options_prop} and
-% \mdef{g_\@\@_latex_option_types_prop} property lists, respectively.
+% The following example \LaTeX{} code showcases a possible configuration of
+% plain \TeX{} interface options \Opt{hybrid}, \Opt{smartEllipses}, and
+% \Opt{cacheDir}.
+% ``` tex
+% \markdownSetup{
+% hybrid,
+% smartEllipses,
+% cacheDir = /tmp,
+% }
+% ```````
%
% \end{markdown}
-% \begin{macrocode}
-\prop_new:N \g_@@_latex_option_types_prop
-\prop_new:N \g_@@_default_latex_options_prop
-\tl_const:Nn \c_@@_option_layer_latex_tl { latex }
-\seq_gput_right:NV \g_@@_option_layers_seq \c_@@_option_layer_latex_tl
-\cs_new:Nn
- \@@_add_latex_option:nnn
- {
- \@@_add_option:Vnnn
- \c_@@_option_layer_latex_tl
- { #1 }
- { #2 }
- { #3 }
- }
-% \end{macrocode}
% \iffalse
%</latex>
%<*manual-options>
% \fi
% \begin{markdown}
-#### No default token renderer prototypes {#latexplain}
-
-Default token renderer prototypes require \LaTeX{} packages that may clash with
-other packages used in a document. Additionally, if we redefine token
-renderers and renderer prototypes ourselves, the default definitions will bring
-no benefit to us. Using the `plain` package option, we can keep the default
-definitions from the plain \TeX{} implementation
-% (see Section <#sec:tex-token-renderer-prototypes>)
-and prevent the soft \LaTeX{} prerequisites
-% in Section <#sec:latex-prerequisites>
-from being loaded: The plain option must be set before or when loading the
-package. Setting the option after loading the package will have no effect.
-
-``` tex
-\usepackage[plain]{markdown}
-```````
+### Themes {#latexthemes}
-% \end{markdown}
-% \iffalse
-%</manual-options>
-%<*latex>
+% In Section~\ref{sec:themes}, we described the concept of themes.
+In \LaTeX{}, we expand on the concept of
+% themes\iffalse
+[themes](#themes)
% \fi
-% \begin{macrocode}
-\@@_add_latex_option:nnn
- { plain }
- { boolean }
- { false }
-\ExplSyntaxOff
-% \end{macrocode}
-% \iffalse
-%</latex>
-%<*manual-options>
-% \fi
-% \begin{markdown}
+by allowing a theme to be a full-blown \LaTeX{} package. Specifically, the
+key-values `theme`=\meta{theme name} and `import`=\meta{theme name} load a
+\LaTeX{} package named `markdowntheme`\meta{munged theme name}`.sty` if it
+exists and a \TeX{} document named `markdowntheme`\meta{munged theme
+name}`.tex` otherwise.
-#### \LaTeX{} themes {#latexthemes}
+Having the Markdown package automatically load either the generic `.tex`
+*theme file* or the \LaTeX{}-specific `.sty` theme file allows developers
+to have a single *theme file*, when the theme is small or the difference
+between \TeX{} formats is unimportant, and scale up to separate theme files
+native to different \TeX{} formats for large multi-format themes, where
+different code is needed for different \TeX{} formats. To enable code reuse,
+developers can load the `.tex` theme file from the `.sty` theme file using the
+\mdef{markdownLoadPlainTeXTheme} macro.
-User-defined \LaTeX{} themes for the Markdown package provide a domain-specific
-interpretation of Markdown tokens. Similarly to \LaTeX{} packages, themes
-allow the authors to achieve a specific look and other high-level goals
-without low-level programming.
-
-% The \LaTeX{} option `import`=\meta{theme name} loads a \LaTeX{} package
-% (further referred to as *a theme*) named `markdowntheme`\meta{munged theme
-% name}`.sty`, where the *munged theme name* is the *theme name* after the
-% substitution of all forward slashes (`/`) for an underscore (`_`), the theme
-% *name* is *qualified* and contains no underscores, and a value is qualified
-% if and only if it contains at least one forward slash. Themes are inspired
-% by the Beamer \LaTeX{} package, which provides similar functionality with
-% its `\usetheme` macro [@tantau21, Section 15.1].
-%
-% Theme names must be qualified to minimize naming conflicts between different
-% themes intended for a single \LaTeX{} document class or for a single \LaTeX{}
-% package. The preferred format of a theme name is \meta{theme author}`/`<!--
-% -->\meta{target \LaTeX{} document class or package}`/`\meta{private naming
-% scheme}, where the *private naming scheme* may contain additional forward
-% slashes. For example, a theme by a user `witiko` for the MU theme of the
-% Beamer document class may have the name `witiko/beamer/MU`.
-%
-% Theme names are munged, because \LaTeX{} packages are identified only by
-% their filenames, not by their pathnames. [@novotny21] Therefore, we can't
-% store the qualified theme names directly using directories, but we must
-% encode the individual segments of the qualified theme in the filename. For
-% example, loading a theme named `witiko/beamer/MU` would load a \LaTeX{}
-% package named `markdownthemewitiko_beamer_MU.sty`.
-%
-% If the \LaTeX{} option with key `theme` is (repeatedly) specified in the
-% `\usepackage` macro, the loading of the theme(s) will be postponed in
-% first-in-first-out order until after the Markdown \LaTeX{} package has been
-% loaded. Otherwise, the theme(s) will be loaded immediately. For example,
-% there is a theme named `witiko/dot`, which typesets fenced code blocks with
-% the `dot` infostring as images of directed graphs rendered by the Graphviz
-% tools. The following code would first load the Markdown package, then the
-% `markdownthemewitiko_beamer_MU.sty` \LaTeX{} package, and finally the
-% `markdownthemewitiko_dot.sty` \LaTeX{} package:
+% If the \LaTeX{} option with keys `theme` or `import` is (repeatedly)
+% specified in the `\usepackage` macro, the loading of the theme(s) will be
+% postponed in first-in-first-out order until after the Markdown \LaTeX{}
+% package has been loaded. Otherwise, the theme(s) will be loaded immediately.
+% For example, there is a theme named `witiko/dot`, which typesets fenced code
+% blocks with the `dot` infostring as images of directed graphs rendered by the
+% Graphviz tools. The following code would first load the Markdown package,
+% then the `markdownthemewitiko_beamer_MU.sty` \LaTeX{} package, and finally
+% the `markdownthemewitiko_dot.sty` \LaTeX{} package:
% \end{markdown}
% \iffalse
@@ -19066,121 +21364,22 @@ would use the following code in the preamble of your document:
% \begin{macrocode}
\newif\ifmarkdownLaTeXLoaded
\markdownLaTeXLoadedfalse
-\AtEndOfPackage{\markdownLaTeXLoadedtrue}
-\ExplSyntaxOn
-\tl_new:N \markdownLaTeXThemePackageName
-\cs_new:Nn
- \@@_set_latex_theme:n
- {
- \str_if_in:nnF
- { #1 }
- { / }
- {
- \markdownError
- { Won't~load~theme~with~unqualified~name~#1 }
- { Theme~names~must~contain~at~least~one~forward~slash }
- }
- \str_if_in:nnT
- { #1 }
- { _ }
- {
- \markdownError
- { Won't~load~theme~with~an~underscore~in~its~name~#1 }
- { Theme~names~must~not~contain~underscores~in~their~names }
- }
- \tl_set:Nn \markdownLaTeXThemePackageName { #1 }
- \str_replace_all:Nnn
- \markdownLaTeXThemePackageName
- { / }
- { _ }
- \edef\markdownLaTeXThemePackageName{
- markdowntheme\markdownLaTeXThemePackageName}
- \expandafter\markdownLaTeXThemeLoad\expandafter{
- \markdownLaTeXThemePackageName}{#1/}
- }
-\keys_define:nn
- { markdown/latex-options }
- {
- import .code:n = {
- \tl_set:Nn
- \l_tmpa_tl
- { #1 }
% \end{macrocode}
-% \begin{markdown}
-%
-% To ensure that keys containing forward slashes get passed correctly, we
-% replace all forward slashes in the input with backslash tokens with category
-% code letter and then undo the replacement. This means that if any unbraced
-% backslash tokens with category code letter exist in the input, they will be
-% replaced with forward slashes. However, this should be extremely rare.
-%
-% \end{markdown}
-% \begin{macrocode}
- \tl_replace_all:NnV
- \l_tmpa_tl
- { / }
- \c_backslash_str
- \keys_set:nV
- { markdown/latex-options/import }
- \l_tmpa_tl
- },
- }
-\cs_generate_variant:Nn
- \tl_replace_all:Nnn
- { NnV }
-% \end{macrocode}
-% \begin{markdown}
-%
-% The \LaTeX{} option `theme` has been deprecated and will be removed in
-% Markdown 3.0.0.
-%
-% \end{markdown}
-% \begin{macrocode}
-\keys_define:nn
- { markdown/latex-options }
- {
- theme .code:n = { \@@_set_latex_theme:n { #1 } },
- }
-\ExplSyntaxOff
-% \end{macrocode}
-% \begin{markdown}
-%
-% The \LaTeX{} themes have a useful synergy with snippets (see Section
-% <#sec:latex-setup-snippets>): To make it less likely that different themes
-% will set up snippets with the same name, we will prepend \meta{theme
-% name}`/` before the snippet name and use the result as the snippet name.
-% For example, if the `witiko/dot` theme sets up the `product` snippet, the
-% snippet will be available under the name `witiko/dot/product`.
-%
-% \end{markdown}
% \iffalse
%</latex>
%<*manual-options>
% \fi
+% \par
% \begin{markdown}
Due to limitations of \LaTeX{}, themes may not be loaded after the
beginning of a \LaTeX{} document.
% \end{markdown}
-% \iffalse
-%</manual-options>
-%<*latex>
-% \fi
-% \begin{macrocode}
-\ExplSyntaxOn
-\@onlypreamble
- \@@_set_latex_theme:n
-\ExplSyntaxOff
-% \end{macrocode}
-% \iffalse
-%</latex>
-%<*manual-options>
-% \fi
% \par
% \markdownBegin
-Example themes provided with the Markdown package include:
+Built-in \LaTeX{} themes provided with the Markdown package include:
\pkg{witiko/dot}
@@ -19311,13 +21510,13 @@ conference article:
> <http://ceur-ws.org/Vol-2696/paper_235.pdf>
%</manual-options>
-%<*latex-themes-witiko-dot>
+%<*themes-witiko-dot>
% \fi
% \begin{macrocode}
\ProvidesPackage{markdownthemewitiko_dot}[2021/03/09]%
% \end{macrocode}
% \iffalse
-%</latex-themes-witiko-dot>
+%</themes-witiko-dot>
%<*manual-options>
% \fi
% \par
@@ -19370,909 +21569,71 @@ lualatex document.tex
A PDF document named `document.pdf` should be produced and contain the
following image:
-> ![img](https://github.com/witiko/markdown/raw/main/markdown.png
-> "The banner of the Markdown package")
+> ![img](https://github.com/witiko/markdown/raw/main/markdown.png "The banner of the Markdown package")
%</manual-options>
-%<*latex-themes-witiko-graphicx-http>
+%<*themes-witiko-graphicx-http>
% \fi
% \begin{macrocode}
\ProvidesPackage{markdownthemewitiko_graphicx_http}[2021/03/22]%
% \end{macrocode}
% \iffalse
-%</latex-themes-witiko-graphicx-http>
-%<*manual-options>
-% \fi
-% \par
-% \markdownBegin
-
-\pkg{witiko/tilde}
-
-: A theme that makes tilde (`~`) always typeset the non-breaking space even
- when the \Opt{hybrid} Lua option is disabled.
-% ``` tex
-% \documentclass{article}
-% \usepackage[import=witiko/tilde]{markdown}
-% \begin{document}
-% \begin{markdown}
-% Bartel~Leendert van~der~Waerden
-% \end{markdown}
-% \end{document}
-% ```````
-% Typesetting the above document produces the following text:
-% “Bartel~Leendert van~der~Waerden”.
-%
-% \markdownEnd
-% \iffalse
-
-##### \LaTeX{} Example {.unnumbered}
-
-Using a text editor, create a text document named `document.tex` with the
-following content:
-``` tex
-\documentclass{article}
-\usepackage[import=witiko/tilde]{markdown}
-\begin{document}
-\begin{markdown}
-Bartel~Leendert van~der~Waerden
-\end{markdown}
-\end{document}
-```````
-Next, invoke LuaTeX from the terminal:
-``` sh
-lualatex document.tex
-``````
-A PDF document named `document.pdf` should be produced and contain the
-following text, where the middot (`·`) denotes a non-breaking space:
-
-> Bartel·Leendert van·der·Waerden
-
-%</manual-options>
-%<*latex-themes-witiko-tilde>
-% \fi
-% \begin{macrocode}
-\ProvidesPackage{markdownthemewitiko_tilde}[2021/03/22]%
-% \end{macrocode}
-% \iffalse
-%</latex-themes-witiko-tilde>
+%</themes-witiko-graphicx-http>
%<*manual-options>
% \fi
% \par
% \begin{markdown}
-%
-% Please, see Section <#sec:latex-themes-implementation> for implementation
-% details of the example themes.
-#### \LaTeX{} snippets {#latexsnippets}
+\pkg{witiko/markdown/defaults}
-% \end{markdown}
-% \iffalse
+: A \LaTeX{} theme with the default definitions of token renderer prototypes
+ for plain \TeX{}. This theme is loaded automatically together with the
+ package and explicitly loading it has no effect.
-User-defined \LaTeX{} themes provide global control over high-level goals.
-However, it is often desirable to change only some local aspects of a document.
-\LaTeX{} snippets provide syntactic sugar for defining and invoking various
-options locally.
-
-% \fi
-% \begin{markdown}
-% The \LaTeX{} option with key `snippet` invokes a snippet named \meta{value}:
% \end{markdown}
% \iffalse
%</manual-options>
%<*latex>
% \fi
% \begin{macrocode}
-\ExplSyntaxOn
-\keys_define:nn
- { markdown/latex-options }
- {
- snippet .code:n = {
- \markdownIfSnippetExists{#1}
- {
- \expandafter\markdownSetup\expandafter{
- \the\csname markdownLaTeXSetupSnippet
- \markdownLaTeXThemeName#1\endcsname}
- }{
- \markdownError
- {Can't~invoke~setup~snippet~#1}
- {The~setup~snippet~is~undefined}
- }
- }
- }
-\ExplSyntaxOff
-% \end{macrocode}
-% \iffalse
-%</latex>
-%<*manual-options>
-% \fi
-% \par
-% \markdownBegin
-
-Here is how we can use snippets to store options and invoke them later:
-
-``` tex
-\markdownSetupSnippet{romanNumerals}{
- renderers = {
- olItemWithNumber = {%
- \item[\romannumeral#1\relax.]%
- },
- },
-}
-\begin{markdown}
-
-The following ordered list will be preceded by arabic numerals:
-
-1. wahid
-2. aithnayn
-
-\end{markdown}
-\begin{markdown*}{snippet=romanNumerals}
-
-The following ordered list will be preceded by roman numerals:
-
-3. tres
-4. quattuor
-
-\end{markdown*}
-```````
-
-If the `romanNumerals` snippet were defined in the `jdoe/lists` theme,
-we could import the `jdoe/lists` theme and use the qualified name
-`jdoe/lists/romanNumerals` to invoke the snippet:
-
-``` tex
-\markdownSetup{import=jdoe/lists}
-\begin{markdown*}{snippet=jdoe/lists/romanNumerals}
-
-The following ordered list will be preceded by roman numerals:
-
-3. tres
-4. quattuor
-
-\end{markdown*}
-```````
-
-Alternatively, we can use the extended variant of the `import` \LaTeX{}
-option that allows us to import the `romanNumerals` snippet to the
-current namespace for easier access:
-
-``` tex
-\markdownSetup{
- import = {
- jdoe/lists = romanNumerals,
- },
-}
-\begin{markdown*}{snippet=romanNumerals}
-
-The following ordered list will be preceded by roman numerals:
-
-3. tres
-4. quattuor
-
-\end{markdown*}
-```````
-
-Furthermore, we can also specify the name of the snippet in the current
-namespace, which can be different from the name of the snippet in the
-`jdoe/lists` theme. For example, we can make the snippet
-`jdoe/lists/romanNumerals` available under the name `roman`.
-
-``` tex
-\markdownSetup{
- import = {
- jdoe/lists = romanNumerals as roman,
- },
-}
-\begin{markdown*}{snippet=roman}
-
-The following ordered list will be preceded by roman numerals:
-
-3. tres
-4. quattuor
-
-\end{markdown*}
-```````
-
-Several themes and/or snippets can be loaded at once using the extended
-variant of the `import` \LaTeX{} option:
-
-``` tex
-\markdownSetup{
- import = {
- jdoe/longpackagename/lists = {
- arabic as arabic1,
- roman,
- alphabetic,
- },
- jdoe/anotherlongpackagename/lists = {
- arabic as arabic2,
- },
- jdoe/yetanotherlongpackagename,
- },
-}
-```````
-
-% \markdownEnd
-% \iffalse
-%</manual-options>
-%<*latex>
-% \fi
-% \begin{macrocode}
-\ExplSyntaxOn
-\tl_new:N
- \l_@@_latex_import_current_theme_tl
-\keys_define:nn
- { markdown/latex-options/import }
- {
-% \end{macrocode}
-% \begin{markdown}
-%
-% If a theme name is given without a list of snippets to import,
-% we assume that an empty list was given.
-%
-% \end{markdown}
-% \begin{macrocode}
- unknown .default:n = {},
- unknown .code:n = {
-% \end{macrocode}
-% \begin{markdown}
-%
-% To ensure that keys containing forward slashes get passed correctly, we
-% replace all forward slashes in the input with backslash tokens with category
-% code letter and then undo the replacement. This means that if any unbraced
-% backslash tokens with category code letter exist in the input, they will be
-% replaced with forward slashes. However, this should be extremely rare.
-%
-% \end{markdown}
-% \begin{macrocode}
- \tl_set_eq:NN
- \l_@@_latex_import_current_theme_tl
- \l_keys_key_str
- \tl_replace_all:NVn
- \l_@@_latex_import_current_theme_tl
- \c_backslash_str
- { / }
-% \end{macrocode}
-% \begin{markdown}
-%
-% Here, we load the \LaTeX{} theme.
-%
-% \end{markdown}
-% \begin{macrocode}
- \@@_set_latex_theme:V
- \l_@@_latex_import_current_theme_tl
+\AtEndOfPackage{
+ \markdownLaTeXLoadedtrue
% \end{macrocode}
% \begin{markdown}
%
-% Here, we import the \LaTeX{} snippets.
+% At the end of the \LaTeX{} module, we load the
+% `witiko/markdown/defaults` \LaTeX{} theme (see Section <#sec:themes>) with
+% the default definitions for token renderer prototypes unless the option
+% `noDefaults` has been enabled (see Section <#sec:plain>).
%
% \end{markdown}
% \begin{macrocode}
- \clist_map_inline:nn
- { #1 }
- {
- \regex_extract_once:nnNTF
- { ^(.*?)\s+as\s+(.*?)$ }
- { ##1 }
- \l_tmpa_seq
- {
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpb_tl
- }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { ##1 }
- \tl_set:Nn
- \l_tmpb_tl
- { ##1 }
- }
- \tl_put_left:Nn
- \l_tmpa_tl
- { / }
- \tl_put_left:NV
- \l_tmpa_tl
- \l_@@_latex_import_current_theme_tl
- \@@_latex_setup_snippet:Vx
- \l_tmpb_tl
- { snippet = { \l_tmpa_tl } }
- }
- },
- }
-\cs_generate_variant:Nn
- \tl_replace_all:Nnn
- { NVn }
-\cs_generate_variant:Nn
- \@@_set_latex_theme:n
- { V }
-\cs_generate_variant:Nn
- \@@_latex_setup_snippet:nn
- { Vx }
-\ExplSyntaxOff
-% \end{macrocode}
-% \begin{markdown}
-%
-%#### Plain \TeX{} Interface Options
-% Here, we automatically define plain \TeX{} macros and the
-% \meta{key}`=`\meta{value} interface for the above \LaTeX{} options.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\cs_new:Nn \@@_latex_define_option_commands_and_keyvals:
- {
- \seq_map_inline:Nn
- \g_@@_latex_options_seq
- {
- \@@_plain_tex_define_option_command:n
- { ##1 }
- }
-% \end{macrocode}
-% \begin{markdown}
-%
-% Furthermore, we also define the \meta{key}`=`\meta{value} interface
-% for all option macros recognized by the Lua and plain \TeX{} interfaces.
-%
-% \end{markdown}
-% \begin{macrocode}
- \seq_map_inline:Nn
- \g_@@_option_layers_seq
- {
- \seq_map_inline:cn
- { g_@@_ ##1 _options_seq }
- {
-% \end{macrocode}
-% \begin{markdown}
-%
-% To make it easier to copy-and-paste options from Pandoc [@macfarlane22] such
-% as `fancy_lists`, `header_attributes`, and `pipe_tables`, we accept
-% snake\\\_case in addition to camelCase variants of options. As a bonus,
-% studies [@sharif10] also show that snake\\\_case is faster to read than
-% camelCase.
-%
-% \end{markdown}
-% \begin{macrocode}
- \@@_with_various_cases:nn
- { ####1 }
- {
- \@@_latex_define_option_keyval:nnn
- { ##1 }
- { ####1 }
- { ########1 }
- }
- }
- }
+ \markdownIfOption{noDefaults}{}{
+ \markdownSetup{theme=witiko/markdown/defaults}
}
-\cs_new:Nn \@@_latex_define_option_keyval:nnn
- {
- \prop_get:cnN
- { g_@@_ #1 _option_types_prop }
- { #2 }
- \l_tmpa_tl
- \keys_define:nn
- { markdown/latex-options }
- {
- #3 .code:n = {
- \@@_set_option_value:nn
- { #2 }
- { ##1 }
- },
- }
- \str_if_eq:VVT
- \l_tmpa_tl
- \c_@@_option_type_boolean_tl
- {
- \keys_define:nn
- { markdown/latex-options }
- {
- #3 .default:n = { true },
- }
- }
-% \end{macrocode}
-% \begin{markdown}
-%
-% For options of type `clist`, we assume that \meta{key} is a regular English
-% noun in plural (such as `extensions`) and we also define the
-% \meta{singular key}`=`\meta{value} interface, where \meta{singular key} is
-% \meta{key} after stripping the trailing -s (such as `extension`). Rather
-% than setting the option to \meta{value}, this interface appends \meta{value}
-% to the current value as the rightmost item in the list.
-%
-% \end{markdown}
-% \begin{macrocode}
- \str_if_eq:VVT
- \l_tmpa_tl
- \c_@@_option_type_clist_tl
- {
- \tl_set:Nn
- \l_tmpa_tl
- { #3 }
- \tl_reverse:N
- \l_tmpa_tl
- \str_if_eq:enF
- {
- \tl_head:V
- \l_tmpa_tl
- }
- { s }
- {
- \msg_error:nnn
- { markdown }
- { malformed-name-for-clist-option }
- { #3 }
- }
- \tl_set:Nx
- \l_tmpa_tl
- {
- \tl_tail:V
- \l_tmpa_tl
- }
- \tl_reverse:N
- \l_tmpa_tl
- \tl_put_right:Nn
- \l_tmpa_tl
- {
- .code:n = {
- \@@_get_option_value:nN
- { #2 }
- \l_tmpa_tl
- \clist_set:NV
- \l_tmpa_clist
- { \l_tmpa_tl, { ##1 } }
- \@@_set_option_value:nV
- { #2 }
- \l_tmpa_clist
- }
- }
- \keys_define:nV
- { markdown/latex-options }
- \l_tmpa_tl
- }
- }
-\cs_generate_variant:Nn
- \clist_set:Nn
- { NV }
-\cs_generate_variant:Nn
- \keys_define:nn
- { nV }
-\cs_generate_variant:Nn
- \@@_set_option_value:nn
- { nV }
-\prg_generate_conditional_variant:Nnn
- \str_if_eq:nn
- { en }
- { F }
-\msg_new:nnn
- { markdown }
- { malformed-name-for-clist-option }
- {
- Clist~option~name~#1~does~not~end~with~-s.
- }
-\@@_latex_define_option_commands_and_keyvals:
-\ExplSyntaxOff
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The \Opt{finalizeCache} and \Opt{frozenCache} plain
-% \TeX{} options are exposed through \LaTeX{} options with keys `finalizeCache`
-% and `frozenCache`.
-%
-% To ensure compatibility with the `minted` package [@poore17, Section
-% 5.1], which supports the `finalizecache` and `frozencache` package options
-% with similar semantics, the Markdown package also recognizes these as aliases
-% and recognizes them as document class options. By passing `finalizecache` and
-% `frozencache` as document class options, you may conveniently control the
-% behavior of both packages at once:
-%
-% ``` tex
-% \documentclass[frozencache]{article}
-% \usepackage{markdown,minted}
-% \begin{document}
-% % ...
-% \end{document}
-% ```````
-%
-% We hope that other packages will support the `finalizecache` and
-% `frozencache` package options in the future, so that they can become a
-% standard interface for preparing \LaTeX{} document sources for distribution.
-%
-% \end{markdown}
-% \begin{macrocode}
-\DeclareOption{finalizecache}{\markdownSetup{finalizeCache}}
-\DeclareOption{frozencache}{\markdownSetup{frozenCache}}
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The following example \LaTeX{} code showcases a possible configuration of
-% plain \TeX{} interface options \Opt{hybrid}, \Opt{smartEllipses}, and
-% \Opt{cacheDir}.
-% ``` tex
-% \markdownSetup{
-% hybrid,
-% smartEllipses,
-% cacheDir = /tmp,
-% }
-% ```````
-%
-%#### Plain \TeX{} Markdown Token Renderers {#latex-renderers}
-%
-% The \LaTeX{} interface recognizes an option with the `renderers` key,
-% whose value must be a list of key-values, where the keys correspond
-% to the markdown token renderer macros exposed by the plain \TeX{}
-% interface (see Section <#sec:texrenderersuser>) and the values are
-% new definitions of these token renderers.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\cs_new:Nn \@@_latex_define_renderers:
- {
- \seq_map_function:NN
- \g_@@_renderers_seq
- \@@_latex_define_renderer:n
- }
-\cs_new:Nn \@@_latex_define_renderer:n
- {
- \@@_renderer_tl_to_csname:nN
- { #1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g_@@_renderer_arities_prop
- { #1 }
- \l_tmpb_tl
- \@@_latex_define_renderer:ncV
- { #1 }
- { \l_tmpa_tl }
- \l_tmpb_tl
- }
-\cs_new:Nn \@@_renderer_tl_to_csname:nN
- {
- \tl_set:Nn
- \l_tmpa_tl
- { \str_uppercase:n { #1 } }
- \tl_set:Nx
- #2
- {
- markdownRenderer
- \tl_head:f { \l_tmpa_tl }
- \tl_tail:n { #1 }
- }
- }
-\cs_new:Nn \@@_latex_define_renderer:nNn
- {
- \@@_with_various_cases:nn
- { #1 }
- {
- \keys_define:nn
- { markdown/latex-options/renderers }
- {
- ##1 .code:n = {
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ####1 }
- },
- }
- }
- }
-\cs_generate_variant:Nn
- \@@_latex_define_renderer:nNn
- { ncV }
-\ExplSyntaxOff
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The following example \LaTeX{} code showcases a possible configuration of the
-% \mref{markdownRendererLink} and \mref{markdownRendererEmphasis} markdown token
-% renderers.
-% ``` tex
-% \markdownSetup{
-% renderers = {
-% link = {#4}, \% Render links as the link title.
-% emphasis = {\emph{#1}}, \% Render emphasized text via `\emph`.
-% }
-% }
-% ```````
-%
-% In addition to exact token renderer names, we also support wildcards
-% that match multiple token renderer names.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\tl_new:N
- \l_@@_renderer_definition_tl
-\keys_define:nn
- { markdown/latex-options/renderers }
- {
- unknown .code:n = {
- \regex_match:nVTF
- { \* }
- \l_keys_key_str
- {
- \tl_set:Nn
- \l_@@_renderer_definition_tl
- { #1 }
- \tl_set:NV
- \l_tmpa_tl
- \l_keys_key_str
- \regex_replace_all:nnN
- { \* }
- { .* }
- \l_tmpa_tl
- \regex_set:NV
- \l_tmpa_regex
- \l_tmpa_tl
- \int_zero:N
- \l_tmpa_int
- \seq_map_inline:Nn
- \g_@@_renderers_seq
- {
- \@@_with_various_cases:nn
- { ##1 }
- {
- \regex_match:NnT
- \l_tmpa_regex
- { ####1 }
- {
- \@@_renderer_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g_@@_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpb_tl
- \l_@@_renderer_definition_tl
- \int_incr:N
- \l_tmpa_int
- \@@_with_various_cases_break:
- }
- }
- }
- \int_compare:nNnT
- { \l_tmpa_int } = { 0 }
- {
- \msg_error:nnV
- { markdown }
- { nonmatched-renderer-wildcard }
- \l_keys_key_str
- }
- }
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer }
- \l_keys_key_str
- }
- },
- }
-\msg_new:nnn
- { markdown }
- { undefined-renderer }
- {
- Renderer~#1~is~undefined.
- }
-\msg_new:nnn
- { markdown }
- { nonmatched-renderer-wildcard }
- {
- Wildcard~#1~matches~no~renderers.
- }
-\cs_generate_variant:Nn
- \regex_set:Nn
- { NV }
-\cs_generate_variant:Nn
- \cs_generate_from_arg_count:NNnn
- { cNVV }
-\cs_generate_variant:Nn
- \msg_error:nnn
- { nnV }
-\prg_generate_conditional_variant:Nnn
- \regex_match:nn
- { nV }
- { TF }
-\ExplSyntaxOff
-% \end{macrocode}
-% \begin{markdown}
-%
-%#### Plain \TeX{} Markdown Token Renderer Prototypes {#latex-renderer-prototypes}
-%
-% The \LaTeX{} interface recognizes an option with the
-% `rendererPrototypes` key, whose value must be a list of key-values,
-% where the keys correspond to the markdown token renderer prototype
-% macros exposed by the plain \TeX{} interface (see Section
-% <#sec:texrendererprototypes>) and the values are new definitions of
-% these token renderer prototypes.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\cs_new:Nn \@@_latex_define_renderer_prototypes:
- {
- \seq_map_function:NN
- \g_@@_renderers_seq
- \@@_latex_define_renderer_prototype:n
- }
-\cs_new:Nn \@@_latex_define_renderer_prototype:n
- {
- \@@_renderer_prototype_tl_to_csname:nN
- { #1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g_@@_renderer_arities_prop
- { #1 }
- \l_tmpb_tl
- \@@_latex_define_renderer_prototype:ncV
- { #1 }
- { \l_tmpa_tl }
- \l_tmpb_tl
- }
-\cs_new:Nn \@@_latex_define_renderer_prototype:nNn
- {
- \@@_with_various_cases:nn
- { #1 }
- {
- \keys_define:nn
- { markdown/latex-options/renderer-prototypes }
- {
- ##1 .code:n = {
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ####1 }
- },
- }
- }
- }
-\cs_generate_variant:Nn
- \@@_latex_define_renderer_prototype:nNn
- { ncV }
-\ExplSyntaxOff
+}
% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The following example \LaTeX{} code showcases a possible configuration of the
-% `\markdownRendererImagePrototype` and `\markdownRendererCodeSpanPrototype`
-% markdown token renderer prototypes.
-% ``` tex
-% \markdownSetup{
-% rendererPrototypes = {
-% image = {\includegraphics{#2}},
-% codeSpan = {\texttt{#1}}, \% Render inline code via `\texttt`.
-% }
-% }
-% ```````
-%
-% In addition to exact token renderer prototype names, we also support
-% wildcards that match multiple token renderer prototype names.
-%
-% \end{markdown}
+% \iffalse
+%</latex>
+%<*themes-witiko-markdown-defaults-latex>
+% \fi
% \begin{macrocode}
-\ExplSyntaxOn
-\tl_new:N
- \l_@@_renderer_prototype_definition_tl
-\keys_define:nn
- { markdown/latex-options/renderer-prototypes }
- {
- unknown .code:n = {
- \regex_match:nVTF
- { \* }
- \l_keys_key_str
- {
- \tl_set:Nn
- \l_@@_renderer_prototype_definition_tl
- { #1 }
- \tl_set:NV
- \l_tmpa_tl
- \l_keys_key_str
- \regex_replace_all:nnN
- { \* }
- { .* }
- \l_tmpa_tl
- \regex_set:NV
- \l_tmpa_regex
- \l_tmpa_tl
- \int_zero:N
- \l_tmpa_int
- \seq_map_inline:Nn
- \g_@@_renderers_seq
- {
- \@@_with_various_cases:nn
- { ##1 }
- {
- \regex_match:NnT
- \l_tmpa_regex
- { ####1 }
- {
- \@@_renderer_prototype_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g_@@_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpb_tl
- \l_@@_renderer_prototype_definition_tl
- \int_incr:N
- \l_tmpa_int
- \@@_with_various_cases_break:
- }
- }
- }
- \int_compare:nNnT
- { \l_tmpa_int } = { 0 }
- {
- \msg_error:nnV
- { markdown }
- { nonmatched-renderer-prototype-wildcard }
- \l_keys_key_str
- }
- }
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer-prototype }
- \l_keys_key_str
- }
- },
- }
-\msg_new:nnn
- { markdown }
- { undefined-renderer-prototype }
- {
- Renderer~prototype~#1~is~undefined.
- }
-\msg_new:nnn
- { markdown }
- { nonmatched-renderer-prototype-wildcard }
- {
- Wildcard~#1~matches~no~renderer~prototypes.
- }
-\cs_generate_variant:Nn
- \regex_set:Nn
- { NV }
-\cs_generate_variant:Nn
- \cs_generate_from_arg_count:NNnn
- { cNVV }
-\cs_generate_variant:Nn
- \msg_error:nnn
- { nnV }
-\prg_generate_conditional_variant:Nnn
- \regex_match:nn
- { nV }
- { TF }
-\ExplSyntaxOff
+\ProvidesPackage{markdownthemewitiko_markdown_defaults}[2024/01/03]%
% \end{macrocode}
-% \begin{markdown}
-%
% \iffalse
-%</latex>
+%</themes-witiko-markdown-defaults-latex>
%<*context>
% \fi
+% \par
+% \begin{markdown}
+%
+% Please, see Section <#sec:latex-themes-implementation> for implementation
+% details of the built-in \LaTeX{} themes.
%
% \Hologo{ConTeXt} Interface {#contextinterface}
%----------------------------
%
+% \end{markdown}
% \iffalse
%</context>
%<*manual-interfaces>
@@ -20297,7 +21658,7 @@ following content:
$\sqrt{-1}$ *equals* $i$.
\stopmarkdown
-\setupmarkdown[hybrid = yes]
+\setupmarkdown[texmathdollars = yes]
\startmarkdown
$\sqrt{-1}$ *equals* $i$.
\stopmarkdown
@@ -20306,7 +21667,7 @@ $\sqrt{-1}$ *equals* $i$.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-context document.tex
+context --luatex document.tex
``````
A PDF document named `document.pdf` should be produced and contain the
following text:
@@ -20320,6 +21681,30 @@ following text:
%</manual-interfaces>
%<*context>
% \fi
+% \begin{markdown}
+%
+% To determine whether \Hologo{ConTeXt} is the top layer or if there are other
+% layers above \Hologo{ConTeXt}, we take a look on whether the
+% \mref{c_@@_top_layer_tl} token list has already been defined. If not,
+% we will assume that \Hologo{ConTeXt} is the top layer.
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\tl_const:Nn \c_@@_option_layer_context_tl { context }
+\cs_generate_variant:Nn
+ \tl_const:Nn
+ { NV }
+\tl_if_exist:NF
+ \c_@@_top_layer_tl
+ {
+ \tl_const:NV
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_context_tl
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+% \begin{markdown}
%
% The \Hologo{ConTeXt} interface provides a start-stop macro pair for the
% typesetting of markdown input from within \Hologo{ConTeXt} and facilities for
@@ -20331,19 +21716,6 @@ following text:
% \begin{macrocode}
\writestatus{loading}{ConTeXt User Module / markdown}%
\startmodule[markdown]
-\unprotect
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The \Hologo{ConTeXt} implementation redefines the plain \TeX{} logging macros
-% (see Section <#sec:tex-interface-logging>) to use the \Hologo{ConTeXt}
-% `\writestatus` macro.
-%
-% \end{markdown}
-% \begin{macrocode}
-\def\markdownInfo#1{\writestatus{markdown}{#1.}}%
-\def\markdownWarning#1{\writestatus{markdown\space warn}{#1.}}%
\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
\do\#\do\^\do\_\do\%\do\~}%
\input markdown/markdown
@@ -20362,7 +21734,7 @@ following text:
%### Typesetting Markdown
% The interface exposes the \mdef{startmarkdown} and \mdef{stopmarkdown} macro
% pair for the typesetting of a markdown document fragment, and defines the
-% \mdef{inputmarkdown} command.
+% \mdef{inputmarkdown} macro.
%
% \end{markdown}
% \begin{macrocode}
@@ -20423,21 +21795,16 @@ following text:
% \TeX{} interface (see Section <#sec:tex-options>).
%
% The \Hologo{ConTeXt} options may be specified when using the
-% \mref{inputmarkdown} macro (see Section <#sec:contextinterface>), or via the
-% \mdef{setupmarkdown} macro. The \mref{setupmarkdown} macro receives the
-% options to set up as its only argument:
+% \mref{inputmarkdown} macro (see Section <#sec:contextinterface>),
+% via the \mref{markdownSetup} macro, or via the \mdef{setupmarkdown}`[#1]`
+% macro, which is an alias for \mref{markdownSetup}`{#1}`.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
-\cs_new:Nn
- \@@_setup:n
- {
- \keys_set:nn
- { markdown/context-options }
- { #1 }
- }
-\long\def\setupmarkdown[#1]
+\cs_new:Npn
+ \setupmarkdown
+ [ #1 ]
{
\@@_setup:n
{ #1 }
@@ -20446,51 +21813,14 @@ following text:
% \end{macrocode}
% \begin{markdown}
%
-%#### \Hologo{ConTeXt} Interface Options
-% We define the \meta{key}`=`\meta{value} interface for all option macros
-% recognized by the Lua and plain \TeX{} interfaces.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\cs_new:Nn \@@_context_define_option_commands_and_keyvals:
- {
- \seq_map_inline:Nn
- \g_@@_option_layers_seq
- {
- \seq_map_inline:cn
- { g_@@_ ##1 _options_seq }
- {
-% \end{macrocode}
-% \begin{markdown}
-%
-% To make it easier to copy-and-paste options from Pandoc [@macfarlane22] such
-% as `fancy_lists`, `header_attributes`, and `pipe_tables`, we accept
-% snake\\\_case in addition to camelCase variants of options. As a bonus,
-% studies [@sharif10] also show that snake\\\_case is faster to read than
-% camelCase.
-%
-% \end{markdown}
-% \begin{macrocode}
- \@@_with_various_cases:nn
- { ####1 }
- {
- \@@_context_define_option_keyval:nnn
- { ##1 }
- { ####1 }
- { ########1 }
- }
- }
- }
- }
-% \end{macrocode}
-% \begin{markdown}
+%#### Generating Plain \TeX{} Option Macros and Key-Values
%
-% Furthermore, we also accept caseless variants of options in line with the
-% style of \Hologo{ConTeXt}.
+% Unlike plain \TeX{}, we also accept caseless variants of options
+% in line with the style of \Hologo{ConTeXt}.
%
% \end{markdown}
% \begin{macrocode}
+\ExplSyntaxOn
\cs_new:Nn \@@_caseless:N
{
\regex_replace_all:nnN
@@ -20502,52 +21832,89 @@ following text:
{ #1 }
}
\seq_gput_right:Nn \g_@@_cases_seq { @@_caseless:N }
-\cs_new:Nn \@@_context_define_option_keyval:nnn
+% \end{macrocode}
+% \begin{markdown}
+%
+% If \Hologo{ConTeXt} is the top layer, we use the
+% \mref{@@_define_option_commands_and_keyvals:}, \mref{@@_define_renderers:},
+% and \mref{@@_define_renderer_prototypes:} macro to define plain \TeX{}
+% option, token renderer, and token renderer prototype macros and key-values
+% immediately. Otherwise, we postpone the definition until the upper layers
+% have been loaded.
+%
+% \end{markdown}
+% \begin{macrocode}
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_context_tl
{
- \prop_get:cnN
- { g_@@_ #1 _option_types_prop }
- { #2 }
- \l_tmpa_tl
- \keys_define:nn
- { markdown/context-options }
- {
- #3 .code:n = {
- \tl_set:Nx
- \l_tmpa_tl
- {
- \str_case:nnF
- { ##1 }
- {
- { yes } { true }
- { no } { false }
- }
- { ##1 }
- }
- \@@_set_option_value:nV
- { #2 }
- \l_tmpa_tl
- },
- }
- \str_if_eq:VVT
- \l_tmpa_tl
- \c_@@_option_type_boolean_tl
- {
- \keys_define:nn
- { markdown/context-options }
- {
- #3 .default:n = { true },
- }
- }
+ \@@_define_option_commands_and_keyvals:
+ \@@_define_renderers:
+ \@@_define_renderer_prototypes:
}
-\cs_generate_variant:Nn
- \@@_set_option_value:nn
- { nV }
-\@@_context_define_option_commands_and_keyvals:
\ExplSyntaxOff
% \end{macrocode}
-% \par
+% \iffalse
+%</context>
+%<*manual-options>
+% \fi
+% \begin{markdown}
+
+### Themes
+
+% In Section~\ref{sec:themes}, we described the concept of themes.
+In \Hologo{ConTeXt}, we expand on the concept of
+% themes\iffalse
+[themes](#themes)
+% \fi
+by allowing a theme to be a full-blown \Hologo{ConTeXt} module. Specifically,
+the key-values `theme`=\meta{theme name} and `import`=\meta{theme name} load a
+\Hologo{ConTeXt} module named `t-markdowntheme`\meta{munged theme name}`.tex`
+if it exists and a \TeX{} document named `markdowntheme`\meta{munged theme
+name}`.tex` otherwise.
+
+Having the Markdown package automatically load either the generic `.tex`
+*theme file* or the \Hologo{ConTeXt}-specific `t-*.tex` theme file allows
+developers to have a single *theme file*, when the theme is small or the
+difference between \TeX{} formats is unimportant, and scale up to separate
+theme files native to different \TeX{} formats for large multi-format themes,
+where different code is needed for different \TeX{} formats. To enable code
+reuse, developers can load the `.tex` theme file from the `t-*.tex` theme file
+using the \mref{markdownLoadPlainTeXTheme} macro.
+
+For example, to load a theme named `witiko/tilde` in your document:
+
+``` tex
+\usemodule[t][markdown]
+\setupmarkdown[import=witiko/tilde]
+```````
+
+Built-in \Hologo{ConTeXt} themes provided with the Markdown package include:
+
+\pkg{witiko/markdown/defaults}
+
+: A \Hologo{ConTeXt} theme with the default definitions of token renderer
+ prototypes for plain \TeX{}. This theme is loaded automatically together
+ with the package and explicitly loading it has no effect.
+
+% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*themes-witiko-markdown-defaults-context>
+% \fi
+% \begin{macrocode}
+\startmodule[markdownthemewitiko_markdown_defaults]
+\unprotect
+% \end{macrocode}
+% \iffalse
+%</themes-witiko-markdown-defaults-context>
+%<*manual-options>
+% \fi
% \begin{markdown}
%
+% Please, see Section <#sec:context-themes-implementation> for implementation
+% details of the built-in \Hologo{ConTeXt} themes.
+%
% Implementation {#implementation}
%================
%
@@ -20564,7 +21931,7 @@ following text:
%
% \end{markdown}
% \iffalse
-%</context>
+%</manual-options>
%<*lua>
% \fi
% \begin{markdown}
@@ -20587,9 +21954,9 @@ following text:
% \begin{macrocode}
local upper, format, length =
string.upper, string.format, string.len
-local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, any =
+local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, Cp, any =
lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cg, lpeg.Cb,
- lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.P(1)
+ lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.Cp, lpeg.P(1)
% \end{macrocode}
% \par
% \begin{markdown}
@@ -20949,13 +22316,13 @@ local character_entities = {
["Tab"] = 9,
["NewLine"] = 10,
["excl"] = 33,
- ["quot"] = 34,
["QUOT"] = 34,
+ ["quot"] = 34,
["num"] = 35,
["dollar"] = 36,
["percnt"] = 37,
- ["amp"] = 38,
["AMP"] = 38,
+ ["amp"] = 38,
["apos"] = 39,
["lpar"] = 40,
["rpar"] = 41,
@@ -20967,31 +22334,36 @@ local character_entities = {
["sol"] = 47,
["colon"] = 58,
["semi"] = 59,
- ["lt"] = 60,
["LT"] = 60,
+ ["lt"] = 60,
+ ["nvlt"] = {60, 8402},
+ ["bne"] = {61, 8421},
["equals"] = 61,
- ["gt"] = 62,
["GT"] = 62,
+ ["gt"] = 62,
+ ["nvgt"] = {62, 8402},
["quest"] = 63,
["commat"] = 64,
- ["lsqb"] = 91,
["lbrack"] = 91,
+ ["lsqb"] = 91,
["bsol"] = 92,
- ["rsqb"] = 93,
["rbrack"] = 93,
+ ["rsqb"] = 93,
["Hat"] = 94,
+ ["UnderBar"] = 95,
["lowbar"] = 95,
- ["grave"] = 96,
["DiacriticalGrave"] = 96,
- ["lcub"] = 123,
+ ["grave"] = 96,
+ ["fjlig"] = {102, 106},
["lbrace"] = 123,
+ ["lcub"] = 123,
+ ["VerticalLine"] = 124,
["verbar"] = 124,
["vert"] = 124,
- ["VerticalLine"] = 124,
- ["rcub"] = 125,
["rbrace"] = 125,
- ["nbsp"] = 160,
+ ["rcub"] = 125,
["NonBreakingSpace"] = 160,
+ ["nbsp"] = 160,
["iexcl"] = 161,
["cent"] = 162,
["pound"] = 163,
@@ -21000,36 +22372,35 @@ local character_entities = {
["brvbar"] = 166,
["sect"] = 167,
["Dot"] = 168,
- ["die"] = 168,
["DoubleDot"] = 168,
+ ["die"] = 168,
["uml"] = 168,
- ["copy"] = 169,
["COPY"] = 169,
+ ["copy"] = 169,
["ordf"] = 170,
["laquo"] = 171,
["not"] = 172,
["shy"] = 173,
- ["reg"] = 174,
- ["circledR"] = 174,
["REG"] = 174,
+ ["circledR"] = 174,
+ ["reg"] = 174,
["macr"] = 175,
- ["OverBar"] = 175,
["strns"] = 175,
["deg"] = 176,
+ ["PlusMinus"] = 177,
["plusmn"] = 177,
["pm"] = 177,
- ["PlusMinus"] = 177,
["sup2"] = 178,
["sup3"] = 179,
- ["acute"] = 180,
["DiacriticalAcute"] = 180,
+ ["acute"] = 180,
["micro"] = 181,
["para"] = 182,
- ["middot"] = 183,
- ["centerdot"] = 183,
["CenterDot"] = 183,
- ["cedil"] = 184,
+ ["centerdot"] = 183,
+ ["middot"] = 183,
["Cedilla"] = 184,
+ ["cedil"] = 184,
["sup1"] = 185,
["ordm"] = 186,
["raquo"] = 187,
@@ -21044,6 +22415,7 @@ local character_entities = {
["Atilde"] = 195,
["Auml"] = 196,
["Aring"] = 197,
+ ["angst"] = 197,
["AElig"] = 198,
["Ccedil"] = 199,
["Egrave"] = 200,
@@ -21093,8 +22465,8 @@ local character_entities = {
["ocirc"] = 244,
["otilde"] = 245,
["ouml"] = 246,
- ["divide"] = 247,
["div"] = 247,
+ ["divide"] = 247,
["oslash"] = 248,
["ugrave"] = 249,
["uacute"] = 250,
@@ -21229,20 +22601,19 @@ local character_entities = {
["gacute"] = 501,
["jmath"] = 567,
["circ"] = 710,
- ["caron"] = 711,
["Hacek"] = 711,
- ["breve"] = 728,
+ ["caron"] = 711,
["Breve"] = 728,
- ["dot"] = 729,
+ ["breve"] = 728,
["DiacriticalDot"] = 729,
+ ["dot"] = 729,
["ring"] = 730,
["ogon"] = 731,
- ["tilde"] = 732,
["DiacriticalTilde"] = 732,
- ["dblac"] = 733,
+ ["tilde"] = 732,
["DiacriticalDoubleAcute"] = 733,
+ ["dblac"] = 733,
["DownBreve"] = 785,
- ["UnderBar"] = 818,
["Alpha"] = 913,
["Beta"] = 914,
["Gamma"] = 915,
@@ -21267,12 +22638,12 @@ local character_entities = {
["Chi"] = 935,
["Psi"] = 936,
["Omega"] = 937,
+ ["ohm"] = 937,
["alpha"] = 945,
["beta"] = 946,
["gamma"] = 947,
["delta"] = 948,
- ["epsiv"] = 949,
- ["varepsilon"] = 949,
+ ["epsi"] = 949,
["epsilon"] = 949,
["zeta"] = 950,
["eta"] = 951,
@@ -21286,38 +22657,39 @@ local character_entities = {
["omicron"] = 959,
["pi"] = 960,
["rho"] = 961,
+ ["sigmaf"] = 962,
["sigmav"] = 962,
["varsigma"] = 962,
- ["sigmaf"] = 962,
["sigma"] = 963,
["tau"] = 964,
["upsi"] = 965,
["upsilon"] = 965,
["phi"] = 966,
- ["phiv"] = 966,
- ["varphi"] = 966,
["chi"] = 967,
["psi"] = 968,
["omega"] = 969,
+ ["thetasym"] = 977,
["thetav"] = 977,
["vartheta"] = 977,
- ["thetasym"] = 977,
["Upsi"] = 978,
["upsih"] = 978,
+ ["phiv"] = 981,
["straightphi"] = 981,
+ ["varphi"] = 981,
["piv"] = 982,
["varpi"] = 982,
["Gammad"] = 988,
- ["gammad"] = 989,
["digamma"] = 989,
+ ["gammad"] = 989,
["kappav"] = 1008,
["varkappa"] = 1008,
["rhov"] = 1009,
["varrho"] = 1009,
- ["epsi"] = 1013,
+ ["epsiv"] = 1013,
["straightepsilon"] = 1013,
- ["bepsi"] = 1014,
+ ["varepsilon"] = 1013,
["backepsilon"] = 1014,
+ ["bepsi"] = 1014,
["IOcy"] = 1025,
["DJcy"] = 1026,
["GJcy"] = 1027,
@@ -21416,40 +22788,40 @@ local character_entities = {
["emsp14"] = 8197,
["numsp"] = 8199,
["puncsp"] = 8200,
- ["thinsp"] = 8201,
["ThinSpace"] = 8201,
- ["hairsp"] = 8202,
+ ["thinsp"] = 8201,
["VeryThinSpace"] = 8202,
- ["ZeroWidthSpace"] = 8203,
- ["NegativeVeryThinSpace"] = 8203,
- ["NegativeThinSpace"] = 8203,
+ ["hairsp"] = 8202,
["NegativeMediumSpace"] = 8203,
["NegativeThickSpace"] = 8203,
+ ["NegativeThinSpace"] = 8203,
+ ["NegativeVeryThinSpace"] = 8203,
+ ["ZeroWidthSpace"] = 8203,
["zwnj"] = 8204,
["zwj"] = 8205,
["lrm"] = 8206,
["rlm"] = 8207,
- ["hyphen"] = 8208,
["dash"] = 8208,
+ ["hyphen"] = 8208,
["ndash"] = 8211,
["mdash"] = 8212,
["horbar"] = 8213,
["Verbar"] = 8214,
["Vert"] = 8214,
- ["lsquo"] = 8216,
["OpenCurlyQuote"] = 8216,
+ ["lsquo"] = 8216,
+ ["CloseCurlyQuote"] = 8217,
["rsquo"] = 8217,
["rsquor"] = 8217,
- ["CloseCurlyQuote"] = 8217,
["lsquor"] = 8218,
["sbquo"] = 8218,
- ["ldquo"] = 8220,
["OpenCurlyDoubleQuote"] = 8220,
+ ["ldquo"] = 8220,
+ ["CloseCurlyDoubleQuote"] = 8221,
["rdquo"] = 8221,
["rdquor"] = 8221,
- ["CloseCurlyDoubleQuote"] = 8221,
- ["ldquor"] = 8222,
["bdquo"] = 8222,
+ ["ldquor"] = 8222,
["dagger"] = 8224,
["Dagger"] = 8225,
["ddagger"] = 8225,
@@ -21463,10 +22835,11 @@ local character_entities = {
["prime"] = 8242,
["Prime"] = 8243,
["tprime"] = 8244,
- ["bprime"] = 8245,
["backprime"] = 8245,
+ ["bprime"] = 8245,
["lsaquo"] = 8249,
["rsaquo"] = 8250,
+ ["OverBar"] = 8254,
["oline"] = 8254,
["caret"] = 8257,
["hybull"] = 8259,
@@ -21474,6 +22847,7 @@ local character_entities = {
["bsemi"] = 8271,
["qprime"] = 8279,
["MediumSpace"] = 8287,
+ ["ThickSpace"] = {8287, 8202},
["NoBreak"] = 8288,
["ApplyFunction"] = 8289,
["af"] = 8289,
@@ -21482,34 +22856,34 @@ local character_entities = {
["InvisibleComma"] = 8291,
["ic"] = 8291,
["euro"] = 8364,
- ["tdot"] = 8411,
["TripleDot"] = 8411,
+ ["tdot"] = 8411,
["DotDot"] = 8412,
["Copf"] = 8450,
["complexes"] = 8450,
["incare"] = 8453,
["gscr"] = 8458,
- ["hamilt"] = 8459,
["HilbertSpace"] = 8459,
["Hscr"] = 8459,
+ ["hamilt"] = 8459,
["Hfr"] = 8460,
["Poincareplane"] = 8460,
- ["quaternions"] = 8461,
["Hopf"] = 8461,
+ ["quaternions"] = 8461,
["planckh"] = 8462,
- ["planck"] = 8463,
["hbar"] = 8463,
- ["plankv"] = 8463,
["hslash"] = 8463,
+ ["planck"] = 8463,
+ ["plankv"] = 8463,
["Iscr"] = 8464,
["imagline"] = 8464,
- ["image"] = 8465,
+ ["Ifr"] = 8465,
["Im"] = 8465,
+ ["image"] = 8465,
["imagpart"] = 8465,
- ["Ifr"] = 8465,
+ ["Laplacetrf"] = 8466,
["Lscr"] = 8466,
["lagran"] = 8466,
- ["Laplacetrf"] = 8466,
["ell"] = 8467,
["Nopf"] = 8469,
["naturals"] = 8469,
@@ -21519,40 +22893,38 @@ local character_entities = {
["wp"] = 8472,
["Popf"] = 8473,
["primes"] = 8473,
- ["rationals"] = 8474,
["Qopf"] = 8474,
+ ["rationals"] = 8474,
["Rscr"] = 8475,
["realine"] = 8475,
- ["real"] = 8476,
["Re"] = 8476,
- ["realpart"] = 8476,
["Rfr"] = 8476,
- ["reals"] = 8477,
+ ["real"] = 8476,
+ ["realpart"] = 8476,
["Ropf"] = 8477,
+ ["reals"] = 8477,
["rx"] = 8478,
- ["trade"] = 8482,
["TRADE"] = 8482,
- ["integers"] = 8484,
+ ["trade"] = 8482,
["Zopf"] = 8484,
- ["ohm"] = 8486,
+ ["integers"] = 8484,
["mho"] = 8487,
["Zfr"] = 8488,
["zeetrf"] = 8488,
["iiota"] = 8489,
- ["angst"] = 8491,
- ["bernou"] = 8492,
["Bernoullis"] = 8492,
["Bscr"] = 8492,
- ["Cfr"] = 8493,
+ ["bernou"] = 8492,
["Cayleys"] = 8493,
+ ["Cfr"] = 8493,
["escr"] = 8495,
["Escr"] = 8496,
["expectation"] = 8496,
- ["Fscr"] = 8497,
["Fouriertrf"] = 8497,
- ["phmmat"] = 8499,
+ ["Fscr"] = 8497,
["Mellintrf"] = 8499,
["Mscr"] = 8499,
+ ["phmmat"] = 8499,
["order"] = 8500,
["orderof"] = 8500,
["oscr"] = 8500,
@@ -21566,8 +22938,8 @@ local character_entities = {
["DifferentialD"] = 8518,
["dd"] = 8518,
["ExponentialE"] = 8519,
- ["exponentiale"] = 8519,
["ee"] = 8519,
+ ["exponentiale"] = 8519,
["ImaginaryI"] = 8520,
["ii"] = 8520,
["frac13"] = 8531,
@@ -21582,46 +22954,47 @@ local character_entities = {
["frac38"] = 8540,
["frac58"] = 8541,
["frac78"] = 8542,
+ ["LeftArrow"] = 8592,
+ ["ShortLeftArrow"] = 8592,
["larr"] = 8592,
["leftarrow"] = 8592,
- ["LeftArrow"] = 8592,
["slarr"] = 8592,
- ["ShortLeftArrow"] = 8592,
+ ["ShortUpArrow"] = 8593,
+ ["UpArrow"] = 8593,
["uarr"] = 8593,
["uparrow"] = 8593,
- ["UpArrow"] = 8593,
- ["ShortUpArrow"] = 8593,
+ ["RightArrow"] = 8594,
+ ["ShortRightArrow"] = 8594,
["rarr"] = 8594,
["rightarrow"] = 8594,
- ["RightArrow"] = 8594,
["srarr"] = 8594,
- ["ShortRightArrow"] = 8594,
- ["darr"] = 8595,
- ["downarrow"] = 8595,
["DownArrow"] = 8595,
["ShortDownArrow"] = 8595,
+ ["darr"] = 8595,
+ ["downarrow"] = 8595,
+ ["LeftRightArrow"] = 8596,
["harr"] = 8596,
["leftrightarrow"] = 8596,
- ["LeftRightArrow"] = 8596,
- ["varr"] = 8597,
- ["updownarrow"] = 8597,
["UpDownArrow"] = 8597,
- ["nwarr"] = 8598,
+ ["updownarrow"] = 8597,
+ ["varr"] = 8597,
["UpperLeftArrow"] = 8598,
+ ["nwarr"] = 8598,
["nwarrow"] = 8598,
- ["nearr"] = 8599,
["UpperRightArrow"] = 8599,
+ ["nearr"] = 8599,
["nearrow"] = 8599,
+ ["LowerRightArrow"] = 8600,
["searr"] = 8600,
["searrow"] = 8600,
- ["LowerRightArrow"] = 8600,
+ ["LowerLeftArrow"] = 8601,
["swarr"] = 8601,
["swarrow"] = 8601,
- ["LowerLeftArrow"] = 8601,
["nlarr"] = 8602,
["nleftarrow"] = 8602,
["nrarr"] = 8603,
["nrightarrow"] = 8603,
+ ["nrarrw"] = {8605, 824},
["rarrw"] = 8605,
["rightsquigarrow"] = 8605,
["Larr"] = 8606,
@@ -21638,27 +23011,27 @@ local character_entities = {
["mapstoleft"] = 8612,
["UpTeeArrow"] = 8613,
["mapstoup"] = 8613,
- ["map"] = 8614,
["RightTeeArrow"] = 8614,
+ ["map"] = 8614,
["mapsto"] = 8614,
["DownTeeArrow"] = 8615,
["mapstodown"] = 8615,
- ["larrhk"] = 8617,
["hookleftarrow"] = 8617,
- ["rarrhk"] = 8618,
+ ["larrhk"] = 8617,
["hookrightarrow"] = 8618,
+ ["rarrhk"] = 8618,
["larrlp"] = 8619,
["looparrowleft"] = 8619,
- ["rarrlp"] = 8620,
["looparrowright"] = 8620,
+ ["rarrlp"] = 8620,
["harrw"] = 8621,
["leftrightsquigarrow"] = 8621,
["nharr"] = 8622,
["nleftrightarrow"] = 8622,
- ["lsh"] = 8624,
["Lsh"] = 8624,
- ["rsh"] = 8625,
+ ["lsh"] = 8624,
["Rsh"] = 8625,
+ ["rsh"] = 8625,
["ldsh"] = 8626,
["rdsh"] = 8627,
["crarr"] = 8629,
@@ -21666,456 +23039,505 @@ local character_entities = {
["curvearrowleft"] = 8630,
["curarr"] = 8631,
["curvearrowright"] = 8631,
- ["olarr"] = 8634,
["circlearrowleft"] = 8634,
- ["orarr"] = 8635,
+ ["olarr"] = 8634,
["circlearrowright"] = 8635,
- ["lharu"] = 8636,
+ ["orarr"] = 8635,
["LeftVector"] = 8636,
["leftharpoonup"] = 8636,
- ["lhard"] = 8637,
- ["leftharpoondown"] = 8637,
+ ["lharu"] = 8636,
["DownLeftVector"] = 8637,
+ ["leftharpoondown"] = 8637,
+ ["lhard"] = 8637,
+ ["RightUpVector"] = 8638,
["uharr"] = 8638,
["upharpoonright"] = 8638,
- ["RightUpVector"] = 8638,
+ ["LeftUpVector"] = 8639,
["uharl"] = 8639,
["upharpoonleft"] = 8639,
- ["LeftUpVector"] = 8639,
- ["rharu"] = 8640,
["RightVector"] = 8640,
+ ["rharu"] = 8640,
["rightharpoonup"] = 8640,
+ ["DownRightVector"] = 8641,
["rhard"] = 8641,
["rightharpoondown"] = 8641,
- ["DownRightVector"] = 8641,
- ["dharr"] = 8642,
["RightDownVector"] = 8642,
+ ["dharr"] = 8642,
["downharpoonright"] = 8642,
- ["dharl"] = 8643,
["LeftDownVector"] = 8643,
+ ["dharl"] = 8643,
["downharpoonleft"] = 8643,
- ["rlarr"] = 8644,
- ["rightleftarrows"] = 8644,
["RightArrowLeftArrow"] = 8644,
- ["udarr"] = 8645,
+ ["rightleftarrows"] = 8644,
+ ["rlarr"] = 8644,
["UpArrowDownArrow"] = 8645,
- ["lrarr"] = 8646,
- ["leftrightarrows"] = 8646,
+ ["udarr"] = 8645,
["LeftArrowRightArrow"] = 8646,
- ["llarr"] = 8647,
+ ["leftrightarrows"] = 8646,
+ ["lrarr"] = 8646,
["leftleftarrows"] = 8647,
- ["uuarr"] = 8648,
+ ["llarr"] = 8647,
["upuparrows"] = 8648,
- ["rrarr"] = 8649,
+ ["uuarr"] = 8648,
["rightrightarrows"] = 8649,
+ ["rrarr"] = 8649,
["ddarr"] = 8650,
["downdownarrows"] = 8650,
- ["lrhar"] = 8651,
["ReverseEquilibrium"] = 8651,
["leftrightharpoons"] = 8651,
- ["rlhar"] = 8652,
- ["rightleftharpoons"] = 8652,
+ ["lrhar"] = 8651,
["Equilibrium"] = 8652,
- ["nlArr"] = 8653,
+ ["rightleftharpoons"] = 8652,
+ ["rlhar"] = 8652,
["nLeftarrow"] = 8653,
- ["nhArr"] = 8654,
+ ["nlArr"] = 8653,
["nLeftrightarrow"] = 8654,
- ["nrArr"] = 8655,
+ ["nhArr"] = 8654,
["nRightarrow"] = 8655,
- ["lArr"] = 8656,
- ["Leftarrow"] = 8656,
+ ["nrArr"] = 8655,
["DoubleLeftArrow"] = 8656,
- ["uArr"] = 8657,
- ["Uparrow"] = 8657,
+ ["Leftarrow"] = 8656,
+ ["lArr"] = 8656,
["DoubleUpArrow"] = 8657,
- ["rArr"] = 8658,
- ["Rightarrow"] = 8658,
- ["Implies"] = 8658,
+ ["Uparrow"] = 8657,
+ ["uArr"] = 8657,
["DoubleRightArrow"] = 8658,
- ["dArr"] = 8659,
- ["Downarrow"] = 8659,
+ ["Implies"] = 8658,
+ ["Rightarrow"] = 8658,
+ ["rArr"] = 8658,
["DoubleDownArrow"] = 8659,
- ["hArr"] = 8660,
- ["Leftrightarrow"] = 8660,
+ ["Downarrow"] = 8659,
+ ["dArr"] = 8659,
["DoubleLeftRightArrow"] = 8660,
+ ["Leftrightarrow"] = 8660,
+ ["hArr"] = 8660,
["iff"] = 8660,
- ["vArr"] = 8661,
- ["Updownarrow"] = 8661,
["DoubleUpDownArrow"] = 8661,
+ ["Updownarrow"] = 8661,
+ ["vArr"] = 8661,
["nwArr"] = 8662,
["neArr"] = 8663,
["seArr"] = 8664,
["swArr"] = 8665,
- ["lAarr"] = 8666,
["Lleftarrow"] = 8666,
- ["rAarr"] = 8667,
+ ["lAarr"] = 8666,
["Rrightarrow"] = 8667,
+ ["rAarr"] = 8667,
["zigrarr"] = 8669,
- ["larrb"] = 8676,
["LeftArrowBar"] = 8676,
- ["rarrb"] = 8677,
+ ["larrb"] = 8676,
["RightArrowBar"] = 8677,
- ["duarr"] = 8693,
+ ["rarrb"] = 8677,
["DownArrowUpArrow"] = 8693,
+ ["duarr"] = 8693,
["loarr"] = 8701,
["roarr"] = 8702,
["hoarr"] = 8703,
- ["forall"] = 8704,
["ForAll"] = 8704,
+ ["forall"] = 8704,
["comp"] = 8705,
["complement"] = 8705,
- ["part"] = 8706,
["PartialD"] = 8706,
- ["exist"] = 8707,
+ ["npart"] = {8706, 824},
+ ["part"] = 8706,
["Exists"] = 8707,
- ["nexist"] = 8708,
+ ["exist"] = 8707,
["NotExists"] = 8708,
+ ["nexist"] = 8708,
["nexists"] = 8708,
["empty"] = 8709,
["emptyset"] = 8709,
["emptyv"] = 8709,
["varnothing"] = 8709,
- ["nabla"] = 8711,
["Del"] = 8711,
- ["isin"] = 8712,
- ["isinv"] = 8712,
+ ["nabla"] = 8711,
["Element"] = 8712,
["in"] = 8712,
- ["notin"] = 8713,
+ ["isin"] = 8712,
+ ["isinv"] = 8712,
["NotElement"] = 8713,
+ ["notin"] = 8713,
["notinva"] = 8713,
- ["niv"] = 8715,
["ReverseElement"] = 8715,
- ["ni"] = 8715,
["SuchThat"] = 8715,
+ ["ni"] = 8715,
+ ["niv"] = 8715,
+ ["NotReverseElement"] = 8716,
["notni"] = 8716,
["notniva"] = 8716,
- ["NotReverseElement"] = 8716,
- ["prod"] = 8719,
["Product"] = 8719,
- ["coprod"] = 8720,
+ ["prod"] = 8719,
["Coproduct"] = 8720,
- ["sum"] = 8721,
+ ["coprod"] = 8720,
["Sum"] = 8721,
+ ["sum"] = 8721,
["minus"] = 8722,
+ ["MinusPlus"] = 8723,
["mnplus"] = 8723,
["mp"] = 8723,
- ["MinusPlus"] = 8723,
- ["plusdo"] = 8724,
["dotplus"] = 8724,
- ["setmn"] = 8726,
- ["setminus"] = 8726,
+ ["plusdo"] = 8724,
["Backslash"] = 8726,
- ["ssetmn"] = 8726,
+ ["setminus"] = 8726,
+ ["setmn"] = 8726,
["smallsetminus"] = 8726,
+ ["ssetmn"] = 8726,
["lowast"] = 8727,
- ["compfn"] = 8728,
["SmallCircle"] = 8728,
- ["radic"] = 8730,
+ ["compfn"] = 8728,
["Sqrt"] = 8730,
+ ["radic"] = 8730,
+ ["Proportional"] = 8733,
["prop"] = 8733,
["propto"] = 8733,
- ["Proportional"] = 8733,
- ["vprop"] = 8733,
["varpropto"] = 8733,
+ ["vprop"] = 8733,
["infin"] = 8734,
["angrt"] = 8735,
["ang"] = 8736,
["angle"] = 8736,
+ ["nang"] = {8736, 8402},
["angmsd"] = 8737,
["measuredangle"] = 8737,
["angsph"] = 8738,
- ["mid"] = 8739,
["VerticalBar"] = 8739,
- ["smid"] = 8739,
+ ["mid"] = 8739,
["shortmid"] = 8739,
- ["nmid"] = 8740,
+ ["smid"] = 8739,
["NotVerticalBar"] = 8740,
- ["nsmid"] = 8740,
+ ["nmid"] = 8740,
["nshortmid"] = 8740,
+ ["nsmid"] = 8740,
+ ["DoubleVerticalBar"] = 8741,
["par"] = 8741,
["parallel"] = 8741,
- ["DoubleVerticalBar"] = 8741,
- ["spar"] = 8741,
["shortparallel"] = 8741,
+ ["spar"] = 8741,
+ ["NotDoubleVerticalBar"] = 8742,
["npar"] = 8742,
["nparallel"] = 8742,
- ["NotDoubleVerticalBar"] = 8742,
- ["nspar"] = 8742,
["nshortparallel"] = 8742,
+ ["nspar"] = 8742,
["and"] = 8743,
["wedge"] = 8743,
["or"] = 8744,
["vee"] = 8744,
["cap"] = 8745,
+ ["caps"] = {8745, 65024},
["cup"] = 8746,
- ["int"] = 8747,
+ ["cups"] = {8746, 65024},
["Integral"] = 8747,
+ ["int"] = 8747,
["Int"] = 8748,
- ["tint"] = 8749,
["iiint"] = 8749,
+ ["tint"] = 8749,
+ ["ContourIntegral"] = 8750,
["conint"] = 8750,
["oint"] = 8750,
- ["ContourIntegral"] = 8750,
["Conint"] = 8751,
["DoubleContourIntegral"] = 8751,
["Cconint"] = 8752,
["cwint"] = 8753,
- ["cwconint"] = 8754,
["ClockwiseContourIntegral"] = 8754,
- ["awconint"] = 8755,
+ ["cwconint"] = 8754,
["CounterClockwiseContourIntegral"] = 8755,
+ ["awconint"] = 8755,
+ ["Therefore"] = 8756,
["there4"] = 8756,
["therefore"] = 8756,
- ["Therefore"] = 8756,
+ ["Because"] = 8757,
["becaus"] = 8757,
["because"] = 8757,
- ["Because"] = 8757,
["ratio"] = 8758,
["Colon"] = 8759,
["Proportion"] = 8759,
- ["minusd"] = 8760,
["dotminus"] = 8760,
+ ["minusd"] = 8760,
["mDDot"] = 8762,
["homtht"] = 8763,
- ["sim"] = 8764,
["Tilde"] = 8764,
- ["thksim"] = 8764,
+ ["nvsim"] = {8764, 8402},
+ ["sim"] = 8764,
["thicksim"] = 8764,
- ["bsim"] = 8765,
+ ["thksim"] = 8764,
["backsim"] = 8765,
+ ["bsim"] = 8765,
+ ["race"] = {8765, 817},
["ac"] = 8766,
+ ["acE"] = {8766, 819},
["mstpos"] = 8766,
["acd"] = 8767,
- ["wreath"] = 8768,
["VerticalTilde"] = 8768,
["wr"] = 8768,
- ["nsim"] = 8769,
+ ["wreath"] = 8768,
["NotTilde"] = 8769,
- ["esim"] = 8770,
+ ["nsim"] = 8769,
["EqualTilde"] = 8770,
+ ["NotEqualTilde"] = {8770, 824},
["eqsim"] = 8770,
- ["sime"] = 8771,
+ ["esim"] = 8770,
+ ["nesim"] = {8770, 824},
["TildeEqual"] = 8771,
+ ["sime"] = 8771,
["simeq"] = 8771,
+ ["NotTildeEqual"] = 8772,
["nsime"] = 8772,
["nsimeq"] = 8772,
- ["NotTildeEqual"] = 8772,
- ["cong"] = 8773,
["TildeFullEqual"] = 8773,
+ ["cong"] = 8773,
["simne"] = 8774,
- ["ncong"] = 8775,
["NotTildeFullEqual"] = 8775,
- ["asymp"] = 8776,
- ["ap"] = 8776,
+ ["ncong"] = 8775,
["TildeTilde"] = 8776,
+ ["ap"] = 8776,
["approx"] = 8776,
- ["thkap"] = 8776,
+ ["asymp"] = 8776,
["thickapprox"] = 8776,
- ["nap"] = 8777,
+ ["thkap"] = 8776,
["NotTildeTilde"] = 8777,
+ ["nap"] = 8777,
["napprox"] = 8777,
["ape"] = 8778,
["approxeq"] = 8778,
["apid"] = 8779,
- ["bcong"] = 8780,
+ ["napid"] = {8779, 824},
["backcong"] = 8780,
- ["asympeq"] = 8781,
+ ["bcong"] = 8780,
["CupCap"] = 8781,
- ["bump"] = 8782,
- ["HumpDownHump"] = 8782,
+ ["asympeq"] = 8781,
+ ["nvap"] = {8781, 8402},
["Bumpeq"] = 8782,
- ["bumpe"] = 8783,
+ ["HumpDownHump"] = 8782,
+ ["NotHumpDownHump"] = {8782, 824},
+ ["bump"] = 8782,
+ ["nbump"] = {8782, 824},
["HumpEqual"] = 8783,
+ ["NotHumpEqual"] = {8783, 824},
+ ["bumpe"] = 8783,
["bumpeq"] = 8783,
- ["esdot"] = 8784,
+ ["nbumpe"] = {8783, 824},
["DotEqual"] = 8784,
["doteq"] = 8784,
- ["eDot"] = 8785,
+ ["esdot"] = 8784,
+ ["nedot"] = {8784, 824},
["doteqdot"] = 8785,
+ ["eDot"] = 8785,
["efDot"] = 8786,
["fallingdotseq"] = 8786,
["erDot"] = 8787,
["risingdotseq"] = 8787,
+ ["Assign"] = 8788,
["colone"] = 8788,
["coloneq"] = 8788,
- ["Assign"] = 8788,
["ecolon"] = 8789,
["eqcolon"] = 8789,
["ecir"] = 8790,
["eqcirc"] = 8790,
- ["cire"] = 8791,
["circeq"] = 8791,
+ ["cire"] = 8791,
["wedgeq"] = 8793,
["veeeq"] = 8794,
- ["trie"] = 8796,
["triangleq"] = 8796,
+ ["trie"] = 8796,
["equest"] = 8799,
["questeq"] = 8799,
- ["ne"] = 8800,
["NotEqual"] = 8800,
- ["equiv"] = 8801,
+ ["ne"] = 8800,
["Congruent"] = 8801,
- ["nequiv"] = 8802,
+ ["bnequiv"] = {8801, 8421},
+ ["equiv"] = 8801,
["NotCongruent"] = 8802,
+ ["nequiv"] = 8802,
["le"] = 8804,
["leq"] = 8804,
- ["ge"] = 8805,
+ ["nvle"] = {8804, 8402},
["GreaterEqual"] = 8805,
+ ["ge"] = 8805,
["geq"] = 8805,
- ["lE"] = 8806,
+ ["nvge"] = {8805, 8402},
["LessFullEqual"] = 8806,
+ ["lE"] = 8806,
["leqq"] = 8806,
- ["gE"] = 8807,
+ ["nlE"] = {8806, 824},
+ ["nleqq"] = {8806, 824},
["GreaterFullEqual"] = 8807,
+ ["NotGreaterFullEqual"] = {8807, 824},
+ ["gE"] = 8807,
["geqq"] = 8807,
+ ["ngE"] = {8807, 824},
+ ["ngeqq"] = {8807, 824},
["lnE"] = 8808,
["lneqq"] = 8808,
+ ["lvertneqq"] = {8808, 65024},
+ ["lvnE"] = {8808, 65024},
["gnE"] = 8809,
["gneqq"] = 8809,
+ ["gvertneqq"] = {8809, 65024},
+ ["gvnE"] = {8809, 65024},
["Lt"] = 8810,
["NestedLessLess"] = 8810,
+ ["NotLessLess"] = {8810, 824},
["ll"] = 8810,
+ ["nLt"] = {8810, 8402},
+ ["nLtv"] = {8810, 824},
["Gt"] = 8811,
["NestedGreaterGreater"] = 8811,
+ ["NotGreaterGreater"] = {8811, 824},
["gg"] = 8811,
- ["twixt"] = 8812,
+ ["nGt"] = {8811, 8402},
+ ["nGtv"] = {8811, 824},
["between"] = 8812,
+ ["twixt"] = 8812,
["NotCupCap"] = 8813,
- ["nlt"] = 8814,
["NotLess"] = 8814,
["nless"] = 8814,
- ["ngt"] = 8815,
+ ["nlt"] = 8814,
["NotGreater"] = 8815,
+ ["ngt"] = 8815,
["ngtr"] = 8815,
- ["nle"] = 8816,
["NotLessEqual"] = 8816,
+ ["nle"] = 8816,
["nleq"] = 8816,
- ["nge"] = 8817,
["NotGreaterEqual"] = 8817,
+ ["nge"] = 8817,
["ngeq"] = 8817,
- ["lsim"] = 8818,
["LessTilde"] = 8818,
["lesssim"] = 8818,
+ ["lsim"] = 8818,
+ ["GreaterTilde"] = 8819,
["gsim"] = 8819,
["gtrsim"] = 8819,
- ["GreaterTilde"] = 8819,
- ["nlsim"] = 8820,
["NotLessTilde"] = 8820,
- ["ngsim"] = 8821,
+ ["nlsim"] = 8820,
["NotGreaterTilde"] = 8821,
- ["lg"] = 8822,
- ["lessgtr"] = 8822,
+ ["ngsim"] = 8821,
["LessGreater"] = 8822,
+ ["lessgtr"] = 8822,
+ ["lg"] = 8822,
+ ["GreaterLess"] = 8823,
["gl"] = 8823,
["gtrless"] = 8823,
- ["GreaterLess"] = 8823,
- ["ntlg"] = 8824,
["NotLessGreater"] = 8824,
- ["ntgl"] = 8825,
+ ["ntlg"] = 8824,
["NotGreaterLess"] = 8825,
- ["pr"] = 8826,
+ ["ntgl"] = 8825,
["Precedes"] = 8826,
+ ["pr"] = 8826,
["prec"] = 8826,
- ["sc"] = 8827,
["Succeeds"] = 8827,
+ ["sc"] = 8827,
["succ"] = 8827,
- ["prcue"] = 8828,
["PrecedesSlantEqual"] = 8828,
+ ["prcue"] = 8828,
["preccurlyeq"] = 8828,
- ["sccue"] = 8829,
["SucceedsSlantEqual"] = 8829,
+ ["sccue"] = 8829,
["succcurlyeq"] = 8829,
- ["prsim"] = 8830,
- ["precsim"] = 8830,
["PrecedesTilde"] = 8830,
+ ["precsim"] = 8830,
+ ["prsim"] = 8830,
+ ["NotSucceedsTilde"] = {8831, 824},
+ ["SucceedsTilde"] = 8831,
["scsim"] = 8831,
["succsim"] = 8831,
- ["SucceedsTilde"] = 8831,
+ ["NotPrecedes"] = 8832,
["npr"] = 8832,
["nprec"] = 8832,
- ["NotPrecedes"] = 8832,
+ ["NotSucceeds"] = 8833,
["nsc"] = 8833,
["nsucc"] = 8833,
- ["NotSucceeds"] = 8833,
+ ["NotSubset"] = {8834, 8402},
+ ["nsubset"] = {8834, 8402},
["sub"] = 8834,
["subset"] = 8834,
+ ["vnsub"] = {8834, 8402},
+ ["NotSuperset"] = {8835, 8402},
+ ["Superset"] = 8835,
+ ["nsupset"] = {8835, 8402},
["sup"] = 8835,
["supset"] = 8835,
- ["Superset"] = 8835,
+ ["vnsup"] = {8835, 8402},
["nsub"] = 8836,
["nsup"] = 8837,
- ["sube"] = 8838,
["SubsetEqual"] = 8838,
+ ["sube"] = 8838,
["subseteq"] = 8838,
+ ["SupersetEqual"] = 8839,
["supe"] = 8839,
["supseteq"] = 8839,
- ["SupersetEqual"] = 8839,
+ ["NotSubsetEqual"] = 8840,
["nsube"] = 8840,
["nsubseteq"] = 8840,
- ["NotSubsetEqual"] = 8840,
+ ["NotSupersetEqual"] = 8841,
["nsupe"] = 8841,
["nsupseteq"] = 8841,
- ["NotSupersetEqual"] = 8841,
["subne"] = 8842,
["subsetneq"] = 8842,
+ ["varsubsetneq"] = {8842, 65024},
+ ["vsubne"] = {8842, 65024},
["supne"] = 8843,
["supsetneq"] = 8843,
+ ["varsupsetneq"] = {8843, 65024},
+ ["vsupne"] = {8843, 65024},
["cupdot"] = 8845,
- ["uplus"] = 8846,
["UnionPlus"] = 8846,
- ["sqsub"] = 8847,
+ ["uplus"] = 8846,
+ ["NotSquareSubset"] = {8847, 824},
["SquareSubset"] = 8847,
+ ["sqsub"] = 8847,
["sqsubset"] = 8847,
- ["sqsup"] = 8848,
+ ["NotSquareSuperset"] = {8848, 824},
["SquareSuperset"] = 8848,
+ ["sqsup"] = 8848,
["sqsupset"] = 8848,
- ["sqsube"] = 8849,
["SquareSubsetEqual"] = 8849,
+ ["sqsube"] = 8849,
["sqsubseteq"] = 8849,
- ["sqsupe"] = 8850,
["SquareSupersetEqual"] = 8850,
+ ["sqsupe"] = 8850,
["sqsupseteq"] = 8850,
- ["sqcap"] = 8851,
["SquareIntersection"] = 8851,
- ["sqcup"] = 8852,
+ ["sqcap"] = 8851,
+ ["sqcaps"] = {8851, 65024},
["SquareUnion"] = 8852,
- ["oplus"] = 8853,
+ ["sqcup"] = 8852,
+ ["sqcups"] = {8852, 65024},
["CirclePlus"] = 8853,
- ["ominus"] = 8854,
+ ["oplus"] = 8853,
["CircleMinus"] = 8854,
- ["otimes"] = 8855,
+ ["ominus"] = 8854,
["CircleTimes"] = 8855,
+ ["otimes"] = 8855,
["osol"] = 8856,
- ["odot"] = 8857,
["CircleDot"] = 8857,
- ["ocir"] = 8858,
+ ["odot"] = 8857,
["circledcirc"] = 8858,
- ["oast"] = 8859,
+ ["ocir"] = 8858,
["circledast"] = 8859,
- ["odash"] = 8861,
+ ["oast"] = 8859,
["circleddash"] = 8861,
- ["plusb"] = 8862,
+ ["odash"] = 8861,
["boxplus"] = 8862,
- ["minusb"] = 8863,
+ ["plusb"] = 8862,
["boxminus"] = 8863,
- ["timesb"] = 8864,
+ ["minusb"] = 8863,
["boxtimes"] = 8864,
- ["sdotb"] = 8865,
+ ["timesb"] = 8864,
["dotsquare"] = 8865,
- ["vdash"] = 8866,
+ ["sdotb"] = 8865,
["RightTee"] = 8866,
- ["dashv"] = 8867,
+ ["vdash"] = 8866,
["LeftTee"] = 8867,
- ["top"] = 8868,
+ ["dashv"] = 8867,
["DownTee"] = 8868,
- ["bottom"] = 8869,
+ ["top"] = 8868,
+ ["UpTee"] = 8869,
["bot"] = 8869,
+ ["bottom"] = 8869,
["perp"] = 8869,
- ["UpTee"] = 8869,
["models"] = 8871,
- ["vDash"] = 8872,
["DoubleRightTee"] = 8872,
+ ["vDash"] = 8872,
["Vdash"] = 8873,
["Vvdash"] = 8874,
["VDash"] = 8875,
@@ -22124,22 +23546,24 @@ local character_entities = {
["nVdash"] = 8878,
["nVDash"] = 8879,
["prurel"] = 8880,
- ["vltri"] = 8882,
- ["vartriangleleft"] = 8882,
["LeftTriangle"] = 8882,
- ["vrtri"] = 8883,
- ["vartriangleright"] = 8883,
+ ["vartriangleleft"] = 8882,
+ ["vltri"] = 8882,
["RightTriangle"] = 8883,
+ ["vartriangleright"] = 8883,
+ ["vrtri"] = 8883,
+ ["LeftTriangleEqual"] = 8884,
["ltrie"] = 8884,
+ ["nvltrie"] = {8884, 8402},
["trianglelefteq"] = 8884,
- ["LeftTriangleEqual"] = 8884,
+ ["RightTriangleEqual"] = 8885,
+ ["nvrtrie"] = {8885, 8402},
["rtrie"] = 8885,
["trianglerighteq"] = 8885,
- ["RightTriangleEqual"] = 8885,
["origof"] = 8886,
["imof"] = 8887,
- ["mumap"] = 8888,
["multimap"] = 8888,
+ ["mumap"] = 8888,
["hercon"] = 8889,
["intcal"] = 8890,
["intercal"] = 8890,
@@ -22147,39 +23571,39 @@ local character_entities = {
["barvee"] = 8893,
["angrtvb"] = 8894,
["lrtri"] = 8895,
- ["xwedge"] = 8896,
["Wedge"] = 8896,
["bigwedge"] = 8896,
- ["xvee"] = 8897,
+ ["xwedge"] = 8896,
["Vee"] = 8897,
["bigvee"] = 8897,
- ["xcap"] = 8898,
+ ["xvee"] = 8897,
["Intersection"] = 8898,
["bigcap"] = 8898,
- ["xcup"] = 8899,
+ ["xcap"] = 8898,
["Union"] = 8899,
["bigcup"] = 8899,
+ ["xcup"] = 8899,
+ ["Diamond"] = 8900,
["diam"] = 8900,
["diamond"] = 8900,
- ["Diamond"] = 8900,
["sdot"] = 8901,
- ["sstarf"] = 8902,
["Star"] = 8902,
- ["divonx"] = 8903,
+ ["sstarf"] = 8902,
["divideontimes"] = 8903,
+ ["divonx"] = 8903,
["bowtie"] = 8904,
["ltimes"] = 8905,
["rtimes"] = 8906,
- ["lthree"] = 8907,
["leftthreetimes"] = 8907,
- ["rthree"] = 8908,
+ ["lthree"] = 8907,
["rightthreetimes"] = 8908,
- ["bsime"] = 8909,
+ ["rthree"] = 8908,
["backsimeq"] = 8909,
- ["cuvee"] = 8910,
+ ["bsime"] = 8909,
["curlyvee"] = 8910,
- ["cuwed"] = 8911,
+ ["cuvee"] = 8910,
["curlywedge"] = 8911,
+ ["cuwed"] = 8911,
["Sub"] = 8912,
["Subset"] = 8912,
["Sup"] = 8913,
@@ -22189,49 +23613,53 @@ local character_entities = {
["fork"] = 8916,
["pitchfork"] = 8916,
["epar"] = 8917,
- ["ltdot"] = 8918,
["lessdot"] = 8918,
+ ["ltdot"] = 8918,
["gtdot"] = 8919,
["gtrdot"] = 8919,
["Ll"] = 8920,
+ ["nLl"] = {8920, 824},
["Gg"] = 8921,
["ggg"] = 8921,
- ["leg"] = 8922,
+ ["nGg"] = {8921, 824},
["LessEqualGreater"] = 8922,
+ ["leg"] = 8922,
+ ["lesg"] = {8922, 65024},
["lesseqgtr"] = 8922,
+ ["GreaterEqualLess"] = 8923,
["gel"] = 8923,
+ ["gesl"] = {8923, 65024},
["gtreqless"] = 8923,
- ["GreaterEqualLess"] = 8923,
["cuepr"] = 8926,
["curlyeqprec"] = 8926,
["cuesc"] = 8927,
["curlyeqsucc"] = 8927,
- ["nprcue"] = 8928,
["NotPrecedesSlantEqual"] = 8928,
- ["nsccue"] = 8929,
+ ["nprcue"] = 8928,
["NotSucceedsSlantEqual"] = 8929,
- ["nsqsube"] = 8930,
+ ["nsccue"] = 8929,
["NotSquareSubsetEqual"] = 8930,
- ["nsqsupe"] = 8931,
+ ["nsqsube"] = 8930,
["NotSquareSupersetEqual"] = 8931,
+ ["nsqsupe"] = 8931,
["lnsim"] = 8934,
["gnsim"] = 8935,
- ["prnsim"] = 8936,
["precnsim"] = 8936,
+ ["prnsim"] = 8936,
["scnsim"] = 8937,
["succnsim"] = 8937,
+ ["NotLeftTriangle"] = 8938,
["nltri"] = 8938,
["ntriangleleft"] = 8938,
- ["NotLeftTriangle"] = 8938,
+ ["NotRightTriangle"] = 8939,
["nrtri"] = 8939,
["ntriangleright"] = 8939,
- ["NotRightTriangle"] = 8939,
+ ["NotLeftTriangleEqual"] = 8940,
["nltrie"] = 8940,
["ntrianglelefteq"] = 8940,
- ["NotLeftTriangleEqual"] = 8940,
+ ["NotRightTriangleEqual"] = 8941,
["nrtrie"] = 8941,
["ntrianglerighteq"] = 8941,
- ["NotRightTriangleEqual"] = 8941,
["vellip"] = 8942,
["ctdot"] = 8943,
["utdot"] = 8944,
@@ -22240,9 +23668,11 @@ local character_entities = {
["isinsv"] = 8947,
["isins"] = 8948,
["isindot"] = 8949,
+ ["notindot"] = {8949, 824},
["notinvc"] = 8950,
["notinvb"] = 8951,
["isinE"] = 8953,
+ ["notinE"] = {8953, 824},
["nisd"] = 8954,
["xnis"] = 8955,
["nis"] = 8956,
@@ -22252,14 +23682,14 @@ local character_entities = {
["barwedge"] = 8965,
["Barwed"] = 8966,
["doublebarwedge"] = 8966,
- ["lceil"] = 8968,
["LeftCeiling"] = 8968,
- ["rceil"] = 8969,
+ ["lceil"] = 8968,
["RightCeiling"] = 8969,
- ["lfloor"] = 8970,
+ ["rceil"] = 8969,
["LeftFloor"] = 8970,
- ["rfloor"] = 8971,
+ ["lfloor"] = 8970,
["RightFloor"] = 8971,
+ ["rfloor"] = 8971,
["drcrop"] = 8972,
["dlcrop"] = 8973,
["urcrop"] = 8974,
@@ -22291,10 +23721,10 @@ local character_entities = {
["lmoustache"] = 9136,
["rmoust"] = 9137,
["rmoustache"] = 9137,
- ["tbrk"] = 9140,
["OverBracket"] = 9140,
- ["bbrk"] = 9141,
+ ["tbrk"] = 9140,
["UnderBracket"] = 9141,
+ ["bbrk"] = 9141,
["bbrktbrk"] = 9142,
["OverParenthesis"] = 9180,
["UnderParenthesis"] = 9181,
@@ -22303,10 +23733,10 @@ local character_entities = {
["trpezium"] = 9186,
["elinters"] = 9191,
["blank"] = 9251,
- ["oS"] = 9416,
["circledS"] = 9416,
- ["boxh"] = 9472,
+ ["oS"] = 9416,
["HorizontalLine"] = 9472,
+ ["boxh"] = 9472,
["boxv"] = 9474,
["boxdr"] = 9484,
["boxdl"] = 9488,
@@ -22352,50 +23782,50 @@ local character_entities = {
["blk14"] = 9617,
["blk12"] = 9618,
["blk34"] = 9619,
+ ["Square"] = 9633,
["squ"] = 9633,
["square"] = 9633,
- ["Square"] = 9633,
- ["squf"] = 9642,
- ["squarf"] = 9642,
- ["blacksquare"] = 9642,
["FilledVerySmallSquare"] = 9642,
+ ["blacksquare"] = 9642,
+ ["squarf"] = 9642,
+ ["squf"] = 9642,
["EmptyVerySmallSquare"] = 9643,
["rect"] = 9645,
["marker"] = 9646,
["fltns"] = 9649,
- ["xutri"] = 9651,
["bigtriangleup"] = 9651,
- ["utrif"] = 9652,
+ ["xutri"] = 9651,
["blacktriangle"] = 9652,
- ["utri"] = 9653,
+ ["utrif"] = 9652,
["triangle"] = 9653,
- ["rtrif"] = 9656,
+ ["utri"] = 9653,
["blacktriangleright"] = 9656,
+ ["rtrif"] = 9656,
["rtri"] = 9657,
["triangleright"] = 9657,
- ["xdtri"] = 9661,
["bigtriangledown"] = 9661,
- ["dtrif"] = 9662,
+ ["xdtri"] = 9661,
["blacktriangledown"] = 9662,
+ ["dtrif"] = 9662,
["dtri"] = 9663,
["triangledown"] = 9663,
- ["ltrif"] = 9666,
["blacktriangleleft"] = 9666,
+ ["ltrif"] = 9666,
["ltri"] = 9667,
["triangleleft"] = 9667,
["loz"] = 9674,
["lozenge"] = 9674,
["cir"] = 9675,
["tridot"] = 9708,
- ["xcirc"] = 9711,
["bigcirc"] = 9711,
+ ["xcirc"] = 9711,
["ultri"] = 9720,
["urtri"] = 9721,
["lltri"] = 9722,
["EmptySmallSquare"] = 9723,
["FilledSmallSquare"] = 9724,
- ["starf"] = 9733,
["bigstar"] = 9733,
+ ["starf"] = 9733,
["star"] = 9734,
["phone"] = 9742,
["female"] = 9792,
@@ -22406,8 +23836,8 @@ local character_entities = {
["clubsuit"] = 9827,
["hearts"] = 9829,
["heartsuit"] = 9829,
- ["diams"] = 9830,
["diamondsuit"] = 9830,
+ ["diams"] = 9830,
["sung"] = 9834,
["flat"] = 9837,
["natur"] = 9838,
@@ -22422,51 +23852,53 @@ local character_entities = {
["VerticalSeparator"] = 10072,
["lbbrk"] = 10098,
["rbbrk"] = 10099,
- ["lobrk"] = 10214,
+ ["bsolhsub"] = 10184,
+ ["suphsol"] = 10185,
["LeftDoubleBracket"] = 10214,
- ["robrk"] = 10215,
+ ["lobrk"] = 10214,
["RightDoubleBracket"] = 10215,
- ["lang"] = 10216,
+ ["robrk"] = 10215,
["LeftAngleBracket"] = 10216,
+ ["lang"] = 10216,
["langle"] = 10216,
- ["rang"] = 10217,
["RightAngleBracket"] = 10217,
+ ["rang"] = 10217,
["rangle"] = 10217,
["Lang"] = 10218,
["Rang"] = 10219,
["loang"] = 10220,
["roang"] = 10221,
- ["xlarr"] = 10229,
- ["longleftarrow"] = 10229,
["LongLeftArrow"] = 10229,
- ["xrarr"] = 10230,
- ["longrightarrow"] = 10230,
+ ["longleftarrow"] = 10229,
+ ["xlarr"] = 10229,
["LongRightArrow"] = 10230,
- ["xharr"] = 10231,
- ["longleftrightarrow"] = 10231,
+ ["longrightarrow"] = 10230,
+ ["xrarr"] = 10230,
["LongLeftRightArrow"] = 10231,
- ["xlArr"] = 10232,
- ["Longleftarrow"] = 10232,
+ ["longleftrightarrow"] = 10231,
+ ["xharr"] = 10231,
["DoubleLongLeftArrow"] = 10232,
- ["xrArr"] = 10233,
- ["Longrightarrow"] = 10233,
+ ["Longleftarrow"] = 10232,
+ ["xlArr"] = 10232,
["DoubleLongRightArrow"] = 10233,
- ["xhArr"] = 10234,
- ["Longleftrightarrow"] = 10234,
+ ["Longrightarrow"] = 10233,
+ ["xrArr"] = 10233,
["DoubleLongLeftRightArrow"] = 10234,
- ["xmap"] = 10236,
+ ["Longleftrightarrow"] = 10234,
+ ["xhArr"] = 10234,
["longmapsto"] = 10236,
+ ["xmap"] = 10236,
["dzigrarr"] = 10239,
["nvlArr"] = 10498,
["nvrArr"] = 10499,
["nvHarr"] = 10500,
["Map"] = 10501,
["lbarr"] = 10508,
- ["rbarr"] = 10509,
["bkarow"] = 10509,
+ ["rbarr"] = 10509,
["lBarr"] = 10510,
- ["rBarr"] = 10511,
["dbkarow"] = 10511,
+ ["rBarr"] = 10511,
["RBarr"] = 10512,
["drbkarow"] = 10512,
["DDotrahd"] = 10513,
@@ -22483,16 +23915,17 @@ local character_entities = {
["rarrbfs"] = 10528,
["nwarhk"] = 10531,
["nearhk"] = 10532,
- ["searhk"] = 10533,
["hksearow"] = 10533,
- ["swarhk"] = 10534,
+ ["searhk"] = 10533,
["hkswarow"] = 10534,
+ ["swarhk"] = 10534,
["nwnear"] = 10535,
["nesear"] = 10536,
["toea"] = 10536,
["seswar"] = 10537,
["tosa"] = 10537,
["swnwar"] = 10538,
+ ["nrarrc"] = {10547, 824},
["rarrc"] = 10547,
["cudarrr"] = 10549,
["ldca"] = 10550,
@@ -22538,10 +23971,10 @@ local character_entities = {
["llhard"] = 10603,
["rharul"] = 10604,
["lrhard"] = 10605,
- ["udhar"] = 10606,
["UpEquilibrium"] = 10606,
- ["duhar"] = 10607,
+ ["udhar"] = 10606,
["ReverseUpEquilibrium"] = 10607,
+ ["duhar"] = 10607,
["RoundImplies"] = 10608,
["erarr"] = 10609,
["simrarr"] = 10610,
@@ -22608,30 +24041,31 @@ local character_entities = {
["trisb"] = 10701,
["rtriltri"] = 10702,
["LeftTriangleBar"] = 10703,
+ ["NotLeftTriangleBar"] = {10703, 824},
+ ["NotRightTriangleBar"] = {10704, 824},
["RightTriangleBar"] = 10704,
- ["race"] = 10714,
["iinfin"] = 10716,
["infintie"] = 10717,
["nvinfin"] = 10718,
["eparsl"] = 10723,
["smeparsl"] = 10724,
["eqvparsl"] = 10725,
- ["lozf"] = 10731,
["blacklozenge"] = 10731,
+ ["lozf"] = 10731,
["RuleDelayed"] = 10740,
["dsol"] = 10742,
- ["xodot"] = 10752,
["bigodot"] = 10752,
- ["xoplus"] = 10753,
+ ["xodot"] = 10752,
["bigoplus"] = 10753,
- ["xotime"] = 10754,
+ ["xoplus"] = 10753,
["bigotimes"] = 10754,
- ["xuplus"] = 10756,
+ ["xotime"] = 10754,
["biguplus"] = 10756,
- ["xsqcup"] = 10758,
+ ["xuplus"] = 10756,
["bigsqcup"] = 10758,
- ["qint"] = 10764,
+ ["xsqcup"] = 10758,
["iiiint"] = 10764,
+ ["qint"] = 10764,
["fpartint"] = 10765,
["cirfnint"] = 10768,
["awint"] = 10769,
@@ -22663,8 +24097,8 @@ local character_entities = {
["triplus"] = 10809,
["triminus"] = 10810,
["tritime"] = 10811,
- ["iprod"] = 10812,
["intprod"] = 10812,
+ ["iprod"] = 10812,
["amalg"] = 10815,
["capdot"] = 10816,
["ncup"] = 10818,
@@ -22694,27 +24128,35 @@ local character_entities = {
["sdote"] = 10854,
["simdot"] = 10858,
["congdot"] = 10861,
+ ["ncongdot"] = {10861, 824},
["easter"] = 10862,
["apacir"] = 10863,
["apE"] = 10864,
+ ["napE"] = {10864, 824},
["eplus"] = 10865,
["pluse"] = 10866,
["Esim"] = 10867,
["Colone"] = 10868,
["Equal"] = 10869,
- ["eDDot"] = 10871,
["ddotseq"] = 10871,
+ ["eDDot"] = 10871,
["equivDD"] = 10872,
["ltcir"] = 10873,
["gtcir"] = 10874,
["ltquest"] = 10875,
["gtquest"] = 10876,
- ["les"] = 10877,
["LessSlantEqual"] = 10877,
+ ["NotLessSlantEqual"] = {10877, 824},
["leqslant"] = 10877,
- ["ges"] = 10878,
+ ["les"] = 10877,
+ ["nleqslant"] = {10877, 824},
+ ["nles"] = {10877, 824},
["GreaterSlantEqual"] = 10878,
+ ["NotGreaterSlantEqual"] = {10878, 824},
["geqslant"] = 10878,
+ ["ges"] = 10878,
+ ["ngeqslant"] = {10878, 824},
+ ["nges"] = {10878, 824},
["lesdot"] = 10879,
["gesdot"] = 10880,
["lesdoto"] = 10881,
@@ -22758,7 +24200,9 @@ local character_entities = {
["simlE"] = 10911,
["simgE"] = 10912,
["LessLess"] = 10913,
+ ["NotNestedLessLess"] = {10913, 824},
["GreaterGreater"] = 10914,
+ ["NotNestedGreaterGreater"] = {10914, 824},
["glj"] = 10916,
["gla"] = 10917,
["ltcc"] = 10918,
@@ -22768,26 +24212,34 @@ local character_entities = {
["smt"] = 10922,
["lat"] = 10923,
["smte"] = 10924,
+ ["smtes"] = {10924, 65024},
["late"] = 10925,
+ ["lates"] = {10925, 65024},
["bumpE"] = 10926,
+ ["NotPrecedesEqual"] = {10927, 824},
+ ["PrecedesEqual"] = 10927,
+ ["npre"] = {10927, 824},
+ ["npreceq"] = {10927, 824},
["pre"] = 10927,
["preceq"] = 10927,
- ["PrecedesEqual"] = 10927,
+ ["NotSucceedsEqual"] = {10928, 824},
+ ["SucceedsEqual"] = 10928,
+ ["nsce"] = {10928, 824},
+ ["nsucceq"] = {10928, 824},
["sce"] = 10928,
["succeq"] = 10928,
- ["SucceedsEqual"] = 10928,
["prE"] = 10931,
["scE"] = 10932,
- ["prnE"] = 10933,
["precneqq"] = 10933,
+ ["prnE"] = 10933,
["scnE"] = 10934,
["succneqq"] = 10934,
["prap"] = 10935,
["precapprox"] = 10935,
["scap"] = 10936,
["succapprox"] = 10936,
- ["prnap"] = 10937,
["precnapprox"] = 10937,
+ ["prnap"] = 10937,
["scnap"] = 10938,
["succnapprox"] = 10938,
["Pr"] = 10939,
@@ -22800,16 +24252,24 @@ local character_entities = {
["supmult"] = 10946,
["subedot"] = 10947,
["supedot"] = 10948,
+ ["nsubE"] = {10949, 824},
+ ["nsubseteqq"] = {10949, 824},
["subE"] = 10949,
["subseteqq"] = 10949,
+ ["nsupE"] = {10950, 824},
+ ["nsupseteqq"] = {10950, 824},
["supE"] = 10950,
["supseteqq"] = 10950,
["subsim"] = 10951,
["supsim"] = 10952,
["subnE"] = 10955,
["subsetneqq"] = 10955,
+ ["varsubsetneqq"] = {10955, 65024},
+ ["vsubnE"] = {10955, 65024},
["supnE"] = 10956,
["supsetneqq"] = 10956,
+ ["varsupsetneqq"] = {10956, 65024},
+ ["vsupnE"] = {10956, 65024},
["csub"] = 10959,
["csup"] = 10960,
["csube"] = 10961,
@@ -22838,6 +24298,7 @@ local character_entities = {
["topcir"] = 10993,
["nhpar"] = 10994,
["parsim"] = 10995,
+ ["nparsl"] = {11005, 8421},
["parsl"] = 11005,
["fflig"] = 64256,
["filig"] = 64257,
@@ -22988,7 +24449,11 @@ local character_entities = {
% \end{markdown}
% \begin{macrocode}
function entities.dec_entity(s)
- return unicode.utf8.char(tonumber(s))
+ local n = tonumber(s)
+ if n == nil then
+ return "&#" .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
end
% \end{macrocode}
% \par
@@ -23001,7 +24466,28 @@ end
% \end{markdown}
% \begin{macrocode}
function entities.hex_entity(s)
- return unicode.utf8.char(tonumber("0x"..s))
+ local n = tonumber("0x"..s)
+ if n == nil then
+ return "&#x" .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
+end
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Given a captured character `x` and a string `s` of hexadecimal digits, the
+% \luamdef{entities.hex_entity_with_x_char} returns the corresponding
+% \acro{utf}8-encoded Unicode codepoint or fallback with the `x` character.
+%
+% \end{markdown}
+% \begin{macrocode}
+function entities.hex_entity_with_x_char(x, s)
+ local n = tonumber("0x"..s)
+ if n == nil then
+ return "&#" .. x .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
end
% \end{macrocode}
% \par
@@ -23014,11 +24500,18 @@ end
% \end{markdown}
% \begin{macrocode}
function entities.char_entity(s)
- local n = character_entities[s]
- if n == nil then
+ local code_points = character_entities[s]
+ if code_points == nil then
return "&" .. s .. ";"
end
- return unicode.utf8.char(n)
+ if type(code_points) ~= 'table' then
+ code_points = {code_points}
+ end
+ local char_table = {}
+ for _, code_point in ipairs(code_points) do
+ table.insert(char_table, unicode.utf8.char(code_point))
+ end
+ return table.concat(char_table)
end
% \end{macrocode}
% \par
@@ -23073,6 +24566,18 @@ function M.writer.new(options)
% \par
% \begin{markdown}
%
+% Define \luamdef{writer->flatten\_inlines}, which indicates whether or not the
+% writer should produce raw text rather than text in the output format for
+% inline elements. The \luamref{writer->flatten\_inlines} member variable is
+% mutable.
+%
+% \end{markdown}
+% \begin{macrocode}
+ self.flatten_inlines = false
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
% Parse the \Opt{slice} option and define \luamdef{writer->slice\_begin},
% \luamdef{writer->slice\_end}, and \luamdef{writer->is\_writing}. The
% \luamref{writer->is\_writing} member variable is mutable.
@@ -23192,12 +24697,43 @@ function M.writer.new(options)
% \par
% \begin{markdown}
%
-% Define \luamdef{writer->hard_line_break} as the output format of a forced
+% Define \luamdef{writer->paragraphsep} as the output format of a paragraph
+% separator. Users can use more than one blank line to delimit two blocks to
+% indicate the end of a series of blocks that make up a paragraph. This
+% produces a paragraph separator instead of an interblock separator.
+%
+% \end{markdown}
+% \begin{macrocode}
+ function self.paragraphsep()
+ if not self.is_writing then return "" end
+ return "\\markdownRendererParagraphSeparator\n{}"
+ end
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Define \luamdef{writer->soft_line_break} as the output format of a soft
% line break.
%
% \end{markdown}
% \begin{macrocode}
- self.hard_line_break = "\\markdownRendererHardLineBreak\n{}"
+ self.soft_line_break = function()
+ if self.flatten_inlines then return "\n" end
+ return "\\markdownRendererSoftLineBreak\n{}"
+ end
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Define \luamdef{writer->hard_line_break} as the output format of a hard
+% line break.
+%
+% \end{markdown}
+% \begin{macrocode}
+ self.hard_line_break = function()
+ if self.flatten_inlines then return "\n" end
+ return "\\markdownRendererHardLineBreak\n{}"
+ end
% \end{macrocode}
% \par
% \begin{markdown}
@@ -23290,11 +24826,18 @@ function M.writer.new(options)
%
% \end{markdown}
% \begin{macrocode}
- local escape_typographic_text = util.escaper(
+ local function create_escaper(char_escapes, string_escapes)
+ local escape = util.escaper(char_escapes, string_escapes)
+ return function(s)
+ if self.flatten_inlines then return s end
+ return escape(s)
+ end
+ end
+ local escape_typographic_text = create_escaper(
self.escaped_chars, self.escaped_strings)
- local escape_programmatic_text = util.escaper(
+ local escape_programmatic_text = create_escaper(
self.escaped_uri_chars, self.escaped_minimal_strings)
- local escape_minimal = util.escaper(
+ local escape_minimal = create_escaper(
{}, self.escaped_minimal_strings)
% \end{macrocode}
% \par
@@ -23310,6 +24853,7 @@ function M.writer.new(options)
% - \luamdef{writer->math} transforms a math span.
% - \luamdef{writer->identifier} transforms an input programmatic identifier.
% - \luamdef{writer->uri} transforms an input \acro{uri}.
+% - \luamdef{writer->infostring} transforms a fence code infostring.
%
% \end{markdown}
% \begin{macrocode}
@@ -23319,10 +24863,12 @@ function M.writer.new(options)
self.identifier = escape_minimal
self.string = escape_minimal
self.uri = escape_minimal
+ self.infostring = escape_minimal
else
self.identifier = escape_programmatic_text
self.string = escape_typographic_text
self.uri = escape_programmatic_text
+ self.infostring = escape_programmatic_text
end
% \end{macrocode}
% \par
@@ -23335,6 +24881,7 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.code(s, attributes)
+ if self.flatten_inlines then return s end
local buf = {}
if attributes ~= nil then
table.insert(buf,
@@ -23361,6 +24908,7 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.link(lab, src, tit, attributes)
+ if self.flatten_inlines then return lab end
local buf = {}
if attributes ~= nil then
table.insert(buf,
@@ -23389,6 +24937,7 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.image(lab, src, tit, attributes)
+ if self.flatten_inlines then return lab end
local buf = {}
if attributes ~= nil then
table.insert(buf,
@@ -23419,7 +24968,9 @@ function M.writer.new(options)
if not self.is_writing then return "" end
local buffer = {}
for _,item in ipairs(items) do
- buffer[#buffer + 1] = self.bulletitem(item)
+ if item ~= "" then
+ buffer[#buffer + 1] = self.bulletitem(item)
+ end
end
local contents = util.intersperse(buffer,"\n")
if tight and options.tightLists then
@@ -23460,8 +25011,10 @@ function M.writer.new(options)
local buffer = {}
local num = startnum
for _,item in ipairs(items) do
- buffer[#buffer + 1] = self.ordereditem(item,num)
- if num ~= nil then
+ if item ~= "" then
+ buffer[#buffer + 1] = self.ordereditem(item,num)
+ end
+ if num ~= nil and item ~= "" then
num = num + 1
end
end
@@ -23504,27 +25057,13 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.inline_html_comment(contents)
+ if self.flatten_inlines then return contents end
return {"\\markdownRendererInlineHtmlComment{",contents,"}"}
end
% \end{macrocode}
% \par
% \begin{markdown}
%
-% Define \luamdef{writer->block_html_comment} as a function that will
-% transform the contents of a block \acro{HTML} comment, to the output
-% format, where `contents` are the contents of the \acro{HTML} comment.
-%
-% \end{markdown}
-% \begin{macrocode}
- function self.block_html_comment(contents)
- if not self.is_writing then return "" end
- return {"\\markdownRendererBlockHtmlCommentBegin\n",contents,
- "\n\\markdownRendererBlockHtmlCommentEnd "}
- end
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
% Define \luamdef{writer->inline_html_tag} as a function that will
% transform the contents of an opening, closing, or empty inline \acro{HTML}
% tag to the output format, where `contents` are the contents of the
@@ -23533,6 +25072,7 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.inline_html_tag(contents)
+ if self.flatten_inlines then return contents end
return {"\\markdownRendererInlineHtmlTag{",self.string(contents),"}"}
end
% \end{macrocode}
@@ -23560,6 +25100,7 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.emphasis(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererEmphasis{",s,"}"}
end
% \end{macrocode}
@@ -23590,6 +25131,7 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.strong(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererStrongEmphasis{",s,"}"}
end
% \end{macrocode}
@@ -23602,7 +25144,7 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.blockquote(s)
- if #util.rope_to_string(s) == 0 then return "" end
+ if not self.is_writing then return "" end
return {"\\markdownRendererBlockQuoteBegin\n",s,
"\n\\markdownRendererBlockQuoteEnd "}
end
@@ -23649,17 +25191,24 @@ function M.writer.new(options)
%
% \end{markdown}
% \begin{macrocode}
- function self.attributes(attributes)
- local expanded_attributes = {}
- local key_value_regex = "([^= ]+)%s*=%s*(.*)"
+ local seen_identifiers = {}
+ local key_value_regex = "([^= ]+)%s*=%s*(.*)"
+ local function normalize_attributes(attributes, auto_identifiers)
+ -- normalize attributes
+ local normalized_attributes = {}
+ local has_explicit_identifiers = false
local key, value
- for _, attribute in ipairs(attributes) do
- if attribute:sub(1, 1) == "#" or attribute:sub(1, 1) == "." then
- table.insert(expanded_attributes, attribute)
+ for _, attribute in ipairs(attributes or {}) do
+ if attribute:sub(1, 1) == "#" then
+ table.insert(normalized_attributes, attribute)
+ has_explicit_identifiers = true
+ seen_identifiers[attribute:sub(2)] = true
+ elseif attribute:sub(1, 1) == "." then
+ table.insert(normalized_attributes, attribute)
else
key, value = attribute:match(key_value_regex)
if key:lower() == "id" then
- table.insert(expanded_attributes, "#" .. value)
+ table.insert(normalized_attributes, "#" .. value)
elseif key:lower() == "class" then
local classes = {}
for class in value:gmatch("%S+") do
@@ -23667,23 +25216,67 @@ function M.writer.new(options)
end
table.sort(classes)
for _, class in ipairs(classes) do
- table.insert(expanded_attributes, "." .. class)
+ table.insert(normalized_attributes, "." .. class)
end
else
- table.insert(expanded_attributes, attribute)
+ table.insert(normalized_attributes, attribute)
end
end
end
- table.sort(expanded_attributes)
- local buf = {}
- local seen = {}
- for _, attribute in ipairs(expanded_attributes) do
- if seen[attribute] ~= nil then
- goto continue -- prevent duplicate attributes
- else
- seen[attribute] = true
+ -- if no explicit identifiers exist, add auto identifiers
+ if not has_explicit_identifiers and auto_identifiers ~= nil then
+ local seen_auto_identifiers = {}
+ for _, auto_identifier in ipairs(auto_identifiers) do
+ if seen_auto_identifiers[auto_identifier] == nil then
+ seen_auto_identifiers[auto_identifier] = true
+ if seen_identifiers[auto_identifier] == nil then
+ seen_identifiers[auto_identifier] = true
+ table.insert(normalized_attributes,
+ "#" .. auto_identifier)
+ else
+ local auto_identifier_number = 1
+ while true do
+ local numbered_auto_identifier = auto_identifier .. "-"
+ .. auto_identifier_number
+ if seen_identifiers[numbered_auto_identifier] == nil then
+ seen_identifiers[numbered_auto_identifier] = true
+ table.insert(normalized_attributes,
+ "#" .. numbered_auto_identifier)
+ break
+ end
+ auto_identifier_number = auto_identifier_number + 1
+ end
+ end
+ end
+ end
+ end
+
+ -- sort and deduplicate normalized attributes
+ table.sort(normalized_attributes)
+ local seen_normalized_attributes = {}
+ local deduplicated_normalized_attributes = {}
+ for _, attribute in ipairs(normalized_attributes) do
+ if seen_normalized_attributes[attribute] == nil then
+ seen_normalized_attributes[attribute] = true
+ table.insert(deduplicated_normalized_attributes, attribute)
end
+ end
+
+ return deduplicated_normalized_attributes
+ end
+
+ function self.attributes(attributes, should_normalize_attributes)
+ local normalized_attributes
+ if should_normalize_attributes == false then
+ normalized_attributes = attributes
+ else
+ normalized_attributes = normalize_attributes(attributes)
+ end
+
+ local buf = {}
+ local key, value
+ for _, attribute in ipairs(normalized_attributes) do
if attribute:sub(1, 1) == "#" then
table.insert(buf, {"\\markdownRendererAttributeIdentifier{",
attribute:sub(2), "}"})
@@ -23695,7 +25288,6 @@ function M.writer.new(options)
table.insert(buf, {"\\markdownRendererAttributeKeyValue{",
key, "}{", value, "}"})
end
- ::continue::
end
return buf
@@ -23715,6 +25307,19 @@ function M.writer.new(options)
% \par
% \begin{markdown}
%
+% Define \luamdef{writer->attribute\_type\_levels} as a hash table that
+% maps attribute types to the number of attributes of said type in
+% \luamref{writer->active\_attributes}.
+%
+% \end{markdown}
+% \begin{macrocode}
+ self.attribute_type_levels = {}
+ setmetatable(self.attribute_type_levels,
+ { __index = function() return 0 end })
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
% Define \luamdef{writer->push\_attributes} and
% \luamdef{writer->pop\_attributes} as functions that will add a new set
% of active block-level attributes or remove the most current attributes
@@ -23759,6 +25364,9 @@ function M.writer.new(options)
% \begin{macrocode}
function self.push_attributes(attribute_type, attributes,
start_output, end_output)
+ local attribute_type_level = self.attribute_type_levels[attribute_type]
+ self.attribute_type_levels[attribute_type] = attribute_type_level + 1
+
-- index attributes in a hash table for easy lookup
attributes = attributes or {}
for i = 1, #attributes do
@@ -23776,7 +25384,6 @@ function M.writer.new(options)
end
if attributes["#" .. self.slice_begin_identifier] ~= nil and
self.slice_begin_type == "^" then
- self.is_writing = true
table.insert(buf, apply_attributes())
self.is_writing = true
end
@@ -23812,6 +25419,8 @@ function M.writer.new(options)
local attributes, _, end_output
current_attribute_type, attributes, _, end_output = table.unpack(
self.active_attributes[#self.active_attributes])
+ local attribute_type_level = self.attribute_type_levels[current_attribute_type]
+ self.attribute_type_levels[current_attribute_type] = attribute_type_level - 1
if self.is_writing and end_output ~= nil then
table.insert(buf, end_output)
end
@@ -23833,6 +25442,119 @@ function M.writer.new(options)
return buf
end
% \end{macrocode}
+% \begin{markdown}
+%
+% Create an auto identifier string by stripping and converting characters from string `s`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function create_auto_identifier(s)
+ local buffer = {}
+ local prev_space = false
+ local letter_found = false
+
+ for _, code in utf8.codes(uni_algos.normalize.NFC(s)) do
+ local char = utf8.char(code)
+
+ -- Remove everything up to the first letter.
+ if not letter_found then
+ local is_letter = unicode.utf8.match(char, "%a")
+ if is_letter then
+ letter_found = true
+ else
+ goto continue
+ end
+ end
+
+ -- Remove all non-alphanumeric characters, except underscores, hyphens, and periods.
+ if not unicode.utf8.match(char, "[%w_%-%.%s]") then
+ goto continue
+ end
+
+ -- Replace all spaces and newlines with hyphens.
+ if unicode.utf8.match(char, "[%s\n]") then
+ char = "-"
+ if prev_space then
+ goto continue
+ else
+ prev_space = true
+ end
+ else
+ -- Convert all alphabetic characters to lowercase.
+ char = unicode.utf8.lower(char)
+ prev_space = false
+ end
+
+ table.insert(buffer, char)
+
+ ::continue::
+ end
+
+ if prev_space then
+ table.remove(buffer)
+ end
+
+ local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
+ return identifier
+end
+% \end{macrocode}
+% \begin{markdown}
+%
+% Create an GitHub-flavored auto identifier string by stripping and converting characters from string `s`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function create_gfm_auto_identifier(s)
+ local buffer = {}
+ local prev_space = false
+ local letter_found = false
+
+ for _, code in utf8.codes(uni_algos.normalize.NFC(s)) do
+ local char = utf8.char(code)
+
+ -- Remove everything up to the first non-space.
+ if not letter_found then
+ local is_letter = unicode.utf8.match(char, "%S")
+ if is_letter then
+ letter_found = true
+ else
+ goto continue
+ end
+ end
+
+ -- Remove all non-alphanumeric characters, except underscores and hyphens.
+ if not unicode.utf8.match(char, "[%w_%-%s]") then
+ prev_space = false
+ goto continue
+ end
+
+ -- Replace all spaces and newlines with hyphens.
+ if unicode.utf8.match(char, "[%s\n]") then
+ char = "-"
+ if prev_space then
+ goto continue
+ else
+ prev_space = true
+ end
+ else
+ -- Convert all alphabetic characters to lowercase.
+ char = unicode.utf8.lower(char)
+ prev_space = false
+ end
+
+ table.insert(buffer, char)
+
+ ::continue::
+ end
+
+ if prev_space then
+ table.remove(buffer)
+ end
+
+ local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
+ return identifier
+end
+% \end{macrocode}
% \par
% \begin{markdown}
%
@@ -23842,47 +25564,52 @@ function M.writer.new(options)
%
% \end{markdown}
% \begin{macrocode}
- local current_heading_level = 0
function self.heading(s, level, attributes)
local buf = {}
+ local flat_text, inlines = table.unpack(s)
-- push empty attributes for implied sections
- while current_heading_level < level - 1 do
+ while self.attribute_type_levels["heading"] < level - 1 do
table.insert(buf,
self.push_attributes("heading",
nil,
"\\markdownRendererSectionBegin\n",
"\n\\markdownRendererSectionEnd "))
- current_heading_level = current_heading_level + 1
end
-- pop attributes for sections that have ended
- while current_heading_level >= level do
+ while self.attribute_type_levels["heading"] >= level do
table.insert(buf, self.pop_attributes("heading"))
- current_heading_level = current_heading_level - 1
end
+ -- construct attributes for the new section
+ local auto_identifiers = {}
+ if self.options.autoIdentifiers then
+ table.insert(auto_identifiers, create_auto_identifier(flat_text))
+ end
+ if self.options.gfmAutoIdentifiers then
+ table.insert(auto_identifiers, create_gfm_auto_identifier(flat_text))
+ end
+ local normalized_attributes = normalize_attributes(attributes, auto_identifiers)
+
-- push attributes for the new section
local start_output = {}
local end_output = {}
table.insert(start_output, "\\markdownRendererSectionBegin\n")
- if options.headerAttributes and attributes ~= nil and #attributes > 0 then
- table.insert(start_output,
- "\\markdownRendererHeaderAttributeContextBegin\n")
- table.insert(start_output, self.attributes(attributes))
- table.insert(end_output,
- "\n\\markdownRendererHeaderAttributeContextEnd ")
- end
table.insert(end_output, "\n\\markdownRendererSectionEnd ")
table.insert(buf, self.push_attributes("heading",
- attributes,
+ normalized_attributes,
start_output,
end_output))
- current_heading_level = current_heading_level + 1
- assert(current_heading_level == level)
+ assert(self.attribute_type_levels["heading"] == level)
+
+ -- render the heading and its attributes
+ if self.is_writing and #normalized_attributes > 0 then
+ table.insert(buf, "\\markdownRendererHeaderAttributeContextBegin\n")
+ table.insert(buf, self.attributes(normalized_attributes, false))
+ end
- -- produce the renderer
local cmd
level = level + options.shiftHeadings
if level <= 1 then
@@ -23901,7 +25628,11 @@ function M.writer.new(options)
cmd = ""
end
if self.is_writing then
- table.insert(buf, {cmd, "{", s, "}"})
+ table.insert(buf, {cmd, "{", inlines, "}"})
+ end
+
+ if self.is_writing and #normalized_attributes > 0 then
+ table.insert(buf, "\\markdownRendererHeaderAttributeContextEnd ")
end
return buf
@@ -23919,6 +25650,7 @@ function M.writer.new(options)
function self.get_state()
return {
is_writing=self.is_writing,
+ flatten_inlines=self.flatten_inlines,
active_attributes={table.unpack(self.active_attributes)},
}
end
@@ -24013,14 +25745,13 @@ parsers.tilde = P("~")
parsers.backslash = P("\\")
parsers.tab = P("\t")
parsers.newline = P("\n")
-parsers.tightblocksep = P("\001")
parsers.digit = R("09")
parsers.hexdigit = R("09","af","AF")
parsers.letter = R("AZ","az")
parsers.alphanumeric = R("AZ","az","09")
parsers.keyword = parsers.letter
- * parsers.alphanumeric^0
+ * (parsers.alphanumeric + parsers.dash)^0
parsers.internal_punctuation = S(":;,.?")
parsers.doubleasterisks = P("**")
@@ -24042,8 +25773,7 @@ parsers.nonspacechar = parsers.any - parsers.spacing
parsers.optionalspace = parsers.spacechar^0
parsers.normalchar = parsers.any - (V("SpecialChar")
- + parsers.spacing
- + parsers.tightblocksep)
+ + parsers.spacing)
parsers.eof = -parsers.any
parsers.nonindentspace = parsers.space^-3 * - parsers.spacechar
parsers.indent = parsers.space^-3 * parsers.tab
@@ -24064,6 +25794,767 @@ parsers.spnl = parsers.optionalspace
parsers.line = parsers.linechar^0 * parsers.newline
parsers.nonemptyline = parsers.line - parsers.blankline
% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+%#### Parsers Used for Indentation
+%
+% \end{markdown}
+% \begin{macrocode}
+
+parsers.leader = parsers.space^-3
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check if a trail exists and is non-empty in the indent table `indent_table`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function has_trail(indent_table)
+ return indent_table ~= nil and
+ indent_table.trail ~= nil and
+ next(indent_table.trail) ~= nil
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check if indent table `indent_table` has any indents.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function has_indents(indent_table)
+ return indent_table ~= nil and
+ indent_table.indents ~= nil and
+ next(indent_table.indents) ~= nil
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Add a trail `trail_info` to the indent table `indent_table`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function add_trail(indent_table, trail_info)
+ indent_table.trail = trail_info
+ return indent_table
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Remove a trail `trail_info` from the indent table `indent_table`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function remove_trail(indent_table)
+ indent_table.trail = nil
+ return indent_table
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Update the indent table `indent_table` by adding or removing a new
+% indent `add`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function update_indent_table(indent_table, new_indent, add)
+ indent_table = remove_trail(indent_table)
+
+ if not has_indents(indent_table) then
+ indent_table.indents = {}
+ end
+
+
+ if add then
+ indent_table.indents[#indent_table.indents + 1] = new_indent
+ else
+ if indent_table.indents[#indent_table.indents].name == new_indent.name then
+ indent_table.indents[#indent_table.indents] = nil
+ end
+ end
+
+ return indent_table
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Remove an indent by its name `name`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function remove_indent(name)
+ local function remove_indent_level(s, i, indent_table) -- luacheck: ignore s i
+ indent_table = update_indent_table(indent_table, {name=name}, false)
+ return true, indent_table
+ end
+
+ return Cg(Cmt(Cb("indent_info"), remove_indent_level), "indent_info")
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Process the spacing of a string of spaces and tabs `spacing` with preceding indent width from
+% the start of the line `indent` and strip up to `left_strip_length` spaces. Return the remainder
+% `remainder` and whether there is enough spaces to produce a code `is_code`. Return how many
+% spaces were stripped, as well as if the minimum was met `is_minimum` and what remainder it
+% left `minimum_remainder`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function process_starter_spacing(indent, spacing, minimum, left_strip_length)
+ left_strip_length = left_strip_length or 0
+
+ local count = 0
+ local tab_value = 4 - (indent) % 4
+
+ local code_started, minimum_found = false, false
+ local code_start, minimum_remainder = "", ""
+
+ local left_total_stripped = 0
+ local full_remainder = ""
+
+ if spacing ~= nil then
+ for i = 1, #spacing do
+ local character = spacing:sub(i, i)
+
+ if character == "\t" then
+ count = count + tab_value
+ tab_value = 4
+ elseif character == " " then
+ count = count + 1
+ tab_value = 4 - (1 - tab_value) % 4
+ end
+
+ if (left_strip_length ~= 0) then
+ local possible_to_strip = math.min(count, left_strip_length)
+ count = count - possible_to_strip
+ left_strip_length = left_strip_length - possible_to_strip
+ left_total_stripped = left_total_stripped + possible_to_strip
+ else
+ full_remainder = full_remainder .. character
+ end
+
+ if (minimum_found) then
+ minimum_remainder = minimum_remainder .. character
+ elseif (count >= minimum) then
+ minimum_found = true
+ minimum_remainder = minimum_remainder .. string.rep(" ", count - minimum)
+ end
+
+ if (code_started) then
+ code_start = code_start .. character
+ elseif (count >= minimum + 4) then
+ code_started = true
+ code_start = code_start .. string.rep(" ", count - (minimum + 4))
+ end
+ end
+ end
+
+ local remainder
+ if (code_started) then
+ remainder = code_start
+ else
+ remainder = string.rep(" ", count - minimum)
+ end
+
+ local is_minimum = count >= minimum
+ return {
+ is_code = code_started,
+ remainder = remainder,
+ left_total_stripped = left_total_stripped,
+ is_minimum = is_minimum,
+ minimum_remainder = minimum_remainder,
+ total_length = count,
+ full_remainder = full_remainder
+ }
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Count the total width of all indents in the indent table `indent_table`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function count_indent_tab_level(indent_table)
+ local count = 0
+ if not has_indents(indent_table) then
+ return count
+ end
+
+ for i=1, #indent_table.indents do
+ count = count + indent_table.indents[i].length
+ end
+ return count
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Count the total width of a delimiter `delimiter`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function total_delimiter_length(delimiter)
+ local count = 0
+ if type(delimiter) == "string" then return #delimiter end
+ for _, value in pairs(delimiter) do
+ count = count + total_delimiter_length(value)
+ end
+ return count
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Process the container starter `starter` of a type `indent_type`. Adjust the width of the indent
+% if the delimiter is followed only by whitespaces `is_blank`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function process_starter_indent(_, _, indent_table, starter, is_blank, indent_type, breakable)
+ local last_trail = starter[1]
+ local delimiter = starter[2]
+ local raw_new_trail = starter[3]
+
+ if indent_type == "bq" and not breakable then
+ indent_table.ignore_blockquote_blank = true
+ end
+
+ if has_trail(indent_table) then
+ local trail = indent_table.trail
+ if trail.is_code then
+ return false
+ end
+ last_trail = trail.remainder
+ else
+ local sp = process_starter_spacing(0, last_trail, 0, 0)
+
+ if sp.is_code then
+ return false
+ end
+ last_trail = sp.remainder
+ end
+
+ local preceding_indentation = count_indent_tab_level(indent_table) % 4
+ local last_trail_length = #last_trail
+ local delimiter_length = total_delimiter_length(delimiter)
+
+ local total_indent_level = preceding_indentation + last_trail_length + delimiter_length
+
+ local sp = {}
+ if not is_blank then
+ sp = process_starter_spacing(total_indent_level, raw_new_trail, 0, 1)
+ end
+
+ local del_trail_length = sp.left_total_stripped
+ if is_blank then
+ del_trail_length = 1
+ elseif not sp.is_code then
+ del_trail_length = del_trail_length + #sp.remainder
+ end
+
+ local indent_length = last_trail_length + delimiter_length + del_trail_length
+ local new_indent_info = {name=indent_type, length=indent_length}
+
+ indent_table = update_indent_table(indent_table, new_indent_info, true)
+ indent_table = add_trail(indent_table, {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length,
+ full_remainder=sp.full_remainder})
+
+ return true, indent_table
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Return the pattern corresponding with the indent name `name`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function decode_pattern(name)
+ local delimeter = parsers.succeed
+ if name == "bq" then
+ delimeter = parsers.more
+ end
+
+ return C(parsers.optionalspace) * C(delimeter) * C(parsers.optionalspace) * Cp()
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Find the first blank-only indent of the indent table `indent_table` followed
+% by blank-only indents.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function left_blank_starter(indent_table)
+ local blank_starter_index
+
+ if not has_indents(indent_table) then
+ return
+ end
+
+ for i = #indent_table.indents,1,-1 do
+ local value = indent_table.indents[i]
+ if value.name == "li" then
+ blank_starter_index = i
+ else
+ break
+ end
+ end
+
+ return blank_starter_index
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Apply the patterns decoded from the indents of the indent table `indent_table`
+% iteratively starting at position `index` of the string `s`. If the `is_optional`
+% mode is selected, match as many patterns as possible, else match all or fail.
+% With the option `is_blank`, the parsing behaves as optional after the position
+% of a blank-only indent has been surpassed.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function traverse_indent(s, i, indent_table, is_optional, is_blank)
+ local new_index = i
+
+ local preceding_indentation = 0
+ local current_trail = {}
+
+ local blank_starter = left_blank_starter(indent_table)
+
+ for index = 1,#indent_table.indents do
+ local value = indent_table.indents[index]
+ local pattern = decode_pattern(value.name)
+
+ -- match decoded pattern
+ local new_indent_info = lpeg.match(Ct(pattern), s, new_index)
+ if new_indent_info == nil then
+ local blankline_end = lpeg.match(Ct(parsers.blankline * Cg(Cp(), "pos")), s, new_index)
+ if is_optional or not indent_table.ignore_blockquote_blank or not blankline_end then
+ return is_optional, new_index, current_trail
+ end
+
+ return traverse_indent(s, tonumber(blankline_end.pos), indent_table, is_optional, is_blank)
+ end
+
+ local raw_last_trail = new_indent_info[1]
+ local delimiter = new_indent_info[2]
+ local raw_new_trail = new_indent_info[3]
+ local next_index = new_indent_info[4]
+
+ local space_only = delimiter == ""
+
+ -- check previous trail
+ if not space_only and next(current_trail) == nil then
+ local sp = process_starter_spacing(0, raw_last_trail, 0, 0)
+ current_trail = {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length,
+ full_remainder=sp.full_remainder}
+ end
+
+ if next(current_trail) ~= nil then
+ if not space_only and current_trail.is_code then
+ return is_optional, new_index, current_trail
+ end
+ if current_trail.internal_remainder ~= nil then
+ raw_last_trail = current_trail.internal_remainder
+ end
+ end
+
+ local raw_last_trail_length = 0
+ local delimiter_length = 0
+
+ if not space_only then
+ delimiter_length = #delimiter
+ raw_last_trail_length = #raw_last_trail
+ end
+
+ local total_indent_level = preceding_indentation + raw_last_trail_length + delimiter_length
+
+ local spacing_to_process
+ local minimum = 0
+ local left_strip_length = 0
+
+ if not space_only then
+ spacing_to_process = raw_new_trail
+ left_strip_length = 1
+ else
+ spacing_to_process = raw_last_trail
+ minimum = value.length
+ end
+
+ local sp = process_starter_spacing(total_indent_level, spacing_to_process, minimum, left_strip_length)
+
+ if space_only and not sp.is_minimum then
+ return is_optional or (is_blank and blank_starter <= index), new_index, current_trail
+ end
+
+ local indent_length = raw_last_trail_length + delimiter_length + sp.left_total_stripped
+
+ -- update info for the next pattern
+ if not space_only then
+ preceding_indentation = preceding_indentation + indent_length
+ else
+ preceding_indentation = preceding_indentation + value.length
+ end
+
+ current_trail = {is_code=sp.is_code, remainder=sp.remainder, internal_remainder=sp.minimum_remainder,
+ total_length=sp.total_length, full_remainder=sp.full_remainder}
+ new_index = next_index
+ end
+
+ return true, new_index, current_trail
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check if a code trail is expected.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function check_trail(expect_code, is_code)
+ return (expect_code and is_code) or (not expect_code and not is_code)
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check if the current trail of the `indent_table` would produce code if it is expected `expect_code`
+% or it would not if it is not. If there is no trail, process and check the current spacing `spacing`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function check_trail_joined(s, i, indent_table, spacing, expect_code, omit_remainder) -- luacheck: ignore s i
+ local is_code
+ local remainder
+
+ if has_trail(indent_table) then
+ local trail = indent_table.trail
+ is_code = trail.is_code
+ if is_code then
+ remainder = trail.remainder
+ else
+ remainder = trail.full_remainder
+ end
+ else
+ local sp = process_starter_spacing(0, spacing, 0, 0)
+ is_code = sp.is_code
+ if is_code then
+ remainder = sp.remainder
+ else
+ remainder = sp.full_remainder
+ end
+ end
+
+ local result = check_trail(expect_code, is_code)
+ if omit_remainder then
+ return result
+ end
+ return result, remainder
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check if the current trail of the `indent_table` is of length between `min` and `max`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function check_trail_length(s, i, indent_table, spacing, min, max) -- luacheck: ignore s i
+ local trail
+
+ if has_trail(indent_table) then
+ trail = indent_table.trail
+ else
+ trail = process_starter_spacing(0, spacing, 0, 0)
+ end
+
+ local total_length = trail.total_length
+ if total_length == nil then
+ return false
+ end
+
+ return min <= total_length and total_length <= max
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check the indentation of the continuation line, optionally with
+% the mode `is_optional` selected. Check blank line exclusively with `is_blank`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function check_continuation_indentation(s, i, indent_table, is_optional, is_blank)
+ if not has_indents(indent_table) then
+ return true
+ end
+
+ local passes, new_index, current_trail = traverse_indent(s, i, indent_table, is_optional, is_blank)
+
+ if passes then
+ indent_table = add_trail(indent_table, current_trail)
+ return new_index, indent_table
+ end
+ return false
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Get name of the last indent from the `indent_table`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function get_last_indent_name(indent_table)
+ if has_indents(indent_table) then
+ return indent_table.indents[#indent_table.indents].name
+ end
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Remove the remainder altogether if the last indent from the `indent_table`
+% is blank-only.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function remove_remainder_if_blank(indent_table, remainder)
+ if get_last_indent_name(indent_table) == "li" then
+ return ""
+ end
+ return remainder
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Take the trail `trail` or create a new one from `spacing` and comapre it
+% with the expected `trail_type`. On success return the index `i` and the
+% remainder of the trail.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function check_trail_type(s, i, trail, spacing, trail_type) -- luacheck: ignore s i
+ if trail == nil then
+ trail = process_starter_spacing(0, spacing, 0, 0)
+ end
+
+ if trail_type == "non-code" then
+ return check_trail(false, trail.is_code)
+ end
+ if trail_type == "code" then
+ return check_trail(true, trail.is_code)
+ end
+ if trail_type == "full-code" then
+ if (trail.is_code) then
+ return i, trail.remainder
+ end
+ return i, ""
+ end
+ if trail_type == "full-any" then
+ return i, trail.internal_remainder
+ end
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Stores or restores an `is_freezing` trail from indent table `indent_table`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function trail_freezing(s, i, indent_table, is_freezing) -- luacheck: ignore s i
+ if is_freezing then
+ if indent_table.is_trail_frozen then
+ indent_table.trail = indent_table.frozen_trail
+ else
+ indent_table.frozen_trail = indent_table.trail
+ indent_table.is_trail_frozen = true
+ end
+ else
+ indent_table.frozen_trail = nil
+ indent_table.is_trail_frozen = false
+ end
+ return true, indent_table
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check the indentation of the continuation line, optionally with
+% the mode `is_optional` selected. Check blank line specifically with `is_blank`.
+% Additionally, also directly check the new trail with a type `trail_type`.
+%
+% \end{markdown}
+% \begin{macrocode}
+local function check_continuation_indentation_and_trail(s, i, indent_table, is_optional, is_blank, trail_type,
+ reset_rem, omit_remainder)
+ if not has_indents(indent_table) then
+ local spacing, new_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i)
+ local result, remainder = check_trail_type(s, i, indent_table.trail, spacing, trail_type)
+ if remainder == nil then
+ if result then
+ return new_index
+ end
+ return false
+ end
+ if result then
+ return new_index, remainder
+ end
+ return false
+ end
+
+ local passes, new_index, current_trail = traverse_indent(s, i, indent_table, is_optional, is_blank)
+
+ if passes then
+ local spacing
+ if current_trail == nil then
+ local newer_spacing, newer_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i)
+ current_trail = process_starter_spacing(0, newer_spacing, 0, 0)
+ new_index = newer_index
+ spacing = newer_spacing
+ else
+ spacing = current_trail.remainder
+ end
+ local result, remainder = check_trail_type(s, new_index, current_trail, spacing, trail_type)
+ if remainder == nil or omit_remainder then
+ if result then
+ return new_index
+ end
+ return false
+ end
+
+ if is_blank and reset_rem then
+ remainder = remove_remainder_if_blank(indent_table, remainder)
+ end
+ if result then
+ return new_index, remainder
+ end
+ return false
+ end
+ return false
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% The following patterns check whitespace indentation at the start of a block.
+%
+% \end{markdown}
+% \begin{macrocode}
+parsers.check_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false), check_trail_joined)
+
+parsers.check_trail_no_rem = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false) * Cc(true), check_trail_joined)
+
+parsers.check_code_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(true), check_trail_joined)
+
+parsers.check_trail_length_range = function(min, max)
+ return Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(min) * Cc(max), check_trail_length)
+end
+
+parsers.check_trail_length = function(n)
+ return parsers.check_trail_length_range(n, n)
+end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% The following patterns handle trail backup, to prevent a failing pattern to modify it before
+% passing it to the next.
+%
+% \end{markdown}
+% \begin{macrocode}
+parsers.freeze_trail = Cg(Cmt(Cb("indent_info") * Cc(true), trail_freezing), "indent_info")
+
+parsers.unfreeze_trail = Cg(Cmt(Cb("indent_info") * Cc(false), trail_freezing), "indent_info")
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% The following patterns check indentation in continuation lines as defined by the container start.
+%
+% \end{markdown}
+% \begin{macrocode}
+parsers.check_minimal_indent = Cmt(Cb("indent_info") * Cc(false), check_continuation_indentation)
+
+parsers.check_optional_indent = Cmt(Cb("indent_info") * Cc(true), check_continuation_indentation)
+
+parsers.check_minimal_blank_indent = Cmt(Cb("indent_info") * Cc(false) * Cc(true), check_continuation_indentation)
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% The following patterns check indentation in continuation lines as defined by the container start.
+% Additionally the subsequent trail is also directly checked.
+%
+% \end{markdown}
+% \begin{macrocode}
+
+parsers.check_minimal_indent_and_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("non-code") * Cc(true),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_indent_and_code_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("code") * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_full_code_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-code") * Cc(true),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_any_trail_no_rem = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(true),
+ check_continuation_indentation_and_trail)
+
+parsers.check_optional_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(true) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_optional_blank_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(true) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% The following patterns specify behaviour around newlines.
+%
+% \end{markdown}
+% \begin{macrocode}
+
+parsers.spnlc_noexc = parsers.optionalspace
+ * (parsers.newline * parsers.check_minimal_indent_and_any_trail)^-1
+
+parsers.spnlc = parsers.optionalspace
+ * (V("EndlineNoSub"))^-1
+
+parsers.spnlc_sep = parsers.optionalspace * V("EndlineNoSub")
+ + parsers.spacechar^1
+
+parsers.only_blank = parsers.spacechar^0 * (parsers.newline + parsers.eof)
+
+% \end{macrocode}
% \begin{figure}
% \hspace*{-0.1\textwidth}
% \begin{minipage}{1.2\textwidth}
@@ -24150,6 +26641,7 @@ parsers.chunk = parsers.line * (parsers.optionallyindentedline
- parsers.blankline)^0
parsers.attribute_key_char = parsers.alphanumeric + S("-_:.")
+parsers.attribute_raw_char = parsers.alphanumeric + S("-_")
parsers.attribute_key = (parsers.attribute_key_char
- parsers.dash - parsers.digit)
* parsers.attribute_key_char^0
@@ -24161,10 +26653,16 @@ parsers.attribute_value = ( (parsers.dquote / "")
* (parsers.squote / ""))
+ ( parsers.anyescaped - parsers.dquote - parsers.rbrace
- parsers.space)^0
+parsers.attribute_identifier = parsers.attribute_key_char^1
+parsers.attribute_classname = parsers.letter
+ * parsers.attribute_key_char^0
+parsers.attribute_raw = parsers.attribute_raw_char^1
parsers.attribute = (parsers.dash * Cc(".unnumbered"))
- + C((parsers.hash + parsers.period)
- * parsers.attribute_key)
+ + C( parsers.hash
+ * parsers.attribute_identifier)
+ + C( parsers.period
+ * parsers.attribute_classname)
+ Cs( parsers.attribute_key
* parsers.optionalspace * parsers.equal * parsers.optionalspace
* parsers.attribute_value)
@@ -24180,7 +26678,7 @@ parsers.attributes = parsers.lbrace
parsers.raw_attribute = parsers.lbrace
* parsers.optionalspace
* parsers.equal
- * C(parsers.attribute_key)
+ * C(parsers.attribute_raw)
* parsers.optionalspace
* parsers.rbrace
@@ -24195,22 +26693,43 @@ end
% \par
% \begin{markdown}
%
-%#### Parsers Used for Markdown Lists
+%#### Parsers Used for HTML Entities
%
% \end{markdown}
% \begin{macrocode}
-parsers.bulletchar = C(parsers.plus + parsers.asterisk + parsers.dash)
+local function repeat_between(pattern, min, max)
+ return -pattern^(max + 1) * pattern^min
+end
-parsers.bullet = ( parsers.bulletchar * #parsers.spacing
- * (parsers.tab + parsers.space^-3)
- + parsers.space * parsers.bulletchar * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.space * parsers.space * parsers.bulletchar
- * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * parsers.space
- * parsers.bulletchar * #parsers.spacing
- )
+parsers.hexentity = parsers.ampersand * parsers.hash * C(S("Xx"))
+ * C(repeat_between(parsers.hexdigit, 1, 6)) * parsers.semicolon
+parsers.decentity = parsers.ampersand * parsers.hash
+ * C(repeat_between(parsers.digit, 1, 7)) * parsers.semicolon
+parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1)
+ * parsers.semicolon
+
+parsers.html_entities = parsers.hexentity / entities.hex_entity_with_x_char
+ + parsers.decentity / entities.dec_entity
+ + parsers.tagentity / entities.char_entity
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+%#### Parsers Used for Markdown Lists
+%
+% \end{markdown}
+% \begin{macrocode}
+parsers.bullet = function(bullet_char, interrupting)
+ local allowed_end
+ if interrupting then
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ end
+ return parsers.check_trail
+ * Ct(C(bullet_char) * Cc(""))
+ * allowed_end
+end
local function tickbox(interior)
return parsers.optionalspace * parsers.lbracket
@@ -24235,17 +26754,399 @@ local function captures_equal_length(_,i,a,b)
return #a == #b and i
end
-parsers.closeticks = parsers.space^-1
- * Cmt(C(parsers.backtick^1)
- * Cb("ticks"), captures_equal_length)
+parsers.closeticks = Cmt(C(parsers.backtick^1)
+ * Cb("ticks"), captures_equal_length)
-parsers.intickschar = (parsers.any - S(" \n\r`"))
- + (parsers.newline * -parsers.blankline)
- + (parsers.space - parsers.closeticks)
+parsers.intickschar = (parsers.any - S("\n\r`"))
+ + V("NoSoftLineBreakEndline")
+ (parsers.backtick^1 - parsers.closeticks)
-parsers.inticks = parsers.openticks * parsers.space^-1
- * C(parsers.intickschar^0) * parsers.closeticks
+local function process_inticks(s)
+ s = s:gsub("\n", " ")
+ s = s:gsub("^ (.*) $", "%1")
+ return s
+end
+
+parsers.inticks = parsers.openticks
+ * C(parsers.space^0)
+ * parsers.closeticks
+ + parsers.openticks
+ * Cs(Cs(parsers.intickschar^0) / process_inticks)
+ * parsers.closeticks
+
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+%#### Parsers Used for HTML
+%
+% \end{markdown}
+% \begin{macrocode}
+-- case-insensitive match (we assume s is lowercase). must be single byte encoding
+parsers.keyword_exact = function(s)
+ local parser = P(0)
+ for i=1,#s do
+ local c = s:sub(i,i)
+ local m = c .. upper(c)
+ parser = parser * S(m)
+ end
+ return parser
+end
+
+parsers.special_block_keyword =
+ parsers.keyword_exact("pre") +
+ parsers.keyword_exact("script") +
+ parsers.keyword_exact("style") +
+ parsers.keyword_exact("textarea")
+
+parsers.block_keyword =
+ parsers.keyword_exact("address") +
+ parsers.keyword_exact("article") +
+ parsers.keyword_exact("aside") +
+ parsers.keyword_exact("base") +
+ parsers.keyword_exact("basefont") +
+ parsers.keyword_exact("blockquote") +
+ parsers.keyword_exact("body") +
+ parsers.keyword_exact("caption") +
+ parsers.keyword_exact("center") +
+ parsers.keyword_exact("col") +
+ parsers.keyword_exact("colgroup") +
+ parsers.keyword_exact("dd") +
+ parsers.keyword_exact("details") +
+ parsers.keyword_exact("dialog") +
+ parsers.keyword_exact("dir") +
+ parsers.keyword_exact("div") +
+ parsers.keyword_exact("dl") +
+ parsers.keyword_exact("dt") +
+ parsers.keyword_exact("fieldset") +
+ parsers.keyword_exact("figcaption") +
+ parsers.keyword_exact("figure") +
+ parsers.keyword_exact("footer") +
+ parsers.keyword_exact("form") +
+ parsers.keyword_exact("frame") +
+ parsers.keyword_exact("frameset") +
+ parsers.keyword_exact("h1") +
+ parsers.keyword_exact("h2") +
+ parsers.keyword_exact("h3") +
+ parsers.keyword_exact("h4") +
+ parsers.keyword_exact("h5") +
+ parsers.keyword_exact("h6") +
+ parsers.keyword_exact("head") +
+ parsers.keyword_exact("header") +
+ parsers.keyword_exact("hr") +
+ parsers.keyword_exact("html") +
+ parsers.keyword_exact("iframe") +
+ parsers.keyword_exact("legend") +
+ parsers.keyword_exact("li") +
+ parsers.keyword_exact("link") +
+ parsers.keyword_exact("main") +
+ parsers.keyword_exact("menu") +
+ parsers.keyword_exact("menuitem") +
+ parsers.keyword_exact("nav") +
+ parsers.keyword_exact("noframes") +
+ parsers.keyword_exact("ol") +
+ parsers.keyword_exact("optgroup") +
+ parsers.keyword_exact("option") +
+ parsers.keyword_exact("p") +
+ parsers.keyword_exact("param") +
+ parsers.keyword_exact("section") +
+ parsers.keyword_exact("source") +
+ parsers.keyword_exact("summary") +
+ parsers.keyword_exact("table") +
+ parsers.keyword_exact("tbody") +
+ parsers.keyword_exact("td") +
+ parsers.keyword_exact("tfoot") +
+ parsers.keyword_exact("th") +
+ parsers.keyword_exact("thead") +
+ parsers.keyword_exact("title") +
+ parsers.keyword_exact("tr") +
+ parsers.keyword_exact("track") +
+ parsers.keyword_exact("ul")
+
+-- end conditions
+parsers.html_blankline_end_condition = parsers.linechar^0
+ * ( parsers.newline
+ * (parsers.check_minimal_blank_indent_and_any_trail
+ * #parsers.blankline
+ + parsers.check_minimal_indent_and_any_trail)
+ * parsers.linechar^1)^0
+ * (parsers.newline^-1 / "")
+
+local function remove_trailing_blank_lines(s)
+ return s:gsub("[\n\r]+%s*$", "")
+end
+
+parsers.html_until_end = function(end_marker)
+ return Cs(Cs((parsers.newline
+ * (parsers.check_minimal_blank_indent_and_any_trail
+ * #parsers.blankline
+ + parsers.check_minimal_indent_and_any_trail)
+ + parsers.linechar - end_marker)^0
+ * parsers.linechar^0 * parsers.newline^-1)
+ / remove_trailing_blank_lines)
+end
+
+-- attributes
+parsers.html_attribute_spacing = parsers.optionalspace
+ * V("NoSoftLineBreakEndline")
+ * parsers.optionalspace
+ + parsers.spacechar^1
+
+parsers.html_attribute_name = (parsers.letter + parsers.colon + parsers.underscore)
+ * (parsers.alphanumeric + parsers.colon + parsers.underscore
+ + parsers.period + parsers.dash)^0
+
+parsers.html_attribute_value = parsers.squote
+ * (parsers.linechar - parsers.squote)^0
+ * parsers.squote
+ + parsers.dquote
+ * (parsers.linechar - parsers.dquote)^0
+ * parsers.dquote
+ + ( parsers.any - parsers.spacechar - parsers.newline
+ - parsers.dquote - parsers.squote - parsers.backtick
+ - parsers.equal - parsers.less - parsers.more)^1
+
+parsers.html_inline_attribute_value = parsers.squote
+ * (V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.blankline^2
+ - parsers.squote)^0
+ * parsers.squote
+ + parsers.dquote
+ * (V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.blankline^2
+ - parsers.dquote)^0
+ * parsers.dquote
+ + (parsers.any - parsers.spacechar - parsers.newline
+ - parsers.dquote - parsers.squote - parsers.backtick
+ - parsers.equal - parsers.less - parsers.more)^1
+
+parsers.html_attribute_value_specification = parsers.optionalspace
+ * parsers.equal
+ * parsers.optionalspace
+ * parsers.html_attribute_value
+
+parsers.html_spnl = parsers.optionalspace
+ * (V("NoSoftLineBreakEndline") * parsers.optionalspace)^-1
+
+parsers.html_inline_attribute_value_specification = parsers.html_spnl
+ * parsers.equal
+ * parsers.html_spnl
+ * parsers.html_inline_attribute_value
+
+parsers.html_attribute = parsers.html_attribute_spacing
+ * parsers.html_attribute_name
+ * parsers.html_inline_attribute_value_specification^-1
+
+parsers.html_non_newline_attribute = parsers.spacechar^1
+ * parsers.html_attribute_name
+ * parsers.html_attribute_value_specification^-1
+
+parsers.nested_breaking_blank = parsers.newline
+ * parsers.check_minimal_blank_indent
+ * parsers.blankline
+
+parsers.html_comment_start = P("<!--")
+
+parsers.html_comment_end = P("-->")
+
+parsers.html_comment = Cs( parsers.html_comment_start
+ * parsers.html_until_end(parsers.html_comment_end))
+
+parsers.html_inline_comment = (parsers.html_comment_start / "")
+ * -P(">") * -P("->")
+ * Cs((V("NoSoftLineBreakEndline") + parsers.any - P("--")
+ - parsers.nested_breaking_blank - parsers.html_comment_end)^0)
+ * (parsers.html_comment_end / "")
+
+parsers.html_cdatasection_start = P("<![CDATA[")
+
+parsers.html_cdatasection_end = P("]]>")
+
+parsers.html_cdatasection = Cs( parsers.html_cdatasection_start
+ * parsers.html_until_end(parsers.html_cdatasection_end))
+
+parsers.html_inline_cdatasection = parsers.html_cdatasection_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_cdatasection_end)^0
+ * parsers.html_cdatasection_end
+
+parsers.html_declaration_start = P("<!") * parsers.letter
+
+parsers.html_declaration_end = P(">")
+
+parsers.html_declaration = Cs( parsers.html_declaration_start
+ * parsers.html_until_end(parsers.html_declaration_end))
+
+parsers.html_inline_declaration = parsers.html_declaration_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_declaration_end)^0
+ * parsers.html_declaration_end
+
+parsers.html_instruction_start = P("<?")
+
+parsers.html_instruction_end = P("?>")
+
+parsers.html_instruction = Cs( parsers.html_instruction_start
+ * parsers.html_until_end(parsers.html_instruction_end))
+
+parsers.html_inline_instruction = parsers.html_instruction_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_instruction_end)^0
+ * parsers.html_instruction_end
+
+parsers.html_blankline = parsers.newline
+ * parsers.optionalspace
+ * parsers.newline
+
+parsers.html_tag_start = parsers.less
+
+parsers.html_tag_closing_start = parsers.less
+ * parsers.slash
+
+parsers.html_tag_end = parsers.html_spnl
+ * parsers.more
+
+parsers.html_empty_tag_end = parsers.html_spnl
+ * parsers.slash
+ * parsers.more
+
+-- opening tags
+parsers.html_any_open_inline_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_any_open_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_non_newline_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_open_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_open_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+-- incomplete tags
+parsers.incomplete_tag_following = parsers.spacechar
+ + parsers.more
+ + parsers.slash * parsers.more
+ + #(parsers.newline + parsers.eof)
+
+parsers.incomplete_special_tag_following = parsers.spacechar
+ + parsers.more
+ + #(parsers.newline + parsers.eof)
+
+parsers.html_incomplete_open_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.incomplete_tag_following
+
+parsers.html_incomplete_open_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.incomplete_special_tag_following
+
+parsers.html_incomplete_close_tag = parsers.html_tag_closing_start
+ * parsers.block_keyword
+ * parsers.incomplete_tag_following
+
+parsers.html_incomplete_close_special_tag = parsers.html_tag_closing_start
+ * parsers.special_block_keyword
+ * parsers.incomplete_tag_following
+
+-- closing tags
+parsers.html_close_tag = parsers.html_tag_closing_start
+ * parsers.block_keyword
+ * parsers.html_tag_end
+
+parsers.html_any_close_tag = parsers.html_tag_closing_start
+ * parsers.keyword
+ * parsers.html_tag_end
+
+parsers.html_close_special_tag = parsers.html_tag_closing_start
+ * parsers.special_block_keyword
+ * parsers.html_tag_end
+
+-- empty tags
+parsers.html_any_empty_inline_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_any_empty_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_non_newline_attribute^0
+ * parsers.optionalspace
+ * parsers.slash
+ * parsers.more
+
+parsers.html_empty_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_empty_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_incomplete_blocks = parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_open_special_tag
+ + parsers.html_incomplete_close_tag
+
+-- parse special html blocks
+parsers.html_blankline_ending_special_block_opening = (parsers.html_close_special_tag
+ + parsers.html_empty_special_tag)
+ * #(parsers.optionalspace
+ * (parsers.newline + parsers.eof))
+
+parsers.html_blankline_ending_special_block = parsers.html_blankline_ending_special_block_opening
+ * parsers.html_blankline_end_condition
+
+parsers.html_special_block_opening = parsers.html_incomplete_open_special_tag
+ - parsers.html_empty_special_tag
+
+parsers.html_closing_special_block = parsers.html_special_block_opening
+ * parsers.html_until_end(parsers.html_close_special_tag)
+
+parsers.html_special_block = parsers.html_blankline_ending_special_block
+ + parsers.html_closing_special_block
+
+-- parse html blocks
+parsers.html_block_opening = parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_close_tag
+
+parsers.html_block = parsers.html_block_opening
+ * parsers.html_blankline_end_condition
+
+-- parse any html blocks
+parsers.html_any_block_opening = (parsers.html_any_open_tag
+ + parsers.html_any_close_tag
+ + parsers.html_any_empty_tag)
+ * #(parsers.optionalspace * (parsers.newline + parsers.eof))
+
+parsers.html_any_block = parsers.html_any_block_opening
+ * parsers.html_blankline_end_condition
+
+parsers.html_inline_comment_full = parsers.html_comment_start
+ * -P(">") * -P("->")
+ * Cs((V("NoSoftLineBreakEndline") + parsers.any - P("--")
+ - parsers.nested_breaking_blank - parsers.html_comment_end)^0)
+ * parsers.html_comment_end
+
+parsers.html_inline_tags = parsers.html_inline_comment_full
+ + parsers.html_any_empty_inline_tag
+ + parsers.html_inline_instruction
+ + parsers.html_inline_cdatasection
+ + parsers.html_inline_declaration
+ + parsers.html_any_open_inline_tag
+ + parsers.html_any_close_tag
+
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24254,7 +27155,54 @@ parsers.inticks = parsers.openticks * parsers.space^-1
%
% \end{markdown}
% \begin{macrocode}
-parsers.leader = parsers.space^-3
+parsers.urlchar = parsers.anyescaped
+ - parsers.newline
+ - parsers.more
+
+parsers.auto_link_scheme_part = parsers.alphanumeric
+ + parsers.plus
+ + parsers.period
+ + parsers.dash
+
+parsers.auto_link_scheme = parsers.letter
+ * parsers.auto_link_scheme_part
+ * parsers.auto_link_scheme_part^-30
+
+parsers.absolute_uri = parsers.auto_link_scheme * parsers.colon
+ * (parsers.any - parsers.spacing - parsers.less - parsers.more)^0
+
+parsers.printable_characters = S(".!#$%&'*+/=?^_`{|}~-")
+
+parsers.email_address_local_part_char = parsers.alphanumeric
+ + parsers.printable_characters
+
+parsers.email_address_local_part = parsers.email_address_local_part_char^1
+
+parsers.email_address_dns_label = parsers.alphanumeric
+ * (parsers.alphanumeric + parsers.dash)^-62
+ * B(parsers.alphanumeric)
+
+parsers.email_address_domain = parsers.email_address_dns_label
+ * (parsers.period * parsers.email_address_dns_label)^0
+
+parsers.email_address = parsers.email_address_local_part
+ * parsers.at
+ * parsers.email_address_domain
+
+parsers.auto_link_url = parsers.less
+ * C(parsers.absolute_uri)
+ * parsers.more
+
+parsers.auto_link_email = parsers.less
+ * C(parsers.email_address)
+ * parsers.more
+
+parsers.auto_link_relative_reference = parsers.less
+ * C(parsers.urlchar^1)
+ * parsers.more
+
+parsers.autolink = parsers.auto_link_url
+ + parsers.auto_link_email
-- content in balanced brackets, parentheses, or quotes:
parsers.bracketed = P{ parsers.lbracket
@@ -24284,183 +27232,96 @@ parsers.dquoted = P{ parsers.dquote * parsers.alphanumeric
) + V(1))^0
* parsers.dquote }
--- bracketed tag for markdown links, allowing nested brackets:
-parsers.tag = parsers.lbracket
+parsers.link_text = parsers.lbracket
* Cs((parsers.alphanumeric^1
- + parsers.bracketed
- + parsers.inticks
- + ( parsers.backslash / "" * parsers.rbracket
- + parsers.any
- - (parsers.rbracket + parsers.blankline^2)))^0)
+ + parsers.bracketed
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.any
+ - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^0)
* parsers.rbracket
+parsers.link_label = parsers.lbracket
+ * -#(parsers.sp * parsers.rbracket)
+ * #((parsers.any - parsers.rbracket)^-999 * parsers.rbracket)
+ * Cs((parsers.alphanumeric^1
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.any
+ - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^1)
+ * parsers.rbracket
+
+parsers.inparens_url = P{ parsers.lparent
+ * ((parsers.anyescaped - (parsers.lparent
+ + parsers.rparent
+ + parsers.spacing)
+ ) + V(1))^0
+ * parsers.rparent }
+
-- url for markdown links, allowing nested brackets:
parsers.url = parsers.less * Cs((parsers.anyescaped
+ - parsers.newline
+ - parsers.less
- parsers.more)^0)
* parsers.more
- + Cs((parsers.inparens + (parsers.anyescaped
- - parsers.spacing
- - parsers.rparent))^1)
-
--- quoted text, possibly with nested quotes:
-parsers.title_s = parsers.squote * Cs(((parsers.anyescaped-parsers.squote)
- + parsers.squoted)^0)
- * parsers.squote
-
-parsers.title_d = parsers.dquote * Cs(((parsers.anyescaped-parsers.dquote)
- + parsers.dquoted)^0)
- * parsers.dquote
+ + -parsers.less
+ * Cs((parsers.inparens_url + (parsers.anyescaped
+ - parsers.spacing
+ - parsers.lparent
+ - parsers.rparent))^1)
+
+-- quoted text:
+parsers.title_s = parsers.squote
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.anyescaped - parsers.newline - parsers.squote - parsers.blankline^2))^0)
+ * parsers.squote
+
+parsers.title_d = parsers.dquote
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.anyescaped - parsers.newline - parsers.dquote - parsers.blankline^2))^0)
+ * parsers.dquote
parsers.title_p = parsers.lparent
- * Cs((parsers.inparens + (parsers.anyescaped-parsers.rparent))^0)
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.anyescaped - parsers.newline - parsers.lparent - parsers.rparent
+ - parsers.blankline^2))^0)
* parsers.rparent
parsers.title = parsers.title_d + parsers.title_s + parsers.title_p
parsers.optionaltitle
- = parsers.spnl * parsers.title * parsers.spacechar^0
+ = parsers.spnlc * parsers.title * parsers.spacechar^0
+ Cc("")
-parsers.indirect_link
- = parsers.tag
- * ( C(parsers.spnl) * parsers.tag
- + Cc(nil) * Cc(nil) -- always produce exactly two captures
- )
-
-parsers.indirect_image
- = parsers.exclamation * parsers.indirect_link
% \end{macrocode}
% \par
% \begin{markdown}
%
-%#### Parsers Used for HTML
-%
-% \end{markdown}
-% \begin{macrocode}
--- case-insensitive match (we assume s is lowercase). must be single byte encoding
-parsers.keyword_exact = function(s)
- local parser = P(0)
- for i=1,#s do
- local c = s:sub(i,i)
- local m = c .. upper(c)
- parser = parser * S(m)
- end
- return parser
-end
-
-parsers.block_keyword =
- parsers.keyword_exact("address") + parsers.keyword_exact("blockquote") +
- parsers.keyword_exact("center") + parsers.keyword_exact("del") +
- parsers.keyword_exact("dir") + parsers.keyword_exact("div") +
- parsers.keyword_exact("p") + parsers.keyword_exact("pre") +
- parsers.keyword_exact("li") + parsers.keyword_exact("ol") +
- parsers.keyword_exact("ul") + parsers.keyword_exact("dl") +
- parsers.keyword_exact("dd") + parsers.keyword_exact("form") +
- parsers.keyword_exact("fieldset") + parsers.keyword_exact("isindex") +
- parsers.keyword_exact("ins") + parsers.keyword_exact("menu") +
- parsers.keyword_exact("noframes") + parsers.keyword_exact("frameset") +
- parsers.keyword_exact("h1") + parsers.keyword_exact("h2") +
- parsers.keyword_exact("h3") + parsers.keyword_exact("h4") +
- parsers.keyword_exact("h5") + parsers.keyword_exact("h6") +
- parsers.keyword_exact("hr") + parsers.keyword_exact("script") +
- parsers.keyword_exact("noscript") + parsers.keyword_exact("table") +
- parsers.keyword_exact("tbody") + parsers.keyword_exact("tfoot") +
- parsers.keyword_exact("thead") + parsers.keyword_exact("th") +
- parsers.keyword_exact("td") + parsers.keyword_exact("tr")
-
--- There is no reason to support bad html, so we expect quoted attributes
-parsers.htmlattributevalue
- = parsers.squote * (parsers.any - (parsers.blankline
- + parsers.squote))^0
- * parsers.squote
- + parsers.dquote * (parsers.any - (parsers.blankline
- + parsers.dquote))^0
- * parsers.dquote
-
-parsers.htmlattribute = parsers.spacing^1
- * (parsers.alphanumeric + S("_-"))^1
- * parsers.sp * parsers.equal * parsers.sp
- * parsers.htmlattributevalue
-
-parsers.htmlcomment = P("<!--")
- * parsers.optionalspace
- * Cs((parsers.any - parsers.optionalspace * P("-->"))^0)
- * parsers.optionalspace
- * P("-->")
-
-parsers.htmlinstruction = P("<?") * (parsers.any - P("?>"))^0 * P("?>")
-
-parsers.openelt_any = parsers.less * parsers.keyword * parsers.htmlattribute^0
- * parsers.sp * parsers.more
-
-parsers.openelt_exact = function(s)
- return parsers.less * parsers.sp * parsers.keyword_exact(s)
- * parsers.htmlattribute^0 * parsers.sp * parsers.more
-end
-
-parsers.openelt_block = parsers.sp * parsers.block_keyword
- * parsers.htmlattribute^0 * parsers.sp * parsers.more
-
-parsers.closeelt_any = parsers.less * parsers.sp * parsers.slash
- * parsers.keyword * parsers.sp * parsers.more
-
-parsers.closeelt_exact = function(s)
- return parsers.less * parsers.sp * parsers.slash * parsers.keyword_exact(s)
- * parsers.sp * parsers.more
-end
-
-parsers.emptyelt_any = parsers.less * parsers.sp * parsers.keyword
- * parsers.htmlattribute^0 * parsers.sp * parsers.slash
- * parsers.more
-
-parsers.emptyelt_block = parsers.less * parsers.sp * parsers.block_keyword
- * parsers.htmlattribute^0 * parsers.sp * parsers.slash
- * parsers.more
-
-parsers.displaytext = (parsers.any - parsers.less)^1
-
--- return content between two matched HTML tags
-parsers.in_matched = function(s)
- return { parsers.openelt_exact(s)
- * (V(1) + parsers.displaytext
- + (parsers.less - parsers.closeelt_exact(s)))^0
- * parsers.closeelt_exact(s) }
-end
-
-local function parse_matched_tags(s,pos)
- local t = string.lower(lpeg.match(C(parsers.keyword),s,pos))
- return lpeg.match(parsers.in_matched(t),s,pos-1)
-end
-
-parsers.in_matched_block_tags = parsers.less
- * Cmt(#parsers.openelt_block, parse_matched_tags)
-
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-%#### Parsers Used for HTML Entities
-%
-% \end{markdown}
-% \begin{macrocode}
-parsers.hexentity = parsers.ampersand * parsers.hash * S("Xx")
- * C(parsers.hexdigit^1) * parsers.semicolon
-parsers.decentity = parsers.ampersand * parsers.hash
- * C(parsers.digit^1) * parsers.semicolon
-parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1)
- * parsers.semicolon
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-%#### Helpers for Link Reference Definitions
+%#### Helpers for Links and Link Reference Definitions
%
% \end{markdown}
% \begin{macrocode}
-- parse a reference definition: [foo]: /bar "title"
-parsers.define_reference_parser = parsers.leader * parsers.tag * parsers.colon
- * parsers.spacechar^0 * parsers.url
- * parsers.optionaltitle
+parsers.define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon
+ * parsers.spnlc * parsers.url
+ * ( parsers.spnlc_sep * parsers.title * parsers.only_blank
+ + Cc("") * parsers.only_blank)
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24470,7 +27331,6 @@ parsers.define_reference_parser = parsers.leader * parsers.tag * parsers.colon
% \end{markdown}
% \begin{macrocode}
parsers.Inline = V("Inline")
-parsers.IndentedInline = V("IndentedInline")
-- parse many p between starter and ender
parsers.between = function(p, starter, ender)
@@ -24478,26 +27338,6 @@ parsers.between = function(p, starter, ender)
return (starter * #parsers.nonspacechar * Ct(p * (p - ender2)^0) * ender2)
end
-parsers.urlchar = parsers.anyescaped
- - parsers.newline
- - parsers.more
-
-parsers.auto_link_url = parsers.less
- * C( parsers.alphanumeric^1 * P("://")
- * parsers.urlchar^1)
- * parsers.more
-
-parsers.auto_link_email
- = parsers.less
- * C((parsers.alphanumeric + S("-._+"))^1
- * P("@") * parsers.urlchar^1)
- * parsers.more
-
-parsers.auto_link_relative_reference
- = parsers.less
- * C(parsers.urlchar^1)
- * parsers.more
-
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24507,10 +27347,13 @@ parsers.auto_link_relative_reference
% \end{markdown}
% \begin{macrocode}
parsers.lineof = function(c)
- return (parsers.leader * (P(c) * parsers.optionalspace)^3
- * (parsers.newline * parsers.blankline^1
- + parsers.newline^-1 * parsers.eof))
+ return (parsers.check_trail_no_rem * (P(c) * parsers.optionalspace)^3
+ * (parsers.newline + parsers.eof))
end
+
+parsers.thematic_break_lines = parsers.lineof(parsers.asterisk)
+ + parsers.lineof(parsers.dash)
+ + parsers.lineof(parsers.underscore)
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24524,11 +27367,21 @@ parsers.heading_start = #parsers.hash * C(parsers.hash^-6)
* -parsers.hash / length
-- parse setext header ending and return level
-parsers.heading_level = parsers.equal^1 * Cc(1) + parsers.dash^1 * Cc(2)
+parsers.heading_level = parsers.nonindentspace * parsers.equal^1 * parsers.optionalspace * #parsers.newline * Cc(1)
+ + parsers.nonindentspace * parsers.dash^1 * parsers.optionalspace * #parsers.newline * Cc(2)
local function strip_atx_end(s)
- return s:gsub("[#%s]*\n$","")
+ return s:gsub("%s+#*%s*\n$","")
end
+
+parsers.atx_heading = parsers.check_trail_no_rem
+ * Cg(parsers.heading_start, "level")
+ * (C( parsers.optionalspace
+ * parsers.hash^0
+ * parsers.optionalspace
+ * parsers.newline)
+ + parsers.spacechar^1
+ * C(parsers.line))
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24610,7 +27463,7 @@ function M.reader.new(writer, options)
tag = util.rope_to_string(tag)
tag = tag:gsub("[ \n\r\t]+", " ")
tag = tag:gsub("^ ", ""):gsub(" $", "")
- tag = uni_case.casefold(tag, true, false)
+ tag = uni_algos.case.casefold(tag, true, false)
return tag
end
% \end{macrocode}
@@ -24733,11 +27586,6 @@ function M.reader.new(writer, options)
return parsers.inlines
end, false)
- self.create_parser("parse_inlines_no_link",
- function()
- return parsers.inlines_no_link
- end, false)
-
self.create_parser("parse_inlines_no_inline_note",
function()
return parsers.inlines_no_inline_note
@@ -24752,6 +27600,134 @@ function M.reader.new(writer, options)
function()
return parsers.inlines_nbsp
end, false)
+ self.create_parser("parse_inlines_no_link_or_emphasis",
+ function()
+ return parsers.inlines_no_link_or_emphasis
+ end, false)
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+%#### Parsers Used for Indentation (local)
+%
+% The following patterns represent basic building blocks of indented content.
+%
+% \end{markdown}
+% \begin{macrocode}
+ parsers.minimally_indented_blankline = parsers.check_minimal_indent * (parsers.blankline / "")
+
+ parsers.minimally_indented_block = parsers.check_minimal_indent * V("Block")
+
+ parsers.minimally_indented_block_or_paragraph = parsers.check_minimal_indent * V("BlockOrParagraph")
+
+ parsers.minimally_indented_paragraph = parsers.check_minimal_indent * V("Paragraph")
+
+ parsers.minimally_indented_plain = parsers.check_minimal_indent * V("Plain")
+
+ parsers.minimally_indented_par_or_plain = parsers.minimally_indented_paragraph
+ + parsers.minimally_indented_plain
+
+ parsers.minimally_indented_par_or_plain_no_blank = parsers.minimally_indented_par_or_plain
+ - parsers.minimally_indented_blankline
+
+ parsers.minimally_indented_ref = parsers.check_minimal_indent * V("Reference")
+
+ parsers.minimally_indented_blank = parsers.check_minimal_indent * V("Blank")
+
+ parsers.conditionally_indented_blankline = parsers.check_minimal_blank_indent * (parsers.blankline / "")
+
+ parsers.minimally_indented_ref_or_block = parsers.minimally_indented_ref
+ + parsers.minimally_indented_block
+ - parsers.minimally_indented_blankline
+
+ parsers.minimally_indented_ref_or_block_or_par = parsers.minimally_indented_ref
+ + parsers.minimally_indented_block_or_paragraph
+ - parsers.minimally_indented_blankline
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% The following pattern parses the properly indented content that follows the initial container start.
+%
+% \end{markdown}
+% \begin{macrocode}
+
+ parsers.separator_loop = function(separated_block, paragraph, block_separator, paragraph_separator)
+ return separated_block
+ + block_separator
+ * paragraph
+ * separated_block
+ + paragraph_separator
+ * paragraph
+ end
+
+ parsers.create_loop_body_pair = function(separated_block, paragraph, block_separator, paragraph_separator)
+ return {
+ block = parsers.separator_loop(separated_block, paragraph, block_separator, block_separator),
+ par = parsers.separator_loop(separated_block, paragraph, block_separator, paragraph_separator)
+ }
+ end
+
+ parsers.block_sep_group = function(blank)
+ return blank^0 * parsers.eof
+ + ( blank^2 / writer.paragraphsep
+ + blank^0 / writer.interblocksep
+ )
+ end
+
+ parsers.par_sep_group = function(blank)
+ return blank^0 * parsers.eof
+ + blank^0 / writer.paragraphsep
+ end
+
+ parsers.sep_group_no_output = function(blank)
+ return blank^0 * parsers.eof
+ + blank^0
+ end
+
+ parsers.content_blank = parsers.minimally_indented_blankline
+
+ parsers.ref_or_block_separated = parsers.sep_group_no_output(parsers.content_blank)
+ * ( parsers.minimally_indented_ref
+ - parsers.content_blank)
+ + parsers.block_sep_group(parsers.content_blank)
+ * ( parsers.minimally_indented_block
+ - parsers.content_blank)
+
+ parsers.loop_body_pair =
+ parsers.create_loop_body_pair(parsers.ref_or_block_separated,
+ parsers.minimally_indented_par_or_plain_no_blank,
+ parsers.block_sep_group(parsers.content_blank),
+ parsers.par_sep_group(parsers.content_blank))
+
+ parsers.content_loop = ( V("Block")
+ * parsers.loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_separated
+ * parsers.loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.loop_body_pair.par^0)
+ * parsers.content_blank^0
+
+ parsers.indented_content = function()
+ return Ct( (V("Reference") + (parsers.blankline / ""))
+ * parsers.content_blank^0
+ * parsers.check_minimal_indent
+ * parsers.content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ * parsers.content_blank^0
+ + parsers.content_loop)
+ end
+
+ parsers.add_indent = function(pattern, name, breakable)
+ return Cg(Cmt( Cb("indent_info")
+ * Ct(pattern)
+ * (#parsers.linechar * Cc(false) + Cc(true)) -- check if starter is blank
+ * Cc(name)
+ * Cc(breakable),
+ process_starter_indent), "indent_info")
+ end
+
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24766,18 +27742,28 @@ function M.reader.new(writer, options)
parsers.dig = parsers.digit
end
- parsers.enumerator = C(parsers.dig^3 * parsers.period) * #parsers.spacing
- + C(parsers.dig^2 * parsers.period) * #parsers.spacing
- * (parsers.tab + parsers.space^1)
- + C(parsers.dig * parsers.period) * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.space * C(parsers.dig^2 * parsers.period)
- * #parsers.spacing
- + parsers.space * C(parsers.dig * parsers.period)
- * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * C(parsers.dig^1
- * parsers.period) * #parsers.spacing
+ parsers.enumerator = function(delimiter_type, interrupting)
+ local delimiter_range
+ local allowed_end
+ if interrupting then
+ delimiter_range = P("1")
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ delimiter_range = parsers.dig * parsers.dig^-8
+ allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ end
+
+ return parsers.check_trail
+ * Ct(C(delimiter_range) * C(delimiter_type))
+ * allowed_end
+ end
+
+ parsers.starter = parsers.bullet(parsers.dash)
+ + parsers.bullet(parsers.asterisk)
+ + parsers.bullet(parsers.plus)
+ + parsers.enumerator(parsers.period)
+ + parsers.enumerator(parsers.rparent)
+
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24786,20 +27772,369 @@ function M.reader.new(writer, options)
%
% \end{markdown}
% \begin{macrocode}
- -- strip off leading > and indents, and run through blocks
- parsers.blockquote_body = ((parsers.leader * parsers.more * parsers.space^-1)/""
- * parsers.linechar^0 * parsers.newline)^1
- * (-V("BlockquoteExceptions") * parsers.linechar^1
- * parsers.newline)^0
+ parsers.blockquote_start = parsers.check_trail * C(parsers.more) * C(parsers.spacechar^0)
+
+ parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", true)
+ * parsers.indented_content()
+ * remove_indent("bq")
if not options.breakableBlockquotes then
- parsers.blockquote_body = parsers.blockquote_body
- * (parsers.blankline^0 / "")
+ parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", false)
+ * parsers.indented_content()
+ * remove_indent("bq")
end
% \end{macrocode}
% \par
% \begin{markdown}
%
+%#### Helpers for Emphasis and Strong Emphasis (local)
+%
+% Parse the content of a table `content_part` with links, images and emphasis disabled.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function parse_content_part(content_part)
+ local rope = util.rope_to_string(content_part)
+ local parsed = self.parser_functions.parse_inlines_no_link_or_emphasis(rope)
+ parsed.indent_info = nil
+ return parsed
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Collect the content between the `opening_index` and `closing_index` in the delimiter table `t`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function collect_emphasis_content(t, opening_index, closing_index)
+ local content = {}
+
+ local content_part = {}
+ for i = opening_index, closing_index do
+ local value = t[i]
+
+ if value.rendered ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ content_part = {}
+ content[#content + 1] = value.rendered
+ value.rendered = nil
+ else
+ if value.type == "delimiter" and value.element == "emphasis" then
+ if value.is_active then
+ content_part[#content_part + 1] = string.rep(value.character, value.current_count)
+ end
+ else
+ content_part[#content_part + 1] = value.content
+ end
+ value.content = ''
+ value.is_active = false
+ end
+ end
+
+ if next(content_part) ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ end
+
+ return content
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Render content between the `opening_index` and `closing_index` in the delimiter table `t`
+% as emphasis.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function fill_emph(t, opening_index, closing_index)
+ local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1)
+ t[opening_index + 1].is_active = true
+ t[opening_index + 1].rendered = writer.emphasis(content)
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Render content between the `opening_index` and `closing_index` in the delimiter table `t`
+% as strong emphasis.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function fill_strong(t, opening_index, closing_index)
+ local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1)
+ t[opening_index + 1].is_active = true
+ t[opening_index + 1].rendered = writer.strong(content)
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check whether the opening delimiter `opening_delimiter` and closing delimiter `closing_delimiter` break
+% rule three together.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function breaks_three_rule(opening_delimiter, closing_delimiter)
+ return (opening_delimiter.is_closing or closing_delimiter.is_opening) and
+ ((opening_delimiter.original_count + closing_delimiter.original_count) % 3 == 0) and
+ (opening_delimiter.original_count % 3 ~= 0 or closing_delimiter.original_count % 3 ~= 0)
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Look for the first potential emphasis opener in the delimiter table `t` in the range from
+% `bottom_index` to `latest_index` that has the same character `character` as the closing
+% delimiter `closing_delimiter`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function find_emphasis_opener(t, bottom_index, latest_index, character, closing_delimiter)
+ for i = latest_index, bottom_index, -1 do
+ local value = t[i]
+ if value.is_active and
+ value.is_opening and
+ value.type == "delimiter" and
+ value.element == "emphasis" and
+ (value.character == character) and
+ (value.current_count > 0) then
+ if not breaks_three_rule(value, closing_delimiter) then
+ return i
+ end
+ end
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Iterate over the delimiters in the delimiter table `t`, producing emphasis or strong emphasis macros.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function process_emphasis(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ local value = t[i]
+ if value.type == "delimiter" and value.element == "emphasis" then
+ local delimiter_length = string.len(value.content)
+ value.character = string.sub(value.content, 1, 1)
+ value.current_count = delimiter_length
+ value.original_count = delimiter_length
+ end
+ end
+
+ local openers_bottom = {
+ ['*'] = {
+ [true] = {opening_index, opening_index, opening_index},
+ [false] = {opening_index, opening_index, opening_index}
+ },
+ ['_'] = {
+ [true] = {opening_index, opening_index, opening_index},
+ [false] = {opening_index, opening_index, opening_index}
+ }
+ }
+
+ local current_position = opening_index
+ local max_position = closing_index
+
+ while current_position <= max_position do
+ local value = t[current_position]
+
+ if value.type ~= "delimiter" or
+ value.element ~= "emphasis" or
+ not value.is_active or
+ not value.is_closing or
+ (value.current_count <= 0) then
+ current_position = current_position + 1
+ goto continue
+ end
+
+ local character = value.character
+ local is_opening = value.is_opening
+ local closing_length_modulo_three = value.original_count % 3
+
+ local current_openers_bottom = openers_bottom[character][is_opening][closing_length_modulo_three + 1]
+
+ local opener_position = find_emphasis_opener(t, current_openers_bottom, current_position - 1, character, value)
+
+ if (opener_position == nil) then
+ openers_bottom[character][is_opening][closing_length_modulo_three + 1] = current_position
+ current_position = current_position + 1
+ goto continue
+ end
+
+ local opening_delimiter = t[opener_position]
+
+ local current_opening_count = opening_delimiter.current_count
+ local current_closing_count = t[current_position].current_count
+
+ if (current_opening_count >= 2) and (current_closing_count >= 2) then
+ opening_delimiter.current_count = current_opening_count - 2
+ t[current_position].current_count = current_closing_count - 2
+ fill_strong(t, opener_position, current_position)
+ else
+ opening_delimiter.current_count = current_opening_count - 1
+ t[current_position].current_count = current_closing_count - 1
+ fill_emph(t, opener_position, current_position)
+ end
+
+ ::continue::
+ end
+ end
+
+ local cont = lpeg.R("\128\191") -- continuation byte
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Match a UTF-8 character of byte length `n`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function utf8_by_byte_count(n)
+ if (n == 1) then
+ return lpeg.R("\0\127")
+ end
+ if (n == 2) then
+ return lpeg.R("\194\223") * cont
+ end
+ if (n == 3) then
+ return lpeg.R("\224\239") * cont * cont
+ end
+ if (n == 4) then
+ return lpeg.R("\240\244") * cont * cont * cont
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Check if a there is a character of a type `chartype` between the start position `start_pos`
+% and end position `end_pos` in a string `s` relative to current index `i`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function check_unicode_type(s, i, start_pos, end_pos, chartype)
+ local c
+ local char_length
+ for pos = start_pos, end_pos, 1 do
+ if (start_pos < 0) then
+ char_length = -pos
+ else
+ char_length = pos + 1
+ end
+ c = lpeg.match({ C(utf8_by_byte_count(char_length)) },s,i+pos)
+ if (c ~= nil) and (unicode.utf8.match(c, chartype)) then
+ return i
+ end
+ end
+ end
+
+ local function check_preceding_unicode_punctuation(s, i)
+ return check_unicode_type(s, i, -4, -1, "%p")
+ end
+
+ local function check_preceding_unicode_whitespace(s, i)
+ return check_unicode_type(s, i, -4, -1, "%s")
+ end
+
+ local function check_following_unicode_punctuation(s, i)
+ return check_unicode_type(s, i, 0, 3, "%p")
+ end
+
+ local function check_following_unicode_whitespace(s, i)
+ return check_unicode_type(s, i, 0, 3, "%s")
+ end
+
+ parsers.unicode_preceding_punctuation = B(parsers.escapable)
+ + Cmt(parsers.succeed, check_preceding_unicode_punctuation)
+
+ parsers.unicode_preceding_whitespace = Cmt(parsers.succeed, check_preceding_unicode_whitespace)
+
+ parsers.unicode_following_punctuation = #parsers.escapable
+ + Cmt(parsers.succeed, check_following_unicode_punctuation)
+
+ parsers.unicode_following_whitespace = Cmt(parsers.succeed, check_following_unicode_whitespace)
+
+ parsers.delimiter_run = function(character)
+ return (B(parsers.backslash * character) + -B(character))
+ * character^1
+ * -#character
+ end
+
+ parsers.left_flanking_delimiter_run = function(character)
+ return (B( parsers.any)
+ * (parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace)
+ + -B(parsers.any))
+ * parsers.delimiter_run(character)
+ * parsers.unicode_following_punctuation
+ + parsers.delimiter_run(character)
+ * -#(parsers.unicode_following_punctuation + parsers.unicode_following_whitespace
+ + parsers.eof)
+ end
+
+ parsers.right_flanking_delimiter_run = function(character)
+ return parsers.unicode_preceding_punctuation
+ * parsers.delimiter_run(character)
+ * (parsers.unicode_following_punctuation + parsers.unicode_following_whitespace
+ + parsers.eof)
+ + (B(parsers.any)
+ * -(parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace))
+ * parsers.delimiter_run(character)
+ end
+
+ if options.underscores then
+ parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk)
+ + (-#parsers.right_flanking_delimiter_run(parsers.underscore)
+ + (parsers.unicode_preceding_punctuation
+ * #parsers.right_flanking_delimiter_run(parsers.underscore)))
+ * parsers.left_flanking_delimiter_run(parsers.underscore)
+
+ parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk)
+ + (-#parsers.left_flanking_delimiter_run(parsers.underscore)
+ + #(parsers.left_flanking_delimiter_run(parsers.underscore)
+ * parsers.unicode_following_punctuation))
+ * parsers.right_flanking_delimiter_run(parsers.underscore)
+ else
+ parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk)
+
+ parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk)
+ end
+
+ parsers.emph_capturing_open_and_close = #parsers.emph_start * #parsers.emph_end
+ * Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_start), "content")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(true), "is_closing"))
+
+ parsers.emph_capturing_open = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_start), "content")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(false), "is_closing"))
+
+ parsers.emph_capturing_close = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_end), "content")
+ * Cg(Cc(false), "is_opening")
+ * Cg(Cc(true), "is_closing"))
+
+ parsers.emph_open_or_close = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_open
+ + parsers.emph_capturing_close
+
+ parsers.emph_open = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_open
+
+ parsers.emph_close = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_close
+
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
%#### Helpers for Links and Link Reference Definitions (local)
%
% \end{markdown}
@@ -24818,14 +28153,16 @@ function M.reader.new(writer, options)
%
% \end{markdown}
% \begin{macrocode}
- function self.register_link(tag, url, title,
+ function self.register_link(_, tag, url, title,
attributes)
- tag = self.normalize_tag(tag)
- references[tag] = {
- url = url,
- title = title,
- attributes = attributes,
- }
+ local normalized_tag = self.normalize_tag(tag)
+ if references[normalized_tag] == nil then
+ references[normalized_tag] = {
+ url = url,
+ title = title,
+ attributes = attributes
+ }
+ end
return ""
end
@@ -24834,103 +28171,505 @@ function M.reader.new(writer, options)
% \begin{markdown}
%
% The \luamdef{reader->lookup_reference} method looks up a
-% reference with link label `tag`. When the reference exists
-% the method returns a link. The attributes of a link are
-% produced by merging the attributes of the link reference
-% and the optional `attributes`. Otherwise, the method returns a
-% two-tuple of `nil` and fallback text constructed from the
-% link text `label` and the optional spaces `sps` between the
-% link text and the link label.
-%
-% \end{markdown}
-% \begin{macrocode}
- function self.lookup_reference(label, sps, tag,
- attributes)
- local tagpart
- if not tag then
- tag = label
- tagpart = ""
- elseif tag == "" then
- tag = label
- tagpart = "[]"
- else
- tagpart = {
- "[",
- self.parser_functions.parse_inlines(tag),
- "]"
- }
- end
- if sps then
- tagpart = {sps, tagpart}
+% reference with link label `tag`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ function self.lookup_reference(tag)
+ return references[self.normalize_tag(tag)]
+ end
+
+ parsers.title_s_direct_ref = parsers.squote
+ * Cs((parsers.html_entities
+ + (parsers.anyescaped - parsers.squote - parsers.blankline^2))^0)
+ * parsers.squote
+
+ parsers.title_d_direct_ref = parsers.dquote
+ * Cs((parsers.html_entities
+ + (parsers.anyescaped - parsers.dquote - parsers.blankline^2))^0)
+ * parsers.dquote
+
+ parsers.title_p_direct_ref = parsers.lparent
+ * Cs((parsers.html_entities
+ + (parsers.anyescaped - parsers.lparent - parsers.rparent - parsers.blankline^2))^0)
+ * parsers.rparent
+
+ parsers.title_direct_ref = parsers.title_s_direct_ref
+ + parsers.title_d_direct_ref
+ + parsers.title_p_direct_ref
+
+ parsers.inline_direct_ref_inside = parsers.lparent * parsers.spnl
+ * Cg(parsers.url + Cc(""), "url")
+ * parsers.spnl
+ * Cg(parsers.title_direct_ref + Cc(""), "title")
+ * parsers.spnl * parsers.rparent
+
+ parsers.inline_direct_ref = parsers.lparent * parsers.spnlc
+ * Cg(parsers.url + Cc(""), "url")
+ * parsers.spnlc
+ * Cg(parsers.title + Cc(""), "title")
+ * parsers.spnlc * parsers.rparent
+
+ parsers.empty_link = parsers.lbracket
+ * parsers.rbracket
+
+ parsers.inline_link = parsers.link_text
+ * parsers.inline_direct_ref
+
+ parsers.full_link = parsers.link_text
+ * parsers.link_label
+
+ parsers.shortcut_link = parsers.link_label
+ * -(parsers.empty_link + parsers.link_label)
+
+ parsers.collapsed_link = parsers.link_label
+ * parsers.empty_link
+
+ parsers.image_opening = #(parsers.exclamation * parsers.inline_link)
+ * Cg(Cc("inline"), "link_type")
+ + #(parsers.exclamation * parsers.full_link)
+ * Cg(Cc("full"), "link_type")
+ + #(parsers.exclamation * parsers.collapsed_link)
+ * Cg(Cc("collapsed"), "link_type")
+ + #(parsers.exclamation * parsers.shortcut_link)
+ * Cg(Cc("shortcut"), "link_type")
+ + #(parsers.exclamation * parsers.empty_link)
+ * Cg(Cc("empty"), "link_type")
+
+ parsers.link_opening = #parsers.inline_link
+ * Cg(Cc("inline"), "link_type")
+ + #parsers.full_link
+ * Cg(Cc("full"), "link_type")
+ + #parsers.collapsed_link
+ * Cg(Cc("collapsed"), "link_type")
+ + #parsers.shortcut_link
+ * Cg(Cc("shortcut"), "link_type")
+ + #parsers.empty_link
+ * Cg(Cc("empty_link"), "link_type")
+ + #parsers.link_text
+ * Cg(Cc("link_text"), "link_type")
+
+ parsers.link_image_opening = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(false), "is_closing")
+ * ( Cg(Cc("image"), "element")
+ * parsers.image_opening
+ * Cg(parsers.exclamation * parsers.lbracket, "content")
+ + Cg(Cc("link"), "element")
+ * parsers.link_opening
+ * Cg(parsers.lbracket, "content")))
+
+ parsers.link_image_closing = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("link"), "element")
+ * Cg(Cc(false), "is_opening")
+ * Cg(Cc(true), "is_closing")
+ * ( Cg(Cc(true), "is_direct")
+ * Cg(parsers.rbracket * #parsers.inline_direct_ref, "content")
+ + Cg(Cc(false), "is_direct")
+ * Cg(parsers.rbracket, "content")))
+
+ parsers.link_image_open_or_close = parsers.link_image_opening
+ + parsers.link_image_closing
+
+ if options.html then
+ parsers.link_emph_precedence = parsers.inticks
+ + parsers.autolink
+ + parsers.html_inline_tags
+ else
+ parsers.link_emph_precedence = parsers.inticks
+ + parsers.autolink
+ end
+
+ parsers.link_and_emph_endline = parsers.newline
+ * ((parsers.check_minimal_indent
+ * -V("EndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("EndlineExceptions")
+ * -parsers.starter) / "")
+ * parsers.spacechar^0 / "\n"
+
+ parsers.link_and_emph_content = Ct( Cg(Cc("content"), "type")
+ * Cg(Cs(( parsers.link_emph_precedence
+ + parsers.backslash * parsers.any
+ + parsers.link_and_emph_endline
+ + (parsers.linechar
+ - parsers.blankline^2
+ - parsers.link_image_open_or_close
+ - parsers.emph_open_or_close))^0), "content"))
+
+ parsers.link_and_emph_table = (parsers.link_image_opening + parsers.emph_open)
+ * parsers.link_and_emph_content
+ * ((parsers.link_image_open_or_close + parsers.emph_open_or_close)
+ * parsers.link_and_emph_content)^1
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Collect the content between the `opening_index` and `closing_index` in the delimiter table `t`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function collect_link_content(t, opening_index, closing_index)
+ local content = {}
+ for i = opening_index, closing_index do
+ content[#content + 1] = t[i].content
end
- tag = self.normalize_tag(tag)
- local r = references[tag]
- if r then
- local merged_attributes = {}
- for _, attribute in ipairs(r.attributes or {}) do
- table.insert(merged_attributes, attribute)
+ return util.rope_to_string(content)
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Look for the closest potential link opener in the delimiter table `t` in the range from
+% `bottom_index` to `latest_index`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function find_link_opener(t, bottom_index, latest_index)
+ for i = latest_index, bottom_index, -1 do
+ local value = t[i]
+ if value.type == "delimiter" and
+ value.is_opening and
+ (value.element == "link" or value.element == "image")
+ and not value.removed then
+ if value.is_active then
+ return i
+ end
+ value.removed = true
+ return nil
end
- for _, attribute in ipairs(attributes or {}) do
- table.insert(merged_attributes, attribute)
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Find the position of a delimiter that closes a full link after an an index `latest_index`
+% in the delimiter table `t`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function find_next_link_closing_index(t, latest_index)
+ for i = latest_index, #t do
+ local value = t[i]
+ if value.is_closing and
+ value.element == "link" and
+ not value.removed then
+ return i
end
- if #merged_attributes == 0 then
- merged_attributes = nil
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Disable all preceding opening link delimiters by marking them inactive with the `is_active` property
+% to prevent links within links. Images within links are allowed.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function disable_previous_link_openers(t, opening_index)
+ if t[opening_index].element == "image" then
+ return
+ end
+
+ for i = opening_index, 1, -1 do
+ local value = t[i]
+ if value.is_active and
+ value.type == "delimiter" and
+ value.is_opening and
+ value.element == "link" then
+ value.is_active = false
end
- return {
- url = r.url,
- title = r.title,
- attributes = merged_attributes,
- }
- else
- return nil, {
- "[",
- self.parser_functions.parse_inlines(label),
- "]",
- tagpart
- }
end
end
- -- lookup link reference and return a link, if the reference is found,
- -- or a bracketed label otherwise.
- local function indirect_link(label, sps, tag)
- return writer.defer_call(function()
- local r,fallback = self.lookup_reference(label, sps, tag)
- if r then
- return writer.link(
- self.parser_functions.parse_inlines_no_link(label),
- r.url, r.title)
- else
- return fallback
+% \end{macrocode}
+% \begin{markdown}
+%
+% Disable the delimiters between the `opening_index` and `closing_index` in the delimiter table `t`
+% by marking them inactive with the `is_active` property.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function disable_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ local value = t[i]
+ if value.is_active then
+ value.is_active = false
+ if value.type == "delimiter" then
+ value.removed = true
+ end
end
- end)
+ end
end
- -- lookup image reference and return an image, if the reference is found,
- -- or a bracketed label otherwise.
- local function indirect_image(label, sps, tag)
- return writer.defer_call(function()
- local r,fallback = self.lookup_reference(label, sps, tag)
- if r then
- return writer.image(writer.string(label), r.url, r.title)
- else
- return {"!", fallback}
+% \end{macrocode}
+% \begin{markdown}
+%
+% Clear the parsed content between the `opening_index` and `closing_index` in the delimiter table `t`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function delete_parsed_content_in_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ t[i].rendered = nil
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Clear the content between the `opening_index` and `closing_index` in the delimiter table `t`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function empty_content_in_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ t[i].content = ''
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Join the attributes from the link reference definition `reference_attributes` with the link's own
+% attributes `own_attributes`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function join_attributes(reference_attributes, own_attributes)
+ local merged_attributes = {}
+ for _, attribute in ipairs(reference_attributes or {}) do
+ table.insert(merged_attributes, attribute)
+ end
+ for _, attribute in ipairs(own_attributes or {}) do
+ table.insert(merged_attributes, attribute)
+ end
+ if next(merged_attributes) == nil then
+ merged_attributes = nil
+ end
+ return merged_attributes
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Parse content between two delimiters in the delimiter table `t`. Produce the respective link and image
+% macros.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function render_link_or_image(t, opening_index, closing_index, content_end_index, reference)
+ process_emphasis(t, opening_index, content_end_index)
+ local mapped = collect_emphasis_content(t, opening_index + 1, content_end_index - 1)
+
+ local rendered = {}
+ if (t[opening_index].element == "link") then
+ rendered = writer.link(mapped, reference.url, reference.title, reference.attributes)
+ end
+
+ if (t[opening_index].element == "image") then
+ rendered = writer.image(mapped, reference.url, reference.title, reference.attributes)
+ end
+
+ t[opening_index].rendered = rendered
+ delete_parsed_content_in_range(t, opening_index + 1, closing_index)
+ empty_content_in_range(t, opening_index, closing_index)
+ disable_previous_link_openers(t, opening_index)
+ disable_range(t, opening_index, closing_index)
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Match the link destination of an inline link at index `closing_index` in table `t`
+% when `match_reference` is true. Additionally, match attributes when the option
+% \Opt{linkAttributes} is enabled.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function resolve_inline_following_content(t, closing_index, match_reference, match_link_attributes)
+ local content = ""
+ for i = closing_index + 1, #t do
+ content = content .. t[i].content
+ end
+
+ local matching_content = parsers.succeed
+
+ if match_reference then
+ matching_content = matching_content * parsers.inline_direct_ref_inside
+ end
+
+ if match_link_attributes then
+ matching_content = matching_content * Cg(Ct(parsers.attributes^-1), "attributes")
+ end
+
+ local matched = lpeg.match(Ct(matching_content * Cg(Cp(), "end_position")), content)
+
+ local matched_count = matched.end_position - 1
+ for i = closing_index + 1, #t do
+ local value = t[i]
+
+ local chars_left = matched_count
+ matched_count = matched_count - #value.content
+
+ if matched_count <= 0 then
+ value.content = value.content:sub(chars_left + 1)
+ break
end
- end)
+
+ value.content = ''
+ value.is_active = false
+ end
+
+ local attributes = matched.attributes
+ if attributes == nil or next(attributes) == nil then
+ attributes = nil
+ end
+
+ return {
+ url = matched.url or "",
+ title = matched.title or "",
+ attributes = attributes
+ }
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Resolve an inline link [a](b "c") from the delimiters at `opening_index` and `closing_index`
+% within a delimiter table `t`. Here, compared to other types of links, no reference definition is needed.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function resolve_inline_link(t, opening_index, closing_index)
+ local inline_content = resolve_inline_following_content(t, closing_index, true, t.match_link_attributes)
+ render_link_or_image(t, opening_index, closing_index, closing_index, inline_content)
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Resolve a shortcut link [a] from the delimiters at `opening_index` and `closing_index` within a delimiter table `t`.
+% Continue if a tag `a` is not found in the references.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function resolve_shortcut_link(t, opening_index, closing_index)
+ local content = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local r = self.lookup_reference(content)
+
+ if r then
+ local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes)
+ r.attributes = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, closing_index, closing_index, r)
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Resolve a full link [a][b] from the delimiters at `opening_index` and `closing_index` within a delimiter table `t`.
+% Continue if a tag `b` is not found in the references.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function resolve_full_link(t, opening_index, closing_index)
+ local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4)
+ local next_link_content = collect_link_content(t, closing_index + 3, next_link_closing_index - 1)
+ local r = self.lookup_reference(next_link_content)
+
+ if r then
+ local inline_content = resolve_inline_following_content(t, next_link_closing_index, false,
+ t.match_link_attributes)
+ r.attributes = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r)
+ end
+ end
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Resolve a collapsed link [a][] from the delimiters at `opening_index` and `closing_index`
+% within a delimiter table `t`.
+% Continue if a tag `a` is not found in the references.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function resolve_collapsed_link(t, opening_index, closing_index)
+ local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4)
+ local content = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local r = self.lookup_reference(content)
+
+ if r then
+ local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes)
+ r.attributes = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r)
+ end
end
- parsers.direct_link_tail = parsers.spnl
- * parsers.lparent
- * (parsers.url + Cc("")) -- link can be empty [foo]()
- * parsers.optionaltitle
- * parsers.rparent
+% \end{macrocode}
+% \begin{markdown}
+%
+% Parse a table of link and emphasis delimiters `t`.
+% First, iterate over the link delimiters and produce either link or image macros.
+% Then run `process_emphasis` over the entire delimiter table, resolving emphasis and strong
+% emphasis and parsing any content outside of closed delimiters.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function process_links_and_emphasis(t)
+ for _,value in ipairs(t) do
+ value.is_active = true
+ end
+
+ for i,value in ipairs(t) do
+ if not value.is_closing or
+ value.type ~= "delimiter" or
+ not (value.element == "link" or value.element == "image") then
+ goto continue
+ end
+
+ local opener_position = find_link_opener(t, 1, i - 1)
+ if (opener_position == nil) then
+ goto continue
+ end
+
+ local opening_delimiter = t[opener_position]
+ opening_delimiter.removed = true
+
+ local link_type = opening_delimiter.link_type
+
+ if (link_type == "inline") then
+ resolve_inline_link(t, opener_position, i)
+ end
+ if (link_type == "shortcut") then
+ resolve_shortcut_link(t, opener_position, i)
+ end
+ if (link_type == "full") then
+ resolve_full_link(t, opener_position, i)
+ end
+ if (link_type == "collapsed") then
+ resolve_collapsed_link(t, opener_position, i)
+ end
+
+ ::continue::
+ end
- parsers.direct_link = (parsers.tag / self.parser_functions.parse_inlines_no_link)
- * parsers.direct_link_tail
+ t[#t].content = t[#t].content:gsub("%s*$","")
+
+ process_emphasis(t, 1, #t)
+ local final_result = collect_emphasis_content(t, 1, #t)
+ return final_result
+ end
+
+ function self.defer_link_and_emphasis_processing(delimiter_table)
+ return writer.defer_call(function()
+ return process_links_and_emphasis(delimiter_table)
+ end)
+ end
- parsers.direct_image = parsers.exclamation
- * (parsers.tag / self.parser_functions.parse_inlines)
- * parsers.direct_link_tail
% \end{macrocode}
% \par
% \begin{markdown}
@@ -24942,7 +28681,7 @@ function M.reader.new(writer, options)
parsers.Str = (parsers.normalchar * (parsers.normalchar + parsers.at)^0)
/ writer.string
- parsers.Symbol = (V("SpecialChar") - parsers.tightblocksep)
+ parsers.Symbol = (parsers.backtick^1 + V("SpecialChar"))
/ writer.string
parsers.Ellipsis = P("...") / writer.ellipsis
@@ -24954,83 +28693,112 @@ function M.reader.new(writer, options)
if options.blankBeforeBlockquote then
parsers.bqstart = parsers.fail
else
- parsers.bqstart = parsers.more
+ parsers.bqstart = parsers.blockquote_start
end
if options.blankBeforeHeading then
parsers.headerstart = parsers.fail
else
- parsers.headerstart = parsers.hash
- + (parsers.line * (parsers.equal^1 + parsers.dash^1)
- * parsers.optionalspace * parsers.newline)
+ parsers.headerstart = parsers.atx_heading
+ end
+
+ if options.blankBeforeList then
+ parsers.interrupting_bullets = parsers.fail
+ parsers.interrupting_enumerators = parsers.fail
+ else
+ parsers.interrupting_bullets = parsers.bullet(parsers.dash, true)
+ + parsers.bullet(parsers.asterisk, true)
+ + parsers.bullet(parsers.plus, true)
+
+ parsers.interrupting_enumerators = parsers.enumerator(parsers.period, true)
+ + parsers.enumerator(parsers.rparent, true)
+ end
+
+ if options.html then
+ parsers.html_interrupting = parsers.check_trail
+ * ( parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_close_tag
+ + parsers.html_incomplete_open_special_tag
+ + parsers.html_comment_start
+ + parsers.html_cdatasection_start
+ + parsers.html_declaration_start
+ + parsers.html_instruction_start
+ - parsers.html_close_special_tag
+ - parsers.html_empty_special_tag)
+ else
+ parsers.html_interrupting = parsers.fail
end
parsers.EndlineExceptions
= parsers.blankline -- paragraph break
- + parsers.tightblocksep -- nested list
+ parsers.eof -- end of document
+ parsers.bqstart
+ + parsers.thematic_break_lines
+ + parsers.interrupting_bullets
+ + parsers.interrupting_enumerators
+ parsers.headerstart
+ + parsers.html_interrupting
- parsers.Endline = parsers.newline
- * -V("EndlineExceptions")
- * parsers.spacechar^0
- / (options.hardLineBreaks and writer.hard_line_break
- or writer.space)
+ parsers.NoSoftLineBreakEndlineExceptions = parsers.EndlineExceptions
+ parsers.endline = parsers.newline
+ * (parsers.check_minimal_indent
+ * -V("EndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("EndlineExceptions")
+ * -parsers.starter)
+ * parsers.spacechar^0
+
+ parsers.Endline = parsers.endline
+ / writer.soft_line_break
+
+ parsers.EndlineNoSub = parsers.endline
+
+ parsers.NoSoftLineBreakEndline
+ = parsers.newline
+ * (parsers.check_minimal_indent
+ * -V("NoSoftLineBreakEndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("NoSoftLineBreakEndlineExceptions")
+ * -parsers.starter)
+ * parsers.spacechar^0
+ / writer.space
+
+ parsers.EndlineBreak = parsers.backslash * parsers.Endline
+ / writer.hard_line_break
+
parsers.OptionalIndent
= parsers.spacechar^1 / writer.space
- parsers.Space = parsers.spacechar^2 * parsers.Endline / writer.hard_line_break
- + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / ""
+ parsers.Space = parsers.spacechar^2 * parsers.Endline
+ / writer.hard_line_break
+ + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs
+ + parsers.spacechar^1 * parsers.Endline
+ / writer.soft_line_break
+ + parsers.spacechar^1 * -parsers.newline / self.expandtabs
+
+ parsers.NoSoftLineBreakSpace
+ = parsers.spacechar^2 * parsers.Endline
+ / writer.hard_line_break
+ + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs
+ parsers.spacechar^1 * parsers.Endline
- * parsers.optionalspace
- / (options.hardLineBreaks
- and writer.hard_line_break
- or writer.space)
- + parsers.spacechar^1 * parsers.optionalspace
- / writer.space
+ / writer.soft_line_break
+ + parsers.spacechar^1 * -parsers.newline / self.expandtabs
parsers.NonbreakingEndline
- = parsers.newline
- * -V("EndlineExceptions")
- * parsers.spacechar^0
- / (options.hardLineBreaks and writer.hard_line_break
- or writer.nbsp)
+ = parsers.endline
+ / writer.soft_line_break
parsers.NonbreakingSpace
- = parsers.spacechar^2 * parsers.Endline / writer.hard_line_break
+ = parsers.spacechar^2 * parsers.Endline
+ / writer.hard_line_break
+ parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / ""
+ parsers.spacechar^1 * parsers.Endline
* parsers.optionalspace
- / (options.hardLineBreaks
- and writer.hard_line_break
- or writer.nbsp)
+ / writer.soft_line_break
+ parsers.spacechar^1 * parsers.optionalspace
/ writer.nbsp
- if options.underscores then
- parsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks,
- parsers.doubleasterisks)
- + parsers.between(parsers.Inline, parsers.doubleunderscores,
- parsers.doubleunderscores)
- ) / writer.strong
-
- parsers.Emph = ( parsers.between(parsers.Inline, parsers.asterisk,
- parsers.asterisk)
- + parsers.between(parsers.Inline, parsers.underscore,
- parsers.underscore)
- ) / writer.emphasis
- else
- parsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks,
- parsers.doubleasterisks)
- ) / writer.strong
-
- parsers.Emph = ( parsers.between(parsers.Inline, parsers.asterisk,
- parsers.asterisk)
- ) / writer.emphasis
- end
-
% \end{macrocode}
% \par
% \begin{markdown}
@@ -25046,7 +28814,6 @@ function self.auto_link_url(url, attributes)
return writer.link(writer.escape(url),
url, nil, attributes)
end
-
% \end{macrocode}
% \par
% \begin{markdown}
@@ -25074,39 +28841,21 @@ end
= parsers.auto_link_relative_reference
/ self.auto_link_url
- parsers.DirectLink = parsers.direct_link
- / writer.link
-
- parsers.IndirectLink = parsers.indirect_link
- / indirect_link
-
- -- parse a link or image (direct or indirect)
- parsers.Link = parsers.DirectLink + parsers.IndirectLink
-
- parsers.DirectImage = parsers.direct_image
- / writer.image
-
- parsers.IndirectImage = parsers.indirect_image
- / indirect_image
-
- parsers.Image = parsers.DirectImage + parsers.IndirectImage
-
- -- avoid parsing long strings of * or _ as emph/strong
- parsers.UlOrStarLine = parsers.asterisk^4 + parsers.underscore^4
- / writer.string
+ parsers.LinkAndEmph = Ct(parsers.link_and_emph_table)
+ / self.defer_link_and_emphasis_processing
parsers.EscapedChar = parsers.backslash * C(parsers.escapable) / writer.string
- parsers.InlineHtml = parsers.emptyelt_any / writer.inline_html_tag
- + (parsers.htmlcomment / self.parser_functions.parse_inlines_no_html)
- / writer.inline_html_comment
- + parsers.htmlinstruction
- + parsers.openelt_any / writer.inline_html_tag
- + parsers.closeelt_any / writer.inline_html_tag
+ parsers.InlineHtml = Cs(parsers.html_inline_comment) / writer.inline_html_comment
+ + Cs(parsers.html_any_empty_inline_tag
+ + parsers.html_inline_instruction
+ + parsers.html_inline_cdatasection
+ + parsers.html_inline_declaration
+ + parsers.html_any_open_inline_tag
+ + parsers.html_any_close_tag)
+ / writer.inline_html_tag
- parsers.HtmlEntity = parsers.hexentity / entities.hex_entity / writer.string
- + parsers.decentity / entities.dec_entity / writer.string
- + parsers.tagentity / entities.char_entity / writer.string
+ parsers.HtmlEntity = parsers.html_entities / writer.string
% \end{macrocode}
% \par
% \begin{markdown}
@@ -25115,40 +28864,40 @@ end
%
% \end{markdown}
% \begin{macrocode}
- parsers.DisplayHtml = (parsers.htmlcomment / self.parser_functions.parse_blocks_nested)
- / writer.block_html_comment
- + parsers.emptyelt_block / writer.block_html_element
- + parsers.openelt_exact("hr") / writer.block_html_element
- + parsers.in_matched_block_tags / writer.block_html_element
- + parsers.htmlinstruction
+ parsers.DisplayHtml = Cs(parsers.check_trail
+ * ( parsers.html_comment
+ + parsers.html_special_block
+ + parsers.html_block
+ + parsers.html_any_block
+ + parsers.html_instruction
+ + parsers.html_cdatasection
+ + parsers.html_declaration))
+ / writer.block_html_element
- parsers.Verbatim = Cs( (parsers.blanklines
- * ((parsers.indentedline - parsers.blankline))^1)^1
- ) / self.expandtabs / writer.verbatim
+ parsers.indented_non_blank_line = parsers.indentedline - parsers.blankline
- parsers.BlockquoteExceptions = parsers.leader * parsers.more
- + parsers.blankline
+ parsers.Verbatim = Cs(
+ parsers.check_code_trail
+ * (parsers.line - parsers.blankline)
+ * ((parsers.check_minimal_blank_indent_and_full_code_trail * parsers.blankline)^0
+ * ((parsers.check_minimal_indent / "") * parsers.check_code_trail
+ * (parsers.line - parsers.blankline))^1)^0
+ ) / self.expandtabs / writer.verbatim
- parsers.Blockquote = Cs(parsers.blockquote_body^1)
- / self.parser_functions.parse_blocks_nested
+ parsers.Blockquote = parsers.blockquote_body
/ writer.blockquote
- parsers.ThematicBreak = ( parsers.lineof(parsers.asterisk)
- + parsers.lineof(parsers.dash)
- + parsers.lineof(parsers.underscore)
- ) / writer.thematic_break
+ parsers.ThematicBreak = parsers.thematic_break_lines
+ / writer.thematic_break
parsers.Reference = parsers.define_reference_parser
- * parsers.blankline^1
/ self.register_link
- parsers.Paragraph = parsers.nonindentspace * Ct(parsers.Inline^1)
- * ( parsers.newline
- * ( parsers.blankline^1
- + #V("EndlineExceptions")
- )
- + parsers.eof)
- / writer.paragraph
+ parsers.Paragraph = parsers.freeze_trail
+ * (Ct((parsers.Inline)^1)
+ * (parsers.newline + parsers.eof)
+ * parsers.unfreeze_trail
+ / writer.paragraph)
parsers.Plain = parsers.nonindentspace * Ct(parsers.Inline^1)
/ writer.plain
@@ -25160,7 +28909,6 @@ end
%
% \end{markdown}
% \begin{macrocode}
- parsers.starter = parsers.bullet + parsers.enumerator
if options.taskLists then
parsers.tickbox = ( parsers.ticked_box
@@ -25171,43 +28919,117 @@ end
parsers.tickbox = parsers.fail
end
- -- we use \001 as a separator between a tight list item and a
- -- nested list under it.
- parsers.NestedList = Cs((parsers.optionallyindentedline
- - parsers.starter)^1)
- / function(a) return "\001"..a end
-
- parsers.ListBlockLine = parsers.optionallyindentedline
- - parsers.blankline - (parsers.indent^-1
- * parsers.starter)
-
- parsers.ListBlock = parsers.line * parsers.ListBlockLine^0
-
- parsers.ListContinuationBlock = parsers.blanklines * (parsers.indent / "")
- * parsers.ListBlock
+ parsers.list_blank = parsers.conditionally_indented_blankline
+
+ parsers.ref_or_block_list_separated = parsers.sep_group_no_output(parsers.list_blank)
+ * parsers.minimally_indented_ref
+ + parsers.block_sep_group(parsers.list_blank)
+ * parsers.minimally_indented_block
+
+ parsers.ref_or_block_non_separated = parsers.minimally_indented_ref
+ + (parsers.succeed / writer.interblocksep)
+ * parsers.minimally_indented_block
+ - parsers.minimally_indented_blankline
+
+ parsers.tight_list_loop_body_pair =
+ parsers.create_loop_body_pair(parsers.ref_or_block_non_separated,
+ parsers.minimally_indented_par_or_plain_no_blank,
+ (parsers.succeed / writer.interblocksep),
+ (parsers.succeed / writer.paragraphsep))
+
+ parsers.loose_list_loop_body_pair =
+ parsers.create_loop_body_pair(parsers.ref_or_block_list_separated,
+ parsers.minimally_indented_par_or_plain,
+ parsers.block_sep_group(parsers.list_blank),
+ parsers.par_sep_group(parsers.list_blank))
+
+ parsers.tight_list_content_loop = V("Block")
+ * parsers.tight_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_non_separated
+ * parsers.tight_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.tight_list_loop_body_pair.par^0
+
+ parsers.loose_list_content_loop = V("Block")
+ * parsers.loose_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_list_separated
+ * parsers.loose_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.loose_list_loop_body_pair.par^0
+
+ parsers.list_item_tightness_condition = -#( parsers.list_blank^0
+ * parsers.minimally_indented_ref_or_block_or_par)
+ * remove_indent("li")
+ + remove_indent("li")
+ * parsers.fail
+
+ parsers.indented_content_tight = Ct( (parsers.blankline / "")
+ * #parsers.list_blank
+ * remove_indent("li")
+ + ( (V("Reference") + (parsers.blankline / ""))
+ * parsers.check_minimal_indent
+ * parsers.tight_list_content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ + (parsers.tickbox^-1 / writer.escape)
+ * parsers.tight_list_content_loop
+ )
+ * parsers.list_item_tightness_condition
+ )
+
+ parsers.indented_content_loose = Ct( (parsers.blankline / "")
+ * #parsers.list_blank
+ + ( (V("Reference") + (parsers.blankline / ""))
+ * parsers.check_minimal_indent
+ * parsers.loose_list_content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ + (parsers.tickbox^-1 / writer.escape)
+ * parsers.loose_list_content_loop
+ )
+ )
parsers.TightListItem = function(starter)
- return -parsers.ThematicBreak
- * (Cs(starter / "" * parsers.tickbox^-1 * parsers.ListBlock * parsers.NestedList^-1)
- / self.parser_functions.parse_blocks_nested)
- * -(parsers.blanklines * parsers.indent)
+ return -parsers.ThematicBreak
+ * parsers.add_indent(starter, "li")
+ * parsers.indented_content_tight
end
parsers.LooseListItem = function(starter)
- return -parsers.ThematicBreak
- * Cs( starter / "" * parsers.tickbox^-1 * parsers.ListBlock * Cc("\n")
- * (parsers.NestedList + parsers.ListContinuationBlock^0)
- * (parsers.blanklines / "\n\n")
- ) / self.parser_functions.parse_blocks_nested
+ return -parsers.ThematicBreak
+ * parsers.add_indent(starter, "li")
+ * parsers.indented_content_loose
+ * remove_indent("li")
end
- parsers.BulletList = ( Ct(parsers.TightListItem(parsers.bullet)^1) * Cc(true)
- * parsers.skipblanklines * -parsers.bullet
- + Ct(parsers.LooseListItem(parsers.bullet)^1) * Cc(false)
- * parsers.skipblanklines )
- / writer.bulletlist
+ parsers.BulletListOfType = function(bullet_type)
+ local bullet = parsers.bullet(bullet_type)
+ return ( Ct( parsers.TightListItem(bullet)
+ * ( (parsers.check_minimal_indent / "")
+ * parsers.TightListItem(bullet)
+ )^0
+ )
+ * Cc(true)
+ * -#( (parsers.list_blank^0 / "")
+ * parsers.check_minimal_indent
+ * (bullet - parsers.ThematicBreak)
+ )
+ + Ct( parsers.LooseListItem(bullet)
+ * ( (parsers.list_blank^0 / "")
+ * (parsers.check_minimal_indent / "")
+ * parsers.LooseListItem(bullet)
+ )^0
+ )
+ * Cc(false)
+ ) / writer.bulletlist
+ end
+
+ parsers.BulletList = parsers.BulletListOfType(parsers.dash)
+ + parsers.BulletListOfType(parsers.asterisk)
+ + parsers.BulletListOfType(parsers.plus)
- local function ordered_list(items,tight,startnum)
+ local function ordered_list(items,tight,starter)
+ local startnum = starter[2][1]
if options.startNumber then
startnum = tonumber(startnum) or 1 -- fallback for '#'
if startnum ~= nil then
@@ -25219,14 +29041,23 @@ end
return writer.orderedlist(items,tight,startnum)
end
- parsers.OrderedList = Cg(parsers.enumerator, "listtype") *
- ( Ct(parsers.TightListItem(Cb("listtype"))
- * parsers.TightListItem(parsers.enumerator)^0)
- * Cc(true) * parsers.skipblanklines * -parsers.enumerator
- + Ct(parsers.LooseListItem(Cb("listtype"))
- * parsers.LooseListItem(parsers.enumerator)^0)
- * Cc(false) * parsers.skipblanklines
- ) * Cb("listtype") / ordered_list
+ parsers.OrderedListOfType = function(delimiter_type)
+ local enumerator = parsers.enumerator(delimiter_type)
+ return Cg(enumerator, "listtype")
+ * (Ct( parsers.TightListItem(Cb("listtype"))
+ * ((parsers.check_minimal_indent / "") * parsers.TightListItem(enumerator))^0)
+ * Cc(true)
+ * -#((parsers.list_blank^0 / "")
+ * parsers.check_minimal_indent * enumerator)
+ + Ct( parsers.LooseListItem(Cb("listtype"))
+ * ((parsers.list_blank^0 / "")
+ * (parsers.check_minimal_indent / "") * parsers.LooseListItem(enumerator))^0)
+ * Cc(false)
+ ) * Ct(Cb("listtype")) / ordered_list
+ end
+
+ parsers.OrderedList = parsers.OrderedListOfType(parsers.period)
+ + parsers.OrderedListOfType(parsers.rparent)
% \end{macrocode}
% \par
% \begin{markdown}
@@ -25237,7 +29068,6 @@ end
% \begin{macrocode}
parsers.Blank = parsers.blankline / ""
+ V("Reference")
- + (parsers.tightblocksep / "\n")
% \end{macrocode}
% \par
% \begin{markdown}
@@ -25246,22 +29076,45 @@ end
%
% \end{markdown}
% \begin{macrocode}
+ function parsers.parse_heading_text(s)
+ local inlines = self.parser_functions.parse_inlines(s)
+ local flatten_inlines = self.writer.flatten_inlines
+ self.writer.flatten_inlines = true
+ local flat_text = self.parser_functions.parse_inlines(s)
+ flat_text = util.rope_to_string(flat_text)
+ self.writer.flatten_inlines = flatten_inlines
+ return {flat_text, inlines}
+ end
+
-- parse atx header
- parsers.AtxHeading = Cg(parsers.heading_start, "level")
- * parsers.optionalspace
- * (C(parsers.line)
+ parsers.AtxHeading = parsers.check_trail_no_rem
+ * Cg(parsers.heading_start, "level")
+ * ((C( parsers.optionalspace
+ * parsers.hash^0
+ * parsers.optionalspace
+ * parsers.newline)
+ + parsers.spacechar^1
+ * C(parsers.line))
/ strip_atx_end
- / self.parser_functions.parse_inlines)
+ / parsers.parse_heading_text)
* Cb("level")
/ writer.heading
- parsers.SetextHeading = #(parsers.line * S("=-"))
- * Ct(parsers.linechar^1
- / self.parser_functions.parse_inlines)
- * parsers.newline
- * parsers.heading_level
- * parsers.optionalspace
+ parsers.heading_line = parsers.linechar^1
+ - parsers.thematic_break_lines
+
+ parsers.heading_text = parsers.heading_line
+ * ((V("Endline") / "\n") * (parsers.heading_line - parsers.heading_level))^0
+ * parsers.newline^-1
+
+ parsers.SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem
+ * #(parsers.heading_text
+ * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level)
+ * Cs(parsers.heading_text)
+ / parsers.parse_heading_text
+ * parsers.check_minimal_indent_and_trail * parsers.heading_level
* parsers.newline
+ * parsers.unfreeze_trail
/ writer.heading
parsers.Heading = parsers.AtxHeading + parsers.SetextHeading
@@ -25364,12 +29217,42 @@ end
Blocks = V("InitializeState")
* ( V("ExpectedJekyllData")
- * (V("Blank")^0 / writer.interblocksep))^-1
+ * (V("Blank")^0 / writer.interblocksep)
+ )^-1
* V("Blank")^0
- * V("Block")^-1
- * ( V("Blank")^0 / writer.interblocksep
- * V("Block"))^0
- * V("Blank")^0 * parsers.eof,
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Only create interblock separators between pairs of blocks that are not
+% both paragraphs. Between a pair of paragraphs, any number of blank
+% lines will always produce a paragraph separator.
+%
+% \end{markdown}
+% \begin{macrocode}
+ * ( V("Block")
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ + ( V("Paragraph") + V("Plain") )
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ * V("Block")
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ + ( V("Paragraph") + V("Plain") )
+ * ( V("Blank")^0 * parsers.eof
+ + V("Blank")^0 / writer.paragraphsep
+ )
+ )^0,
ExpectedJekyllData = parsers.fail,
@@ -25381,23 +29264,25 @@ end
ThematicBreak = parsers.ThematicBreak,
BulletList = parsers.BulletList,
OrderedList = parsers.OrderedList,
- Heading = parsers.Heading,
DisplayHtml = parsers.DisplayHtml,
+ Heading = parsers.Heading,
Paragraph = parsers.Paragraph,
Plain = parsers.Plain,
EndlineExceptions = parsers.EndlineExceptions,
- BlockquoteExceptions = parsers.BlockquoteExceptions,
+ NoSoftLineBreakEndlineExceptions
+ = parsers.NoSoftLineBreakEndlineExceptions,
Str = parsers.Str,
Space = parsers.Space,
+ NoSoftLineBreakSpace = parsers.NoSoftLineBreakSpace,
OptionalIndent = parsers.OptionalIndent,
Endline = parsers.Endline,
- UlOrStarLine = parsers.UlOrStarLine,
- Strong = parsers.Strong,
- Emph = parsers.Emph,
- Link = parsers.Link,
- Image = parsers.Image,
+ EndlineNoSub = parsers.EndlineNoSub,
+ NoSoftLineBreakEndline
+ = parsers.NoSoftLineBreakEndline,
+ EndlineBreak = parsers.EndlineBreak,
+ LinkAndEmph = parsers.LinkAndEmph,
Code = parsers.Code,
AutoLinkUrl = parsers.AutoLinkUrl,
AutoLinkEmail = parsers.AutoLinkEmail,
@@ -25500,13 +29385,26 @@ end
% \end{markdown}
% \begin{macrocode}
self.initialize_named_group = function(name, value)
+ local pattern = Ct("")
+ if value ~= nil then
+ pattern = pattern / value
+ end
syntax.InitializeState = syntax.InitializeState
- * Cg(Ct("") / value, name)
+ * Cg(pattern, name)
end
% \end{macrocode}
% \par
% \begin{markdown}
%
+% Add a named group for indentation.
+%
+% \end{markdown}
+% \begin{macrocode}
+ self.initialize_named_group("indent_info")
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
% Apply syntax extensions.
%
% \end{markdown}
@@ -25578,20 +29476,6 @@ end
% \par
% \begin{markdown}
%
-% Duplicate the `Inline` rule as `IndentedInline` with the right-hand-side
-% terminal symbol `Space` replaced with `OptionalIndent`.
-%
-% \end{markdown}
-% \begin{macrocode}
- walkable_syntax["IndentedInline"] = util.table_copy(
- walkable_syntax["Inline"])
- self.insert_pattern(
- "IndentedInline instead of Space",
- "OptionalIndent")
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
% Materialize \luamref{walkable_syntax} and merge it into \luamref{syntax} to
% produce the complete \acro{peg} grammar of markdown. Whenever a rule exists
% in both \luamref{walkable_syntax} and \luamref{syntax}, the rule from
@@ -25607,7 +29491,7 @@ end
% \begin{markdown}
%
% Although the interface of the \luamref{reader->insert_pattern} method does
-% document this (see Section <#sec:lua-user-extensions>), we allow the
+% not document this (see Section <#sec:lua-user-extensions>), we allow the
% \luamref{reader->insert_pattern} and \luamref{reader->update_rule}
% methods to insert not just \acro{peg} patterns, but also rule names that
% reference the \acro{peg} grammar of Markdown.
@@ -25667,6 +29551,15 @@ end
syntax.AutoLinkRelativeReference = parsers.fail
end
+ if options.contentLevel == "inline" then
+ syntax[1] = "Inlines"
+ syntax.Inlines = V("InitializeState")
+ * parsers.Inline^0
+ * ( parsers.spacing^0
+ * parsers.eof / "")
+ syntax.Space = parsers.Space + parsers.blankline / writer.space
+ end
+
local blocks_nested_t = util.table_copy(syntax)
blocks_nested_t.ExpectedJekyllData = parsers.fail
parsers.blocks_nested = Ct(blocks_nested_t)
@@ -25681,10 +29574,6 @@ end
* parsers.eof / "")
parsers.inlines = Ct(inlines_t)
- local inlines_no_link_t = util.table_copy(inlines_t)
- inlines_no_link_t.Link = parsers.fail
- parsers.inlines_no_link = Ct(inlines_no_link_t)
-
local inlines_no_inline_note_t = util.table_copy(inlines_t)
inlines_no_inline_note_t.InlineNote = parsers.fail
parsers.inlines_no_inline_note = Ct(inlines_no_inline_note_t)
@@ -25699,6 +29588,11 @@ end
inlines_nbsp_t.Endline = parsers.NonbreakingEndline
inlines_nbsp_t.Space = parsers.NonbreakingSpace
parsers.inlines_nbsp = Ct(inlines_nbsp_t)
+
+ local inlines_no_link_or_emphasis_t = util.table_copy(inlines_t)
+ inlines_no_link_or_emphasis_t.LinkAndEmph = parsers.fail
+ inlines_no_link_or_emphasis_t.EndlineExceptions = parsers.EndlineExceptions - parsers.eof
+ parsers.inlines_no_link_or_emphasis = Ct(inlines_no_link_or_emphasis_t)
% \end{macrocode}
% \par
% \begin{markdown}
@@ -25831,6 +29725,7 @@ M.extensions.bracketed_spans = function()
% \end{markdown}
% \begin{macrocode}
function self.span(s, attr)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererBracketedSpanAttributeContextBegin",
self.attributes(attr),
s,
@@ -25840,13 +29735,25 @@ M.extensions.bracketed_spans = function()
local parsers = self.parsers
local writer = self.writer
- local Span = parsers.between(parsers.Inline,
- parsers.lbracket,
- parsers.rbracket)
+ local span_label = parsers.lbracket
+ * (Cs((parsers.alphanumeric^1
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + V("Space") + V("Endline")
+ + (parsers.any
+ - (parsers.newline + parsers.lbracket + parsers.rbracket
+ + parsers.blankline^2))))^1)
+ / self.parser_functions.parse_inlines)
+ * parsers.rbracket
+
+ local Span = span_label
* Ct(parsers.attributes)
/ writer.span
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline before LinkAndEmph",
Span, "Span")
end
}
@@ -25888,11 +29795,24 @@ M.extensions.citations = function(citation_nbsps)
% \end{markdown}
% \begin{macrocode}
function self.citations(text_cites, cites)
- local buffer = {"\\markdownRenderer", text_cites and "TextCite" or "Cite",
- "{", #cites, "}"}
- for _,cite in ipairs(cites) do
- buffer[#buffer+1] = {cite.suppress_author and "-" or "+", "{",
- cite.prenote or "", "}{", cite.postnote or "", "}{", cite.name, "}"}
+ local buffer = {}
+ if self.flatten_inlines then
+ for _,cite in ipairs(cites) do
+ if cite.prenote then
+ table.insert(buffer, {cite.prenote, " "})
+ end
+ table.insert(buffer, cite.name)
+ if cite.postnote then
+ table.insert(buffer, {" ", cite.postnote})
+ end
+ end
+ else
+ table.insert(buffer, {"\\markdownRenderer", text_cites and "TextCite" or "Cite",
+ "{", #cites, "}"})
+ for _,cite in ipairs(cites) do
+ table.insert(buffer, {cite.suppress_author and "-" or "+", "{",
+ cite.prenote or "", "}{", cite.postnote or "", "}{", cite.name, "}"})
+ end
end
return buffer
end
@@ -25919,42 +29839,51 @@ M.extensions.citations = function(citation_nbsps)
= Cs((parsers.alphanumeric^1
+ parsers.bracketed
+ parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("Endline")
+ (parsers.anyescaped
- - (parsers.rbracket + parsers.blankline^2))
+ - (parsers.newline + parsers.rbracket + parsers.blankline^2))
- (parsers.spnl * parsers.dash^-1 * parsers.at))^0)
local citation_body_postnote
= Cs((parsers.alphanumeric^1
+ parsers.bracketed
+ parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("Endline")
+ (parsers.anyescaped
- - (parsers.rbracket + parsers.semicolon
+ - (parsers.newline + parsers.rbracket + parsers.semicolon
+ parsers.blankline^2))
- (parsers.spnl * parsers.rbracket))^0)
local citation_body_chunk
= citation_body_prenote
- * parsers.spnl * citation_name
+ * parsers.spnlc * citation_name
* (parsers.internal_punctuation - parsers.semicolon)^-1
- * parsers.spnl * citation_body_postnote
+ * parsers.spnlc * citation_body_postnote
local citation_body
= citation_body_chunk
- * (parsers.semicolon * parsers.spnl
+ * (parsers.semicolon * parsers.spnlc
* citation_body_chunk)^0
local citation_headless_body_postnote
= Cs((parsers.alphanumeric^1
+ parsers.bracketed
+ parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("Endline")
+ (parsers.anyescaped
- - (parsers.rbracket + parsers.at
+ - (parsers.newline + parsers.rbracket + parsers.at
+ parsers.semicolon + parsers.blankline^2))
- (parsers.spnl * parsers.rbracket))^0)
local citation_headless_body
= citation_headless_body_postnote
- * (parsers.sp * parsers.semicolon * parsers.spnl
+ * (parsers.sp * parsers.semicolon * parsers.spnlc
* citation_body_chunk)^0
local citations
@@ -25983,10 +29912,10 @@ M.extensions.citations = function(citation_nbsps)
end
local TextCitations
- = Ct((parsers.spnl
+ = Ct((parsers.spnlc
* Cc("")
* citation_name
- * ((parsers.spnl
+ * ((parsers.spnlc
* parsers.lbracket
* citation_headless_body
* parsers.rbracket) + Cc("")))^1)
@@ -25995,7 +29924,7 @@ M.extensions.citations = function(citation_nbsps)
end
local ParenthesizedCitations
- = Ct((parsers.spnl
+ = Ct((parsers.spnlc
* parsers.lbracket
* citation_body
* parsers.rbracket)^1)
@@ -26005,7 +29934,7 @@ M.extensions.citations = function(citation_nbsps)
local Citations = TextCitations + ParenthesizedCitations
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline before LinkAndEmph",
Citations, "Citations")
self.add_special_character("@")
@@ -26018,7 +29947,7 @@ end
%
%#### Content Blocks
%
-% The \luamdef{extensions.content_blocks} function implements the iA\,Writer
+% The \luamdef{extensions.content_blocks} function implements the iA\\,Writer
% content blocks syntax extension. The `language_map` parameter specifies
% the filename of the \acro{JSON} file that maps filename extensions to
% programming language names.
@@ -26068,7 +29997,7 @@ M.extensions.content_blocks = function(language_map)
% \begin{markdown}
%
% Define \luamdef{writer->contentblock} as a function that will transform an
-% input iA\,Writer content block to the output format, where `src`
+% input iA\\,Writer content block to the output format, where `src`
% corresponds to the \acro{uri} prefix, `suf` to the \acro{uri} extension,
% `type` to the type of the content block (`localfile` or `onlineimage`),
% and `tit` to the title of the content block.
@@ -26135,6 +30064,7 @@ M.extensions.content_blocks = function(language_map)
= (parsers.less
* Cs((parsers.anyescaped
- parsers.more
+ - parsers.spacing
- #(parsers.period
* onlineimagesuffix
* parsers.more
@@ -26167,7 +30097,7 @@ M.extensions.content_blocks = function(language_map)
* Cc("localfile")
local ContentBlock
- = parsers.leader
+ = parsers.check_trail_no_rem
* (localfilepath + onlineimageurl)
* contentblock_tail
/ writer.contentblock
@@ -26234,18 +30164,26 @@ M.extensions.definition_lists = function(tight_lists)
local defstartchar = S("~:")
- local defstart = ( defstartchar * #parsers.spacing
+ local defstart = parsers.check_trail_length(0) * defstartchar * #parsers.spacing
* (parsers.tab + parsers.space^-3)
- + parsers.space * defstartchar * #parsers.spacing
+ + parsers.check_trail_length(1) * defstartchar * #parsers.spacing
* (parsers.tab + parsers.space^-2)
- + parsers.space * parsers.space * defstartchar
- * #parsers.spacing
+ + parsers.check_trail_length(2) * defstartchar * #parsers.spacing
* (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * parsers.space
- * defstartchar * #parsers.spacing
- )
+ + parsers.check_trail_length(3) * defstartchar * #parsers.spacing
+
+ local indented_line = (parsers.check_minimal_indent / "") * parsers.check_code_trail * parsers.line
- local dlchunk = Cs(parsers.line * (parsers.indentedline - parsers.blankline)^0)
+ local blank = parsers.check_minimal_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline
+
+ local dlchunk = Cs(parsers.line * (indented_line - blank)^0)
+
+ local indented_blocks = function(bl)
+ return Cs( bl
+ * (blank^1 * (parsers.check_minimal_indent / "")
+ * parsers.check_code_trail * -parsers.blankline * bl)^0
+ * (blank^1 + parsers.eof))
+ end
local function definition_list_item(term, defs, _)
return { term = self.parser_functions.parse_inlines(term),
@@ -26253,22 +30191,22 @@ M.extensions.definition_lists = function(tight_lists)
end
local DefinitionListItemLoose
- = C(parsers.line) * parsers.skipblanklines
- * Ct((defstart
- * parsers.indented_blocks(dlchunk)
- / self.parser_functions.parse_blocks_nested)^1)
+ = C(parsers.line) * blank^0
+ * Ct((parsers.check_minimal_indent * (defstart
+ * indented_blocks(dlchunk)
+ / self.parser_functions.parse_blocks_nested))^1)
* Cc(false) / definition_list_item
local DefinitionListItemTight
= C(parsers.line)
- * Ct((defstart * dlchunk
- / self.parser_functions.parse_blocks_nested)^1)
+ * Ct((parsers.check_minimal_indent * (defstart * dlchunk
+ / self.parser_functions.parse_blocks_nested))^1)
* Cc(true) / definition_list_item
local DefinitionList
= ( Ct(DefinitionListItemLoose^1) * Cc(false)
+ Ct(DefinitionListItemTight^1)
- * (parsers.skipblanklines
+ * (blank^0
* -DefinitionListItemLoose * Cc(true))
) / writer.definitionlist
@@ -26322,8 +30260,10 @@ M.extensions.fancy_lists = function()
local buffer = {}
local num = startnum
for _,item in ipairs(items) do
- buffer[#buffer + 1] = self.fancyitem(item,num)
- if num ~= nil then
+ if item ~= "" then
+ buffer[#buffer + 1] = self.fancyitem(item,num)
+ end
+ if num ~= nil and item ~= "" then
num = num + 1
end
end
@@ -26361,52 +30301,101 @@ M.extensions.fancy_lists = function()
local options = self.options
local writer = self.writer
- local label = parsers.dig + parsers.letter
- local numdelim = parsers.period + parsers.rparent
- local enumerator = C(label^3 * numdelim) * #parsers.spacing
- + C(label^2 * numdelim) * #parsers.spacing
- * (parsers.tab + parsers.space^1)
- + C(label * numdelim) * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.space * C(label^2 * numdelim)
- * #parsers.spacing
- + parsers.space * C(label * numdelim)
- * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * C(label^1
- * numdelim) * #parsers.spacing
- local starter = parsers.bullet + enumerator
+ local function combine_markers_and_delims(markers, delims)
+ local markers_table = {}
+ for _,marker in ipairs(markers) do
+ local start_marker
+ local continuation_marker
+ if type(marker) == "table" then
+ start_marker = marker[1]
+ continuation_marker = marker[2]
+ else
+ start_marker = marker
+ continuation_marker = marker
+ end
+ for _,delim in ipairs(delims) do
+ table.insert(markers_table, {start_marker, continuation_marker, delim})
+ end
+ end
+ return markers_table
+ end
+
+ local function join_table_with_func(func, markers_table)
+ local pattern = func(table.unpack(markers_table[1]))
+ for i = 2, #markers_table do
+ pattern = pattern + func(table.unpack(markers_table[i]))
+ end
+ return pattern
+ end
- local NestedList = Cs((parsers.optionallyindentedline
- - starter)^1)
- / function(a) return "\001"..a end
+ local lowercase_letter_marker = R("az")
+ local uppercase_letter_marker = R("AZ")
- local ListBlockLine = parsers.optionallyindentedline
- - parsers.blankline - (parsers.indent^-1
- * starter)
+ local roman_marker = function(chars)
+ local m, d, c = P(chars[1]), P(chars[2]), P(chars[3])
+ local l, x, v, i = P(chars[4]), P(chars[5]), P(chars[6]), P(chars[7])
+ return m^-3
+ * (c*m + c*d + d^-1 * c^-3)
+ * (x*c + x*l + l^-1 * x^-3)
+ * (i*x + i*v + v^-1 * i^-3)
+ end
+
+ local lowercase_roman_marker = roman_marker({"m", "d", "c", "l", "x", "v", "i"})
+ local uppercase_roman_marker = roman_marker({"M", "D", "C", "L", "X", "V", "I"})
+
+ local lowercase_opening_roman_marker = P("i")
+ local uppercase_opening_roman_marker = P("I")
+
+ local digit_marker = parsers.dig * parsers.dig^-8
- local ListBlock = parsers.line * ListBlockLine^0
+ local markers = {
+ {lowercase_opening_roman_marker, lowercase_roman_marker},
+ {uppercase_opening_roman_marker, uppercase_roman_marker},
+ lowercase_letter_marker,
+ uppercase_letter_marker,
+ lowercase_roman_marker,
+ uppercase_roman_marker,
+ digit_marker
+ }
+
+ local delims = {
+ parsers.period,
+ parsers.rparent
+ }
- local ListContinuationBlock = parsers.blanklines * (parsers.indent / "")
- * ListBlock
+ local markers_table = combine_markers_and_delims(markers, delims)
+
+ local function enumerator(start_marker, _, delimiter_type, interrupting)
+ local delimiter_range
+ local allowed_end
+ if interrupting then
+ delimiter_range = P("1")
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ delimiter_range = start_marker
+ allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ end
+
+ return parsers.check_trail
+ * Ct(C(delimiter_range) * C(delimiter_type))
+ * allowed_end
+ end
+
+ local starter = join_table_with_func(enumerator, markers_table)
local TightListItem = function(starter)
- return -parsers.ThematicBreak
- * (Cs(starter / "" * parsers.tickbox^-1 * ListBlock * NestedList^-1)
- / self.parser_functions.parse_blocks_nested)
- * -(parsers.blanklines * parsers.indent)
+ return parsers.add_indent(starter, "li")
+ * parsers.indented_content_tight
end
local LooseListItem = function(starter)
- return -parsers.ThematicBreak
- * Cs( starter / "" * parsers.tickbox^-1 * ListBlock * Cc("\n")
- * (NestedList + ListContinuationBlock^0)
- * (parsers.blanklines / "\n\n")
- ) / self.parser_functions.parse_blocks_nested
+ return parsers.add_indent(starter, "li")
+ * parsers.indented_content_loose
+ * remove_indent("li")
end
local function roman2number(roman)
- local romans = { ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
+ local romans = { ["M"] = 1000, ["D"] = 500, ["C"] = 100, ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
local numeral = 0
local i = 1
@@ -26425,8 +30414,7 @@ M.extensions.fancy_lists = function()
return numeral
end
- local function sniffstyle(itemprefix)
- local numstr, delimend = itemprefix:match("^([A-Za-z0-9]*)([.)]*)")
+ local function sniffstyle(numstr, delimend)
local numdelim
if delimend == ")" then
numdelim = "OneParen"
@@ -26435,46 +30423,72 @@ M.extensions.fancy_lists = function()
else
numdelim = "Default"
end
- numstr = numstr or itemprefix
local num
- num = numstr:match("^([IVXL]+)")
+ num = numstr:match("^([I])$")
if num then
return roman2number(num), "UpperRoman", numdelim
end
- num = numstr:match("^([ivxl]+)")
+ num = numstr:match("^([i])$")
if num then
return roman2number(string.upper(num)), "LowerRoman", numdelim
end
- num = numstr:match("^([A-Z])")
+ num = numstr:match("^([A-Z])$")
if num then
return string.byte(num) - string.byte("A") + 1, "UpperAlpha", numdelim
end
- num = numstr:match("^([a-z])")
+ num = numstr:match("^([a-z])$")
if num then
return string.byte(num) - string.byte("a") + 1, "LowerAlpha", numdelim
end
+ num = numstr:match("^([IVXLCDM]+)")
+ if num then
+ return roman2number(num), "UpperRoman", numdelim
+ end
+ num = numstr:match("^([ivxlcdm]+)")
+ if num then
+ return roman2number(string.upper(num)), "LowerRoman", numdelim
+ end
return math.floor(tonumber(numstr) or 1), "Decimal", numdelim
end
local function fancylist(items,tight,start)
- local startnum, numstyle, numdelim = sniffstyle(start)
+ local startnum, numstyle, numdelim = sniffstyle(start[2][1], start[2][2])
return writer.fancylist(items,tight,
- options.startNumber and startnum,
+ options.startNumber and startnum or 1,
numstyle or "Decimal",
numdelim or "Default")
end
- local FancyList = Cg(enumerator, "listtype") *
- ( Ct(TightListItem(Cb("listtype"))
- * TightListItem(enumerator)^0)
- * Cc(true) * parsers.skipblanklines * -enumerator
- + Ct(LooseListItem(Cb("listtype"))
- * LooseListItem(enumerator)^0)
- * Cc(false) * parsers.skipblanklines
- ) * Cb("listtype") / fancylist
+ local FancyListOfType = function(start_marker, continuation_marker, delimiter_type)
+ local enumerator_start = enumerator(start_marker, continuation_marker, delimiter_type)
+ local enumerator_cont = enumerator(continuation_marker, continuation_marker, delimiter_type)
+ return Cg(enumerator_start, "listtype")
+ * (Ct( TightListItem(Cb("listtype"))
+ * ((parsers.check_minimal_indent / "") * TightListItem(enumerator_cont))^0)
+ * Cc(true)
+ * -#((parsers.conditionally_indented_blankline^0 / "")
+ * parsers.check_minimal_indent * enumerator_cont)
+ + Ct( LooseListItem(Cb("listtype"))
+ * ((parsers.conditionally_indented_blankline^0 / "")
+ * (parsers.check_minimal_indent / "") * LooseListItem(enumerator_cont))^0)
+ * Cc(false)
+ ) * Ct(Cb("listtype")) / fancylist
+ end
+
+ local FancyList = join_table_with_func(FancyListOfType, markers_table)
+
+ local Endline = parsers.newline
+ * (parsers.check_minimal_indent
+ * -parsers.EndlineExceptions
+ + parsers.check_optional_indent
+ * -parsers.EndlineExceptions
+ * -starter)
+ * parsers.spacechar^0
+ / writer.soft_line_break
self.update_rule("OrderedList", FancyList)
+ self.update_rule("Endline", Endline)
end
}
end
@@ -26523,7 +30537,7 @@ M.extensions.fenced_code = function(blank_before_code_fence,
end
local name = util.cache_verbatim(options.cacheDir, s)
table.insert(buf, {"\\markdownRendererInputFencedCode{",
- name,"}{",self.string(i),"}"})
+ name,"}{",self.string(i),"}{",self.infostring(i),"}"})
if attr ~= nil then
table.insert(buf, "\\markdownRendererFencedCodeAttributeContextEnd")
end
@@ -26556,18 +30570,52 @@ M.extensions.fenced_code = function(blank_before_code_fence,
return #a >= #b and i
end
- local tilde_infostring
- = C((parsers.linechar
- - (parsers.spacechar^1 * parsers.newline))^0)
+ local function strip_enclosing_whitespaces(str)
+ return str:gsub("^%s*(.-)%s*$", "%1")
+ end
+
+ local tilde_infostring = Cs(Cs((V("HtmlEntity")
+ + parsers.anyescaped
+ - parsers.newline)^0)
+ / strip_enclosing_whitespaces)
- local backtick_infostring
- = C((parsers.linechar
- - (parsers.backtick
- + parsers.spacechar^1 * parsers.newline))^0)
+ local backtick_infostring = Cs(Cs((V("HtmlEntity")
+ + (-#(parsers.backslash * parsers.backtick) * parsers.anyescaped)
+ - parsers.newline
+ - parsers.backtick)^0)
+ / strip_enclosing_whitespaces)
local fenceindent
+
+ local function has_trail(indent_table)
+ return indent_table ~= nil and
+ indent_table.trail ~= nil and
+ next(indent_table.trail) ~= nil
+ end
+
+ local function has_indents(indent_table)
+ return indent_table ~= nil and
+ indent_table.indents ~= nil and
+ next(indent_table.indents) ~= nil
+ end
+
+ local function get_last_indent_name(indent_table)
+ if has_indents(indent_table) then
+ return indent_table.indents[#indent_table.indents].name
+ end
+ end
+
+ local function count_fenced_start_indent(_, _, indent_table, trail)
+ local last_indent_name = get_last_indent_name(indent_table)
+ fenceindent = 0
+ if last_indent_name ~= "li" then
+ fenceindent = #trail
+ end
+ return true
+ end
+
local fencehead = function(char, infostring)
- return C(parsers.nonindentspace) / function(s) fenceindent = #s end
+ return Cmt(Cb("indent_info") * parsers.check_trail, count_fenced_start_indent)
* Cg(char^3, "fencelength")
* parsers.optionalspace
* infostring
@@ -26575,52 +30623,69 @@ M.extensions.fenced_code = function(blank_before_code_fence,
end
local fencetail = function(char)
- return parsers.nonindentspace
+ return parsers.check_trail_no_rem
* Cmt(C(char^3) * Cb("fencelength"), captures_geq_length)
* parsers.optionalspace * (parsers.newline + parsers.eof)
+ parsers.eof
end
- local fencedline = function(char)
- return C(parsers.line - fencetail(char))
- / function(s)
- local i = 1
- local remaining = fenceindent
- while true do
- local c = s:sub(i, i)
- if c == " " and remaining > 0 then
- remaining = remaining - 1
- i = i + 1
- elseif c == "\t" and remaining > 3 then
- remaining = remaining - 4
- i = i + 1
- else
- break
- end
- end
- return s:sub(i)
- end
+ local function process_fenced_line(s, i, indent_table, line_content, is_blank) -- luacheck: ignore s i
+ local remainder = ""
+ if has_trail(indent_table) then
+ remainder = indent_table.trail.internal_remainder
+ end
+
+ if is_blank and get_last_indent_name(indent_table) == "li" then
+ remainder = ""
+ end
+
+ local str = remainder .. line_content
+ local index = 1
+ local remaining = fenceindent
+
+ while true do
+ local c = str:sub(index, index)
+ if c == " " and remaining > 0 then
+ remaining = remaining - 1
+ index = index + 1
+ elseif c == "\t" and remaining > 3 then
+ remaining = remaining - 4
+ index = index + 1
+ else
+ break
+ end
+ end
+
+ return true, str:sub(index)
end
+ local fencedline = function(char)
+ return Cmt(Cb("indent_info") * C(parsers.line - fencetail(char)) * Cc(false), process_fenced_line)
+ end
+
+ local blankfencedline = Cmt(Cb("indent_info") * C(parsers.blankline) * Cc(true), process_fenced_line)
+
local TildeFencedCode
= fencehead(parsers.tilde, tilde_infostring)
- * Cs(fencedline(parsers.tilde)^0)
- * fencetail(parsers.tilde)
+ * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline
+ + (parsers.check_minimal_indent / "") * fencedline(parsers.tilde))^0)
+ * ((parsers.check_minimal_indent / "") * fencetail(parsers.tilde) + parsers.succeed)
local BacktickFencedCode
= fencehead(parsers.backtick, backtick_infostring)
- * Cs(fencedline(parsers.backtick)^0)
- * fencetail(parsers.backtick)
+ * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline
+ + (parsers.check_minimal_indent / "") * fencedline(parsers.backtick))^0)
+ * ((parsers.check_minimal_indent / "") * fencetail(parsers.backtick) + parsers.succeed)
- local infostring_with_attributes
- = Ct(C((parsers.linechar
- - ( parsers.optionalspace
- * parsers.attributes))^0)
- * parsers.optionalspace
- * Ct(parsers.attributes))
+ local infostring_with_attributes
+ = Ct(C((parsers.linechar
+ - ( parsers.optionalspace
+ * parsers.attributes))^0)
+ * parsers.optionalspace
+ * Ct(parsers.attributes))
local FencedCode
- = (TildeFencedCode + BacktickFencedCode)
+ = ((TildeFencedCode + BacktickFencedCode)
/ function(infostring, code)
local expanded_code = self.expandtabs(code)
@@ -26641,7 +30706,7 @@ M.extensions.fenced_code = function(blank_before_code_fence,
end
end
return writer.fencedCode(expanded_code, infostring, attr)
- end
+ end)
self.insert_pattern("Block after Verbatim",
FencedCode, "FencedCode")
@@ -26695,7 +30760,7 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
function self.div_begin(attributes)
local start_output = {"\\markdownRendererFencedDivAttributeContextBegin\n",
self.attributes(attributes)}
- local end_output = {"\n\\markdownRendererFencedDivAttributeContextEnd "}
+ local end_output = {"\\markdownRendererFencedDivAttributeContextEnd "}
return self.push_attributes("div", attributes, start_output, end_output)
end
% \end{macrocode}
@@ -26760,6 +30825,31 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
return Cg( Cmt(Cb("div_level"), update_div_level)
, "div_level")
end
+
+ local non_fenced_div_block = parsers.check_minimal_indent * V("Block")
+ - parsers.check_minimal_indent_and_trail * fenced_div_end
+
+ local non_fenced_div_paragraph = parsers.check_minimal_indent * V("Paragraph")
+ - parsers.check_minimal_indent_and_trail * fenced_div_end
+
+ local blank = parsers.minimally_indented_blank
+
+ local block_separated = parsers.block_sep_group(blank)
+ * non_fenced_div_block
+
+ local loop_body_pair = parsers.create_loop_body_pair(block_separated,
+ non_fenced_div_paragraph,
+ parsers.block_sep_group(blank),
+ parsers.par_sep_group(blank))
+
+ local content_loop = ( non_fenced_div_block
+ * loop_body_pair.block^0
+ + non_fenced_div_paragraph
+ * block_separated
+ * loop_body_pair.block^0
+ + non_fenced_div_paragraph
+ * loop_body_pair.par^0)
+ * blank^0
local FencedDiv = fenced_div_begin
/ function (infostring)
@@ -26772,14 +30862,9 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
/ writer.div_begin
* increment_div_level(1)
* parsers.skipblanklines
- * Ct( (V("Block") - fenced_div_end)^-1
- * ( parsers.blanklines
- / function()
- return writer.interblocksep
- end
- * (V("Block") - fenced_div_end))^0)
- * parsers.skipblanklines
- * fenced_div_end * increment_div_level(-1)
+ * Ct(content_loop)
+ * parsers.minimally_indented_blank^0
+ * parsers.check_minimal_indent_and_trail * fenced_div_end * increment_div_level(-1)
* (Cc("") / writer.div_end)
self.insert_pattern("Block after Verbatim",
@@ -26791,8 +30876,9 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
% \par
% \begin{markdown}
%
-% Patch blockquotes, so that they allow the end of a fenced div immediately
-% afterwards.
+% If the `blank_before_div_fence` parameter is `false`, we will have the
+% closing div at the beginning of a line break the current paragraph if
+% we are currently nested in a div.
%
% \end{markdown}
% \begin{macrocode}
@@ -26804,23 +30890,6 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
local is_inside_div = Cmt(Cb("div_level"), check_div_level)
local fencestart = is_inside_div * fenced_div_end
- self.update_rule("BlockquoteExceptions", function(previous_pattern)
- if previous_pattern == nil then
- previous_pattern = parsers.BlockquoteExceptions
- end
- return previous_pattern + fencestart
- end)
-
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% If the `blank_before_div_fence` parameter is `false`, we will have the
-% closing div at the beginning of a line break the current paragraph if
-% we are currently nested in a div.
-%
-% \end{markdown}
-% \begin{macrocode}
if not blank_before_div_fence then
self.update_rule("EndlineExceptions", function(previous_pattern)
if previous_pattern == nil then
@@ -26850,47 +30919,58 @@ M.extensions.header_attributes = function()
local parsers = self.parsers
local writer = self.writer
+ local function strip_atx_end(s)
+ return s:gsub("%s+#*%s*$","")
+ end
+
local AtxHeading = Cg(parsers.heading_start, "level")
* parsers.optionalspace
* (C(((parsers.linechar
- - ((parsers.hash^1
+ - (parsers.attributes
* parsers.optionalspace
- * parsers.attributes^-1
- + parsers.attributes)
- * parsers.optionalspace
- * parsers.newline))
- * (parsers.linechar
- - parsers.hash
- - parsers.lbrace)^0)^1)
- / self.parser_functions.parse_inlines)
+ * parsers.newline))
+ * (parsers.linechar
+ - parsers.lbrace)^0)^1)
+ / strip_atx_end
+ / parsers.parse_heading_text)
* Cg(Ct(parsers.newline
- + (parsers.hash^1
+ + (parsers.attributes
* parsers.optionalspace
- * parsers.attributes^-1
- + parsers.attributes)
- * parsers.optionalspace
- * parsers.newline), "attributes")
+ * parsers.newline)), "attributes")
* Cb("level")
* Cb("attributes")
/ writer.heading
- local SetextHeading = #(parsers.line * S("=-"))
- * (C(((parsers.linechar
- - (parsers.attributes
- * parsers.optionalspace
- * parsers.newline))
- * (parsers.linechar
- - parsers.lbrace)^0)^1)
- / self.parser_functions.parse_inlines)
- * Cg(Ct(parsers.newline
- + (parsers.attributes
- * parsers.optionalspace
- * parsers.newline)), "attributes")
- * parsers.heading_level
- * Cb("attributes")
- * parsers.optionalspace
- * parsers.newline
- / writer.heading
+ local function strip_trailing_spaces(s)
+ return s:gsub("%s*$","")
+ end
+
+ local heading_line = (parsers.linechar
+ - (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline))^1
+ - parsers.thematic_break_lines
+
+ local heading_text = heading_line
+ * ((V("Endline") / "\n") * (heading_line - parsers.heading_level))^0
+ * parsers.newline^-1
+
+ local SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem
+ * #(heading_text
+ * (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline)^-1
+ * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level)
+ * Cs(heading_text) / strip_trailing_spaces
+ / parsers.parse_heading_text
+ * Cg(Ct((parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline)^-1), "attributes")
+ * parsers.check_minimal_indent_and_trail * parsers.heading_level
+ * Cb("attributes")
+ * parsers.newline
+ * parsers.unfreeze_trail
+ / writer.heading
local Heading = AtxHeading + SetextHeading
self.update_rule("Heading", Heading)
@@ -26985,6 +31065,48 @@ end
% \end{macrocode}
% \begin{markdown}
%
+%#### Marked text
+%
+% The \luamdef{extensions.mark} function implements the Pandoc mark syntax
+% extension.
+%
+% \end{markdown}
+% \begin{macrocode}
+M.extensions.mark = function()
+ return {
+ name = "built-in mark syntax extension",
+ extend_writer = function(self)
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Define \luamdef{writer->mark} as a function that will transform an input
+% marked text `s` to the output format.
+%
+% \end{markdown}
+% \begin{macrocode}
+ function self.mark(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererMark{", s, "}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local doubleequals = P("==")
+
+ local Mark = parsers.between(V("Inline"), doubleequals, doubleequals)
+ / function (inlines) return writer.mark(inlines) end
+
+ self.add_special_character("=")
+ self.insert_pattern("Inline before LinkAndEmph",
+ Mark, "Mark")
+ end
+ }
+end
+% \end{macrocode}
+% \begin{markdown}
+%
%#### Link Attributes
%
% The \luamdef{extensions.link_attributes} function implements the Pandoc
@@ -26998,7 +31120,6 @@ M.extensions.link_attributes = function()
extend_writer = function()
end, extend_reader = function(self)
local parsers = self.parsers
- local writer = self.writer
local options = self.options
% \end{macrocode}
@@ -27008,13 +31129,15 @@ M.extensions.link_attributes = function()
%
% \end{markdown}
% \begin{macrocode}
-
- local define_reference_parser = parsers.define_reference_parser
- * ( parsers.spnl
- * Ct(parsers.attributes))^-1
+ local define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon
+ * parsers.spnlc * parsers.url
+ * ( parsers.spnlc_sep * parsers.title * (parsers.spnlc * Ct(parsers.attributes))
+ * parsers.only_blank
+ + parsers.spnlc_sep * parsers.title * parsers.only_blank
+ + Cc("") * (parsers.spnlc * Ct(parsers.attributes)) * parsers.only_blank
+ + Cc("") * parsers.only_blank)
local ReferenceWithAttributes = define_reference_parser
- * parsers.blankline^1
/ self.register_link
self.update_rule("Reference", ReferenceWithAttributes)
@@ -27027,93 +31150,10 @@ M.extensions.link_attributes = function()
% \end{markdown}
% \begin{macrocode}
- local function indirect_link(label, sps, tag,
- attribute_text,
- attributes)
- return writer.defer_call(function()
- local r, fallback = self.lookup_reference(label, sps, tag,
- attributes)
- if r then
- return writer.link(
- self.parser_functions.parse_inlines_no_link(label),
- r.url, r.title, r.attributes)
- else
- local buf = {fallback}
- if attributes then
- table.insert(buf, writer.string(attribute_text))
- end
- return buf
- end
- end)
- end
-
- local DirectLinkWithAttributes = parsers.direct_link
- * (Ct(parsers.attributes))^-1
- / writer.link
-
- local IndirectLinkWithAttributes = parsers.indirect_link
- * (C(Ct(parsers.attributes)))^-1
- / indirect_link
+ local LinkWithAttributesAndEmph = Ct(parsers.link_and_emph_table * Cg(Cc(true), "match_link_attributes"))
+ / self.defer_link_and_emphasis_processing
- local LinkWithAttributes = DirectLinkWithAttributes
- + IndirectLinkWithAttributes
-
-% \end{macrocode}
-% \begin{markdown}
-%
-% Here, we directly update the `Link` grammar rule to keep the
-% method \luamref{reader->parser_functions.parse_inlines_no_link}
-% aware of `LinkWithAttributes` and prevent nested links.
-%
-% If we used \luamref{reader->insert_pattern} instead of
-% \luamref{reader->update_rule}, this correspondence would have
-% been lost and link text would be able to contain nested links.
-%
-% \end{markdown}
-% \begin{macrocode}
- self.update_rule("Link", LinkWithAttributes)
-
-% \end{macrocode}
-% \begin{markdown}
-%
-% The following patterns define direct and indirect images with attributes.
-%
-% \end{markdown}
-% \begin{macrocode}
-
- local function indirect_image(label, sps, tag,
- attribute_text,
- attributes)
- return writer.defer_call(function()
- local r, fallback = self.lookup_reference(label, sps, tag,
- attributes)
- if r then
- return writer.image(writer.string(label),
- r.url, r.title, r.attributes)
- else
- local buf = {"!", fallback}
- if attributes then
- table.insert(buf, writer.string(attribute_text))
- end
- return buf
- end
- end)
- end
-
- local DirectImageWithAttributes = parsers.direct_image
- * Ct(parsers.attributes)
- / writer.image
-
- local IndirectImageWithAttributes = parsers.indirect_image
- * C(Ct(parsers.attributes))
- / indirect_image
-
- local ImageWithAttributes = DirectImageWithAttributes
- + IndirectImageWithAttributes
-
- self.insert_pattern("Inline before Image",
- ImageWithAttributes,
- "ImageWithAttributes")
+ self.update_rule("LinkAndEmph", LinkWithAttributesAndEmph)
% \end{macrocode}
% \begin{markdown}
@@ -27122,7 +31162,6 @@ M.extensions.link_attributes = function()
%
% \end{markdown}
% \begin{macrocode}
-
local AutoLinkUrlWithAttributes
= parsers.auto_link_url
* Ct(parsers.attributes)
@@ -27186,6 +31225,7 @@ M.extensions.notes = function(notes, inline_notes)
% \end{markdown}
% \begin{macrocode}
function self.note(s)
+ if self.flatten_inlines then return "" end
return {"\\markdownRendererNote{",s,"}"}
end
end, extend_reader = function(self)
@@ -27195,10 +31235,10 @@ M.extensions.notes = function(notes, inline_notes)
if inline_notes then
local InlineNote
= parsers.circumflex
- * (parsers.tag / self.parser_functions.parse_inlines_no_inline_note)
+ * (parsers.link_label / self.parser_functions.parse_inlines_no_inline_note)
/ writer.note
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
InlineNote, "InlineNote")
end
if notes then
@@ -27208,7 +31248,7 @@ M.extensions.notes = function(notes, inline_notes)
local RawNoteRef
= #(parsers.lbracket * parsers.circumflex)
- * parsers.tag / strip_first_char
+ * parsers.link_label / strip_first_char
local rawnotes = {}
@@ -27227,21 +31267,36 @@ M.extensions.notes = function(notes, inline_notes)
end
local function register_note(ref,rawnote)
- rawnotes[self.normalize_tag(ref)] = rawnote
+ local normalized_tag = self.normalize_tag(ref)
+ if rawnotes[normalized_tag] == nil then
+ rawnotes[normalized_tag] = rawnote
+ end
return ""
end
local NoteRef = RawNoteRef / lookup_note
+ local optionally_indented_line = parsers.check_optional_indent_and_any_trail * parsers.line
+
+ local blank = parsers.check_optional_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline
+
+ local chunk = Cs(parsers.line * (optionally_indented_line - blank)^0)
+
+ local indented_blocks = function(bl)
+ return Cs( bl
+ * (blank^1 * (parsers.check_optional_indent / "")
+ * parsers.check_code_trail * -parsers.blankline * bl)^0)
+ end
+
local NoteBlock
- = parsers.leader * RawNoteRef * parsers.colon
- * parsers.spnl * parsers.indented_blocks(parsers.chunk)
+ = parsers.check_trail_no_rem * RawNoteRef * parsers.colon
+ * parsers.spnlc * indented_blocks(chunk)
/ register_note
- local Blank = NoteBlock + parsers.Blank
- self.update_rule("Blank", Blank)
+ local Reference = NoteBlock + parsers.Reference
- self.insert_pattern("Inline after Emph",
+ self.update_rule("Reference", Reference)
+ self.insert_pattern("Inline before LinkAndEmph",
NoteRef, "NoteRef")
end
@@ -27257,11 +31312,13 @@ end
% The \luamdef{extensions.pipe_table} function implements the \acro{PHP}
% Markdown table syntax extension (also known as pipe tables in Pandoc). When
% the `table_captions` parameter is `true`, the function also implements the
-% Pandoc table caption syntax extension for table captions.
+% Pandoc table caption syntax extension for table captions. When the
+% `table_attributes` parameter is also `true`, the function also
+% allows attributes to be attached to the (possibly empty) table captions.
%
% \end{markdown}
% \begin{macrocode}
-M.extensions.pipe_tables = function(table_captions)
+M.extensions.pipe_tables = function(table_captions, table_attributes)
local function make_pipe_table_rectangular(rows)
local num_columns = #rows[2]
@@ -27329,10 +31386,18 @@ M.extensions.pipe_tables = function(table_captions)
%
% \end{markdown}
% \begin{macrocode}
- function self.table(rows, caption)
+ function self.table(rows, caption, attributes)
if not self.is_writing then return "" end
- local buffer = {"\\markdownRendererTable{",
- caption or "", "}{", #rows - 1, "}{", #rows[1], "}"}
+ local buffer = {}
+ if attributes ~= nil then
+ table.insert(buffer,
+ "\\markdownRendererTableAttributeContextBegin\n")
+ table.insert(buffer, self.attributes(attributes))
+ end
+ table.insert(buffer,
+ {"\\markdownRendererTable{",
+ caption or "", "}{", #rows - 1, "}{",
+ #rows[1], "}"})
local temp = rows[2] -- put alignments on the first row
rows[2] = rows[1]
rows[1] = temp
@@ -27349,6 +31414,10 @@ M.extensions.pipe_tables = function(table_captions)
end
table.insert(buffer, "}")
end
+ if attributes ~= nil then
+ table.insert(buffer,
+ "\\markdownRendererTableAttributeContextEnd{}")
+ end
return buffer
end
end, extend_reader = function(self)
@@ -27378,31 +31447,65 @@ M.extensions.pipe_tables = function(table_captions)
, table_hline_separator
, table_hline_column)
- local table_caption_beginning = parsers.skipblanklines
- * parsers.nonindentspace
+ local table_caption_beginning = (parsers.check_minimal_blank_indent_and_any_trail_no_rem
+ * parsers.optionalspace * parsers.newline)^0
+ * parsers.check_minimal_indent_and_trail
* (P("Table")^-1 * parsers.colon)
* parsers.optionalspace
+ local function strip_trailing_spaces(s)
+ return s:gsub("%s*$","")
+ end
+
local table_row = pipe_table_row(true
, (C((parsers.linechar - parsers.pipe)^1)
+ / strip_trailing_spaces
/ self.parser_functions.parse_inlines)
, parsers.pipe
, (C((parsers.linechar - parsers.pipe)^0)
+ / strip_trailing_spaces
/ self.parser_functions.parse_inlines))
local table_caption
if table_captions then
table_caption = #table_caption_beginning
* table_caption_beginning
- * Ct(parsers.IndentedInline^1)
- * parsers.newline
+ if table_attributes then
+ table_caption = table_caption
+ * (C(((( parsers.linechar
+ - (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline
+ * -#( parsers.optionalspace
+ * parsers.linechar)))
+ + ( parsers.newline
+ * #( parsers.optionalspace
+ * parsers.linechar)
+ * C(parsers.optionalspace) / writer.space))
+ * (parsers.linechar
+ - parsers.lbrace)^0)^1)
+ / self.parser_functions.parse_inlines)
+ * (parsers.newline
+ + ( Ct(parsers.attributes)
+ * parsers.optionalspace
+ * parsers.newline))
+ else
+ table_caption = table_caption
+ * C(( parsers.linechar
+ + ( parsers.newline
+ * #( parsers.optionalspace
+ * parsers.linechar)
+ * C(parsers.optionalspace) / writer.space))^1)
+ / self.parser_functions.parse_inlines
+ * parsers.newline
+ end
else
table_caption = parsers.fail
end
- local PipeTable = Ct(table_row * parsers.newline
- * table_hline
- * (parsers.newline * table_row)^0)
+ local PipeTable = Ct(table_row * parsers.newline * (parsers.check_minimal_indent_and_trail / {})
+ * table_hline * parsers.newline
+ * ((parsers.check_minimal_indent / {}) * table_row * parsers.newline)^0)
/ make_pipe_table_rectangular
* table_caption^-1
/ writer.table
@@ -27439,6 +31542,7 @@ M.extensions.raw_inline = function()
% \begin{macrocode}
function self.rawInline(s, attr)
if not self.is_writing then return "" end
+ if self.flatten_inlines then return s end
local name = util.cache_verbatim(options.cacheDir, s)
return {"\\markdownRendererInputRawInline{",
name,"}{", self.string(attr),"}"}
@@ -27479,6 +31583,7 @@ M.extensions.strike_through = function()
% \end{markdown}
% \begin{macrocode}
function self.strike_through(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererStrikeThrough{",s,"}"}
end
end, extend_reader = function(self)
@@ -27490,7 +31595,7 @@ M.extensions.strike_through = function()
parsers.doubletildes)
) / writer.strike_through
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
StrikeThrough, "StrikeThrough")
self.add_special_character("~")
@@ -27521,6 +31626,7 @@ M.extensions.subscripts = function()
% \end{markdown}
% \begin{macrocode}
function self.subscript(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererSubscript{",s,"}"}
end
end, extend_reader = function(self)
@@ -27531,7 +31637,7 @@ M.extensions.subscripts = function()
parsers.between(parsers.Str, parsers.tilde, parsers.tilde)
) / writer.subscript
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
Subscript, "Subscript")
self.add_special_character("~")
@@ -27562,6 +31668,7 @@ M.extensions.superscripts = function()
% \end{markdown}
% \begin{macrocode}
function self.superscript(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererSuperscript{",s,"}"}
end
end, extend_reader = function(self)
@@ -27572,7 +31679,7 @@ M.extensions.superscripts = function()
parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex)
) / writer.superscript
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
Superscript, "Superscript")
self.add_special_character("^")
@@ -27582,7 +31689,7 @@ end
% \end{macrocode}
% \begin{markdown}
%
-%#### Tex Math
+%#### \TeX{} Math
%
% The \luamdef{extensions.tex_math} function implements the Pandoc math
% syntax extensions.
@@ -27605,7 +31712,7 @@ M.extensions.tex_math = function(tex_math_dollars,
% \end{markdown}
% \begin{macrocode}
function self.display_math(s)
- if not self.is_writing then return "" end
+ if self.flatten_inlines then return s end
return {"\\markdownRendererDisplayMath{",self.math(s),"}"}
end
% \end{macrocode}
@@ -27617,7 +31724,7 @@ M.extensions.tex_math = function(tex_math_dollars,
% \end{markdown}
% \begin{macrocode}
function self.inline_math(s)
- if not self.is_writing then return "" end
+ if self.flatten_inlines then return s end
return {"\\markdownRendererInlineMath{",self.math(s),"}"}
end
end, extend_reader = function(self)
@@ -27625,11 +31732,19 @@ M.extensions.tex_math = function(tex_math_dollars,
local writer = self.writer
local function between(p, starter, ender)
- return (starter * C(p * (p - ender)^0) * ender)
+ return (starter * Cs(p * (p - ender)^0) * ender)
+ end
+
+ local function strip_preceding_whitespaces(str)
+ return str:gsub("^%s*(.-)$", "%1")
end
local allowed_before_closing = B( parsers.backslash * parsers.any
- + parsers.any * (parsers.nonspacechar - parsers.backslash))
+ + parsers.any * (parsers.any - parsers.backslash))
+
+ local allowed_before_closing_no_space = B( parsers.backslash * parsers.any
+ + parsers.any * (parsers.nonspacechar - parsers.backslash))
+
% \end{macrocode}
% \begin{markdown}
%
@@ -27637,19 +31752,20 @@ M.extensions.tex_math = function(tex_math_dollars,
%
% \end{markdown}
% \begin{macrocode}
- local dollar_math_content = parsers.backslash^-1
- * parsers.any
+ local dollar_math_content = (parsers.newline * (parsers.check_optional_indent / "")
+ + parsers.backslash^-1
+ * parsers.linechar)
- parsers.blankline^2
- parsers.dollar
local inline_math_opening_dollars = parsers.dollar
* #(parsers.nonspacechar)
- local inline_math_closing_dollars = allowed_before_closing
+ local inline_math_closing_dollars = allowed_before_closing_no_space
* parsers.dollar
* -#(parsers.digit)
- local inline_math_dollars = between(C( dollar_math_content),
+ local inline_math_dollars = between(Cs( dollar_math_content),
inline_math_opening_dollars,
inline_math_closing_dollars)
@@ -27659,7 +31775,7 @@ M.extensions.tex_math = function(tex_math_dollars,
local display_math_closing_dollars = parsers.dollar
* parsers.dollar
- local display_math_dollars = between(C( dollar_math_content),
+ local display_math_dollars = between(Cs( dollar_math_content),
display_math_opening_dollars,
display_math_closing_dollars)
% \end{macrocode}
@@ -27670,7 +31786,8 @@ M.extensions.tex_math = function(tex_math_dollars,
%
% \end{markdown}
% \begin{macrocode}
- local backslash_math_content = parsers.any
+ local backslash_math_content = (parsers.newline * (parsers.check_optional_indent / "")
+ + parsers.linechar)
- parsers.blankline^2
% \end{macrocode}
% \begin{markdown}
@@ -27683,29 +31800,32 @@ M.extensions.tex_math = function(tex_math_dollars,
local inline_math_opening_double = parsers.backslash
* parsers.backslash
* parsers.lparent
- * #(parsers.nonspacechar)
local inline_math_closing_double = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.backslash
* parsers.rparent
- local inline_math_double = between(C( backslash_math_content),
+ local inline_math_double = between(Cs( backslash_math_content),
inline_math_opening_double,
inline_math_closing_double)
+ / strip_preceding_whitespaces
local display_math_opening_double = parsers.backslash
* parsers.backslash
* parsers.lbracket
local display_math_closing_double = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.backslash
* parsers.rbracket
- local display_math_double = between(C( backslash_math_content),
+ local display_math_double = between(Cs( backslash_math_content),
display_math_opening_double,
display_math_closing_double)
+ / strip_preceding_whitespaces
% \end{macrocode}
% \begin{markdown}
%
@@ -27716,26 +31836,29 @@ M.extensions.tex_math = function(tex_math_dollars,
% \begin{macrocode}
local inline_math_opening_single = parsers.backslash
* parsers.lparent
- * #(parsers.nonspacechar)
local inline_math_closing_single = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.rparent
- local inline_math_single = between(C( backslash_math_content),
+ local inline_math_single = between(Cs( backslash_math_content),
inline_math_opening_single,
inline_math_closing_single)
+ / strip_preceding_whitespaces
local display_math_opening_single = parsers.backslash
* parsers.lbracket
local display_math_closing_single = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.rbracket
- local display_math_single = between(C( backslash_math_content),
+ local display_math_single = between(Cs( backslash_math_content),
display_math_opening_single,
display_math_closing_single)
+ / strip_preceding_whitespaces
local display_math = parsers.fail
@@ -27759,7 +31882,7 @@ M.extensions.tex_math = function(tex_math_dollars,
local TexMath = display_math / writer.display_math
+ inline_math / writer.inline_math
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
TexMath, "TexMath")
if tex_math_dollars then
@@ -27961,6 +32084,30 @@ function M.new(options)
% \par
% \begin{markdown}
%
+% If the singleton cache contains a conversion function for the same `options`,
+% reuse it.
+%
+% \end{markdown}
+% \begin{macrocode}
+ if options.singletonCache and singletonCache.convert then
+ for k, v in pairs(defaultOptions) do
+ if type(v) == "table" then
+ for i = 1, math.max(#singletonCache.options[k], #options[k]) do
+ if singletonCache.options[k][i] ~= options[k][i] then
+ goto miss
+ end
+ end
+ elseif singletonCache.options[k] ~= options[k] then
+ goto miss
+ end
+ end
+ return singletonCache.convert
+ end
+ ::miss::
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
% Apply built-in syntax extensions based on `options`.
%
% \end{markdown}
@@ -28026,9 +32173,14 @@ function M.new(options)
table.insert(extensions, line_block_extension)
end
+ if options.mark then
+ local mark_extension = M.extensions.mark()
+ table.insert(extensions, mark_extension)
+ end
+
if options.pipeTables then
local pipe_tables_extension = M.extensions.pipe_tables(
- options.tableCaptions)
+ options.tableCaptions, options.tableAttributes)
table.insert(extensions, pipe_tables_extension)
end
@@ -28062,19 +32214,9 @@ function M.new(options)
table.insert(extensions, tex_math_extension)
end
-% \end{macrocode}
-% \begin{markdown}
-%
-% The footnotes and inlineFootnotes option has been deprecated and will be
-% removed in Markdown 3.0.0.
-%
-% \end{markdown}
-% \begin{macrocode}
- if options.footnotes or options.inlineFootnotes or
- options.notes or options.inlineNotes then
+ if options.notes or options.inlineNotes then
local notes_extension = M.extensions.notes(
- options.footnotes or options.notes,
- options.inlineFootnotes or options.inlineNotes)
+ options.notes, options.inlineNotes)
table.insert(extensions, notes_extension)
end
@@ -28187,14 +32329,51 @@ function M.new(options)
% \par
% \begin{markdown}
%
-% Produce and return a conversion function from markdown to plain \TeX.
+% Produce a conversion function from markdown to plain \TeX.
%
% \end{markdown}
% \begin{macrocode}
local writer = M.writer.new(options)
local reader = M.reader.new(writer, options)
local convert = reader.finalize_grammar(extensions)
-
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Force garbage collection to reclaim memory for temporary
+% objects created in \luamref{writer.new}, \luamref{reader.new},
+% and \luamref{reader->finalize_grammar}.
+%
+% \end{markdown}
+% \begin{macrocode}
+ collectgarbage("collect")
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Update the singleton cache.
+%
+% \end{markdown}
+% \begin{macrocode}
+ if options.singletonCache then
+ local singletonCacheOptions = {}
+ for k, v in pairs(options) do
+ singletonCacheOptions[k] = v
+ end
+ setmetatable(singletonCacheOptions,
+ { __index = function (_, key)
+ return defaultOptions[key] end })
+ singletonCache.options = singletonCacheOptions
+ singletonCache.convert = convert
+ end
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Return the conversion function from markdown to plain \TeX.
+%
+% \end{markdown}
+% \begin{macrocode}
return convert
end
@@ -28246,9 +32425,8 @@ local kpse
(function()
local should_initialize = package.loaded.kpse == nil
or tex.initialize ~= nil
- local ran_ok
- ran_ok, kpse = pcall(require, "kpse")
- if ran_ok and should_initialize then
+ kpse = require("kpse")
+ if should_initialize then
kpse.set_program_name("luatex")
end
end)()
@@ -28276,6 +32454,14 @@ else
assert(io.write(output))
end
% \end{macrocode}
+% \begin{markdown}
+% Remove the `options.cacheDir` directory if it is empty.
+% \end{markdown}
+% \begin{macrocode}
+if options.cacheDir then
+ lfs.rmdir(options["cacheDir"])
+end
+% \end{macrocode}
% \iffalse
%</lua-cli>
%<*tex>
@@ -28295,23 +32481,218 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\ifx\markdownInfo\undefined
- \def\markdownInfo#1{%
- \immediate\write-1{(l.\the\inputlineno) markdown.tex info: #1.}}%
-\fi
-\ifx\markdownWarning\undefined
- \def\markdownWarning#1{%
- \immediate\write16{(l.\the\inputlineno) markdown.tex warning: #1}}%
-\fi
-\ifx\markdownError\undefined
- \def\markdownError#1#2{%
- \errhelp{#2.}%
- \errmessage{(l.\the\inputlineno) markdown.tex error: #1}}%
-\fi
+\ExplSyntaxOn
+\cs_if_free:NT
+ \markdownInfo
+ {
+ \cs_new:Npn
+ \markdownInfo #1
+ {
+ \msg_info:nne
+ { markdown }
+ { generic-message }
+ { #1 }
+ }
+ }
+\cs_if_free:NT
+ \markdownWarning
+ {
+ \cs_new:Npn
+ \markdownWarning #1
+ {
+ \msg_warning:nne
+ { markdown }
+ { generic-message }
+ { #1 }
+ }
+ }
+\cs_if_free:NT
+ \markdownError
+ {
+ \cs_new:Npn
+ \markdownError #1 #2
+ {
+ \msg_error:nnee
+ { markdown }
+ { generic-message-with-help-text }
+ { #1 }
+ { #2 }
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { generic-message }
+ { #1 }
+\msg_new:nnnn
+ { markdown }
+ { generic-message-with-help-text }
+ { #1 }
+ { #2 }
+\cs_generate_variant:Nn
+ \msg_info:nnn
+ { nne }
+\cs_generate_variant:Nn
+ \msg_warning:nnn
+ { nne }
+\cs_generate_variant:Nn
+ \msg_error:nnnn
+ { nnee }
+\ExplSyntaxOff
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+%### Themes {#themes-implementation}
+%
+% This section implements the theme-loading mechanism and the built-in themes
+% provided with the Markdown package. Futhermore, this section also implements
+% the built-in plain \TeX{} themes provided with the Markdown package.
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\prop_new:N \g_@@_plain_tex_loaded_themes_linenos_prop
+\cs_new:Nn
+ \@@_plain_tex_load_theme:nn
+ {
+ \prop_get:NnNTF
+ \g_@@_plain_tex_loaded_themes_linenos_prop
+ { #1 }
+ \l_tmpa_tl
+ {
+ \msg_warning:nnnV
+ { markdown }
+ { repeatedly-loaded-plain-tex-theme }
+ { #1 }
+ \l_tmpa_tl
+ }
+ {
+ \msg_info:nnn
+ { markdown }
+ { loading-plain-tex-theme }
+ { #1 }
+ \prop_gput:Nnx
+ \g_@@_plain_tex_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D }
+ \file_input:n
+ { markdown theme #2 }
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { loading-plain-tex-theme }
+ { Loading~plain~TeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { repeatedly-loaded-plain-tex-theme }
+ {
+ Plain~TeX~Markdown~theme~#1~was~previously~
+ loaded~on~line~#2,~not~loading~it~again
+ }
+\cs_generate_variant:Nn
+ \prop_gput:Nnn
+ { Nnx }
+\cs_gset_eq:NN
+ \@@_load_theme:nn
+ \@@_plain_tex_load_theme:nn
+\cs_generate_variant:Nn
+ \@@_load_theme:nn
+ { nV }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Developers can use the \mref{markdownLoadPlainTeXTheme} macro to load a
+% corresponding plain \TeX{} theme from within themes for higher-level \TeX{}
+% formats such as \LaTeX{} and \Hologo{ConTeXt}.
+%
+% \end{markdown}
+% \begin{macrocode}
+\cs_new:Npn
+ \markdownLoadPlainTeXTheme
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% First, we extract the name of the current theme from the
+% \mref{g_@@_current_theme_tl} macro.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \tl_set:NV
+ \l_tmpa_tl
+ \g_@@_current_theme_tl
+ \tl_reverse:N
+ \l_tmpa_tl
+ \tl_set:Ne
+ \l_tmpb_tl
+ {
+ \tl_tail:V
+ \l_tmpa_tl
+ }
+ \tl_reverse:N
+ \l_tmpb_tl
+% \end{macrocode}
+% \begin{markdown}
+%
+% Next, we munge the theme name.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \str_set:NV
+ \l_tmpa_str
+ \l_tmpb_tl
+ \str_replace_all:Nnn
+ \l_tmpa_str
+ { / }
+ { _ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Finally, we load the plain \TeX{} theme.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \@@_plain_tex_load_theme:VV
+ \l_tmpb_tl
+ \l_tmpa_str
+ }
+\cs_generate_variant:Nn
+ \tl_set:Nn
+ { Ne }
+\cs_generate_variant:Nn
+ \@@_plain_tex_load_theme:nn
+ { VV }
+\ExplSyntaxOff
% \end{macrocode}
+% \iffalse
+%</tex>
+%<*themes-witiko-tilde>
+% \fi
% \par
% \begin{markdown}
%
+% The `witiko/tilde` theme redefines the tilde token renderer prototype,
+% so that it expands to a non-breaking space:
+%
+% \end{markdown}
+% \begin{macrocode}
+\markdownSetup {
+ rendererPrototypes = {
+ tilde = {~},
+ },
+}
+% \end{macrocode}
+% \iffalse
+%</themes-witiko-tilde>
+%<*themes-witiko-markdown-defaults-tex>
+% \fi
+% \begin{markdown}
+%
+% The `witiko/markdown/defaults` plain \TeX{} theme provides default
+% definitions for token renderer prototypes. See Section
+% <#sec:tex-token-renderer-prototypes> for the actual definitions.
+%
%### Token Renderer Prototypes {#tex-token-renderer-prototypes}
%
% The following definitions should be considered placeholder.
@@ -28319,7 +32700,10 @@ end
% \end{markdown}
% \begin{macrocode}
\def\markdownRendererInterblockSeparatorPrototype{\par}%
+\def\markdownRendererParagraphSeparatorPrototype{%
+ \markdownRendererInterblockSeparator}%
\def\markdownRendererHardLineBreakPrototype{\hfil\break}%
+\def\markdownRendererSoftLineBreakPrototype{ }%
\let\markdownRendererEllipsisPrototype\dots
\def\markdownRendererNbspPrototype{~}%
\def\markdownRendererLeftBracePrototype{\char`\{}%
@@ -28340,7 +32724,7 @@ end
\def\markdownRendererContentBlockOnlineImagePrototype{%
\markdownRendererImage}%
\def\markdownRendererContentBlockCodePrototype#1#2#3#4#5{%
- \markdownRendererInputFencedCode{#3}{#2}}%
+ \markdownRendererInputFencedCode{#3}{#2}{#2}}%
\def\markdownRendererImagePrototype#1#2#3#4{#2}%
\def\markdownRendererUlBeginPrototype{}%
\def\markdownRendererUlBeginTightPrototype{}%
@@ -28378,7 +32762,7 @@ end
\def\markdownRendererLineBlockEndPrototype{\endgroup}%
\def\markdownRendererInputVerbatimPrototype#1{%
\par{\tt\input#1\relax{}}\par}%
-\def\markdownRendererInputFencedCodePrototype#1#2{%
+\def\markdownRendererInputFencedCodePrototype#1#2#3{%
\markdownRendererInputVerbatim{#1}}%
\def\markdownRendererHeadingOnePrototype#1{#1}%
\def\markdownRendererHeadingTwoPrototype#1{#1}%
@@ -28431,12 +32815,7 @@ end
\markdownRendererHeaderAttributeContextEndPrototype
\cs_gset:Npn
\markdownRendererReplacementCharacterPrototype
- {
- % TODO: Replace with `\codepoint_generate:nn` in TeX Live 2023
- \sys_if_engine_pdftex:TF
- { ^^ef^^bf^^bd }
- { ^^^^fffd }
- }
+ { \codepoint_str_generate:n { fffd } }
\ExplSyntaxOff
\def\markdownRendererSectionBeginPrototype{}%
\def\markdownRendererSectionEndPrototype{}%
@@ -28492,7 +32871,7 @@ end
% \par
% \begin{markdown}
%
-%#### YAML Metadata Renderer Prototypes {#expl3-yaml-metadata-implementation}
+%#### YAML Metadata Renderer Prototypes
%
% To keep track of the current type of structure we inhabit when we are
% traversing a \acro{yaml} document, we will maintain the
@@ -28727,6 +33106,35 @@ end
}
\ExplSyntaxOff
% \end{macrocode}
+% \iffalse
+%</themes-witiko-markdown-defaults-tex>
+%<*tex>
+% \fi
+% \begin{markdown}
+%
+% If plain \TeX{} is the top layer, we load the `witiko/markdown/defaults`
+% plain \TeX{} theme with the default definitions for token renderer
+% prototypes unless the option `noDefaults` has been enabled (see Section
+% <#sec:plain>).
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_plain_tex_tl
+ {
+ \ExplSyntaxOff
+ \@@_if_option:nF
+ { noDefaults }
+ {
+ \@@_setup:n
+ {theme = witiko/markdown/defaults}
+ }
+ \ExplSyntaxOn
+ }
+\ExplSyntaxOff
+% \end{macrocode}
% \begin{markdown}
%
%### Lua Snippets
@@ -28849,56 +33257,25 @@ end
% \par
% \begin{markdown}
%
-%### Buffering Markdown Input {#buffering}
-%
-% The
-% \mdef{markdownIfOption}`{`\meta{name}`}{`\meta{iftrue}`}{`\meta{iffalse}`}`
-% macro is provided for testing, whether the value of
-% `\markdownOption`\meta{name} is `true`. If the value is `true`, then
-% \meta{iftrue} is expanded, otherwise \meta{iffalse} is expanded.
+% The \mdef{markdownCleanup} macro contains the Lua code that is executed
+% after any conversion from markdown to plain \TeX{}.
%
% \end{markdown}
% \begin{macrocode}
-\ExplSyntaxOn
-\prg_new_conditional:Nnn
- \@@_if_option:n
- { TF, T, F }
- {
- \@@_get_option_type:nN
- { #1 }
- \l_tmpa_tl
- \str_if_eq:NNF
- \l_tmpa_tl
- \c_@@_option_type_boolean_tl
- {
- \msg_error:nnxx
- { markdown }
- { expected-boolean-option }
- { #1 }
- { \l_tmpa_tl }
- }
- \@@_get_option_value:nN
- { #1 }
- \l_tmpa_tl
- \str_if_eq:NNTF
- \l_tmpa_tl
- \c_@@_option_value_true_tl
- { \prg_return_true: }
- { \prg_return_false: }
- }
-\msg_new:nnn
- { markdown }
- { expected-boolean-option }
- {
- Option~#1~has~type~#2,~
- but~a~boolean~was~expected.
- }
-\let\markdownIfOption=\@@_if_option:nTF
-\ExplSyntaxOff
+\def\markdownCleanup{%
+% \end{macrocode}
+% \begin{markdown}
+% Remove the `options.cacheDir` directory if it is empty.
+% \end{markdown}
+% \begin{macrocode}
+ lfs.rmdir(cacheDir)
+}%
% \end{macrocode}
% \par
% \begin{markdown}
%
+%### Buffering Markdown Input {#buffering}
+%
% The macros \mdef{markdownInputFileStream} and \mdef{markdownOutputFileStream}
% contain the number of the input and output file streams that will be used for
% the IO operations of the package.
@@ -29080,266 +33457,64 @@ end
% \par
% \begin{markdown}
%
-% The following two sections of the implementation have been deprecated and
-% will be removed in Markdown 3.0.0. The code that corresponds to
-% \mref{markdownMode} value of `3` will be the only implementation.
+% Use the \pkg{lt3luabridge} library to define the \mdef{markdownLuaExecute}
+% macro, which takes in a Lua scripts and expands to the standard output
+% produced by its execution.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
-\int_compare:nT
- { \markdownMode = 3 }
+\cs_new:Npn
+ \markdownLuaExecute
+ #1
{
- \markdownInfo{Using~mode~3:~The~lt3luabridge~package}
- \file_input:n { lt3luabridge.tex }
- \cs_new:Npn
- \markdownLuaExecute
- { \luabridgeExecute }
+ \int_compare:nNnT
+ { \g_luabridge_method_int }
+ =
+ { \c_luabridge_method_shell_int }
+ {
+ \sys_if_shell_unrestricted:F
+ {
+ \sys_if_shell:TF
+ {
+ \msg_error:nn
+ { markdown }
+ { restricted-shell-access }
+ }
+ {
+ \msg_error:nn
+ { markdown }
+ { disabled-shell-access }
+ }
+ }
+ }
+ \luabridge_now:e
+ { #1 }
+ }
+\cs_generate_variant:Nn
+ \msg_new:nnnn
+ { nnnV }
+\tl_set:Nn
+ \l_tmpa_tl
+ {
+ You~may~need~to~run~TeX~with~the~--shell-escape~or~the~
+ --enable-write18~flag,~or~write~shell_escape=t~in~the~
+ texmf.cnf~file.
}
+\msg_new:nnnV
+ { markdown }
+ { restricted-shell-access }
+ { Shell~escape~is~restricted }
+ \l_tmpa_tl
+\msg_new:nnnV
+ { markdown }
+ { disabled-shell-access }
+ { Shell~escape~is~disabled }
+ \l_tmpa_tl
\ExplSyntaxOff
% \end{macrocode}
% \begin{markdown}
%
-%### Lua Shell Escape Bridge {#lua-bridge}
-%
-% The following \TeX{} code is intended for \TeX{} engines that do not provide
-% direct access to Lua, but expose the shell of the operating system. This
-% corresponds to the \mref{markdownMode} values of `0` and `1`.
-%
-% The \mref{markdownLuaExecute} macro defined here and in Section
-% <#sec:direct-lua> are meant to be indistinguishable to the remaining code.
-%
-% The package assumes that although the user is not using the Lua\TeX{} engine,
-% their \TeX{} distribution contains it, and uses shell access to produce and
-% execute Lua scripts using the \TeX{}Lua interpreter~[@luatex21, Section
-% 4.1.1].
-%
-% \end{markdown}
-% \begin{macrocode}
-\ifnum\markdownMode<2\relax
-\ifnum\markdownMode=0\relax
- \markdownWarning{Using mode 0: Shell escape via write18
- (deprecated, to be removed in Markdown 3.0.0)}%
-\else
- \markdownWarning{Using mode 1: Shell escape via os.execute
- (deprecated, to be removed in Markdown 3.0.0)}%
-\fi
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The \mdef{markdownExecuteShellEscape} macro contains the numeric value indicating
-% whether the shell access is enabled (`1`), disabled (`0`), or restricted
-% (`2`).
-%
-% Inherit the value of the `\pdfshellescape` (Lua\TeX{}, \Hologo{pdfTeX})
-% or the `\shellescape` (\Hologo{XeTeX}) commands. If neither of these
-% commands is defined and Lua is available, attempt to access the
-% `status.shell_escape` configuration item.
-%
-% If you cannot detect, whether the shell access is enabled, act as if it were.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ifx\pdfshellescape\undefined
- \ifx\shellescape\undefined
- \ifnum\markdownMode=0\relax
- \def\markdownExecuteShellEscape{1}%
- \else
- \def\markdownExecuteShellEscape{%
- \directlua{tex.sprint(status.shell_escape or "1")}}%
- \fi
- \else
- \let\markdownExecuteShellEscape\shellescape
- \fi
-\else
- \let\markdownExecuteShellEscape\pdfshellescape
-\fi
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The \mdef{markdownExecuteDirect} macro executes the code it has received as
-% its first argument by writing it to the output file stream 18, if Lua is
-% unavailable, or by using the Lua `os.execute` method otherwise.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ifnum\markdownMode=0\relax
- \def\markdownExecuteDirect#1{\immediate\write18{#1}}%
-\else
- \def\markdownExecuteDirect#1{%
- \directlua{os.execute("\luaescapestring{#1}")}}%
-\fi
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The \mdef{markdownExecute} macro is a wrapper on top of
-% \mref{markdownExecuteDirect} that checks the value of
-% \mref{markdownExecuteShellEscape} and prints an error message if the shell is
-% inaccessible.
-%
-% \end{markdown}
-% \begin{macrocode}
-\def\markdownExecute#1{%
- \ifnum\markdownExecuteShellEscape=1\relax
- \markdownExecuteDirect{#1}%
- \else
- \markdownError{I can not access the shell}{Either run the TeX
- compiler with the --shell-escape or the --enable-write18 flag,
- or set shell_escape=t in the texmf.cnf file}%
- \fi}%
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The \mdef{markdownLuaExecute} macro executes the Lua code it has received as
-% its first argument. The Lua code may not directly interact with the \TeX{}
-% engine, but it can use the `print` function in the same manner it
-% would use the `tex.print` method.
-%
-% \end{markdown}
-% \begin{macrocode}
-\begingroup
-% \end{macrocode}
-% \begin{markdown}
-% Swap the category code of the backslash symbol and the pipe symbol, so that
-% we may use the backslash symbol freely inside the Lua code.
-% \end{markdown}
-% \begin{macrocode}
- \catcode`|=0%
- \catcode`\\=12%
- |gdef|markdownLuaExecute#1{%
-% \end{macrocode}
-% \begin{markdown}
-% Create the file \Opt{helperScriptFileName} and fill it with the
-% input Lua code prepended with \pkg{kpathsea} initialization, so that Lua
-% modules from the \TeX{} distribution are available.
-% \end{markdown}
-% \begin{macrocode}
- |immediate|openout|markdownOutputFileStream=%
- |markdownOptionHelperScriptFileName
- |markdownInfo{Writing a helper Lua script to the file
- "|markdownOptionHelperScriptFileName"}%
- |immediate|write|markdownOutputFileStream{%
- local ran_ok, error = pcall(function()
-% \end{macrocode}
-% \begin{markdown}
-%
-% If \pkg{Kpathsea} has not been loaded before or if Lua\TeX{} has not yet
-% been initialized, configure \pkg{Kpathsea} on top of loading it.
-%
-% \end{markdown}
-% \begin{macrocode}
- local kpse
- (function()
- local should_initialize = package.loaded.kpse == nil
- or tex.initialize
- local ran_ok
- ran_ok, kpse = pcall(require, "kpse")
- if ran_ok and should_initialize then
- kpse.set_program_name("luatex")
- end
- end)()
- #1
- end)
-% \end{macrocode}
-% \begin{markdown}
-% If there was an error, use the file \Opt{errorTempFileName} to
-% store the error message.
-% \end{markdown}
-% \begin{macrocode}
- if not ran_ok then
- local file = io.open("%
- |markdownOptionOutputDir
- /|markdownOptionErrorTempFileName", "w")
- if file then
- file:write(error .. "\n")
- file:close()
- end
- print('\\markdownError{An error was encountered while executing
- Lua code}{For further clues, examine the file
- "|markdownOptionOutputDir
- /|markdownOptionErrorTempFileName"}')
- end}%
- |immediate|closeout|markdownOutputFileStream
-% \end{macrocode}
-% \begin{markdown}
-% Execute the generated \Opt{helperScriptFileName} Lua script using
-% the \TeX{}Lua binary and store the output in the
-% \Opt{outputTempFileName} file.
-% \end{markdown}
-% \begin{macrocode}
- |markdownInfo{Executing a helper Lua script from the file
- "|markdownOptionHelperScriptFileName" and storing the result in the
- file "|markdownOptionOutputTempFileName"}%
- |markdownExecute{texlua "|markdownOptionOutputDir
- /|markdownOptionHelperScriptFileName" > %
- "|markdownOptionOutputDir
- /|markdownOptionOutputTempFileName"}%
-% \end{macrocode}
-% \begin{markdown}
-% `\input` the generated \Opt{outputTempFileName} file.
-% \end{markdown}
-% \begin{macrocode}
- |input|markdownOptionOutputTempFileName|relax}%
-|endgroup
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-%### Direct Lua Access {#direct-lua}
-%
-% The following \TeX{} code is intended for \TeX{} engines that provide
-% direct access to Lua (Lua\TeX{}). The macro \mref{markdownLuaExecute} defined
-% here and in Section <#sec:lua-bridge> are meant to be indistinguishable to
-% the remaining code. This corresponds to the \mref{markdownMode} value of `2`.
-%
-% \end{markdown}
-% \begin{macrocode}
-\fi
-\ifnum\markdownMode=2\relax
- \markdownWarning{Using mode 2: Direct Lua access
- (deprecated, to be removed in Markdown 3.0.0)}%
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% The direct Lua access version of the \mref{markdownLuaExecute} macro is defined
-% in terms of the `\directlua` primitive. The `print` function is set as
-% an alias to the `tex.print` method in order to mimic the behaviour of the
-% \mref{markdownLuaExecute} definition from Section <#sec:lua-bridge>,
-%
-% \end{markdown}
-% \begin{macrocode}
-\begingroup
-% \end{macrocode}
-% \begin{markdown}
-% Swap the category code of the backslash symbol and the pipe symbol, so that
-% we may use the backslash symbol freely inside the Lua code.
-% \end{markdown}
-% \begin{macrocode}
- \catcode`|=0%
- \catcode`\\=12%
- |gdef|markdownLuaExecute#1{%
- |directlua{%
- local function print(input)
- local output = {}
- for line in input:gmatch("[^\r\n]+") do
- table.insert(output, line)
- end
- tex.print(output)
- end
- #1
- }%
- }%
-|endgroup
-\fi
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
%### Typesetting Markdown
%
% The \mref{markdownInput} macro uses an implementation of the
@@ -29413,20 +33588,15 @@ end
[[Could not open file "&1" for reading]])
local input = assert(file:read("*a"))
assert(file:close())
+ print(convert(input))
+ |markdownCleanup}%
% \end{macrocode}
% \begin{markdown}
-% Since the Lua converter expects \acro{unix} line endings, normalize the
-% input. Also add a line ending at the end of the file in case the input file
-% has none.
-% \end{markdown}
-% \begin{macrocode}
- print(convert(input))}%
-% \end{macrocode}
-% \begin{markdown}
-% In case we were finalizing the frozen cache, increment \Opt{frozenCacheCounter}.
+% If we are finalizing the frozen cache, increment \Opt{frozenCacheCounter}.
% \end{markdown}
% \begin{macrocode}
- |global|advance|markdownOptionFrozenCacheCounter by 1|relax
+ |markdownIfOption{finalizeCache}{%
+ |global|advance|markdownOptionFrozenCacheCounter by 1|relax}{}%
}%
|endgroup
}%
@@ -29472,19 +33642,6 @@ end
% \par
% \begin{markdown}
%
-% Use reflection to define the `renderers` and `rendererPrototypes` keys of
-% \mref{markdownSetup} as well as the keys that correspond to Lua options.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\@@_latex_define_renderers:
-\@@_latex_define_renderer_prototypes:
-\ExplSyntaxOff
-% \end{macrocode}
-% \par
-% \begin{markdown}
-%
%### Logging Facilities
% The \LaTeX{} implementation redefines the plain \TeX{} logging macros (see
% Section <#sec:tex-interface-logging>) to use the \LaTeX{} `\PackageInfo`,
@@ -29519,13 +33676,125 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\renewenvironment{markdown}{%
- \markdownReadAndConvert@markdown{}}{%
- \markdownEnd}%
-\renewenvironment{markdown*}[1]{%
- \markdownSetup{#1}%
- \markdownReadAndConvert@markdown*}{%
- \markdownEnd}%
+\ExplSyntaxOn
+\renewenvironment
+ { markdown }
+ {
+% \end{macrocode}
+% \markdownBegin
+%
+% In our implementation of the \envmref{markdown} \LaTeX{} environment, we
+% want to distinguish between the following two cases:
+% ``` tex
+% \begin{markdown} [smartEllipses] \begin{markdown}
+% \% This is an optional argument ^ [smartEllipses]
+% \% ... \% ^ This is link
+% \end{markdown} \end{markdown}
+% ```````
+%
+% Therefore, we cannot use the built-in \LaTeX{} support for environments
+% with optional arguments or packages such as \pkg{xparse}. Instead, we
+% must read the optional argument manually and prevent reading past the
+% end of a line.
+%
+% To prevent reading past the end of a line when looking for the optional
+% argument of the \envmref{markdown} \LaTeX{} environment and accidentally
+% tokenizing markdown text, we change the category code of carriage return
+% (`\r`, ASCII character 13 in decimal) from 5 (end of line).
+%
+% While any category code other than 5 (end of line) would work, we switch to
+% the category 13 (active), which is also used by the
+% \mref{markdownReadAndConvert} macro. This is necessary if we read until the
+% end of a line, because then the carriage return character will be
+% produced by \TeX{} via the `\endlinechar` plain \TeX{} macro and it needs
+% to have the correct category code, so that \mref{markdownReadAndConvert}
+% processes it correctly.
+%
+% \markdownEnd
+% \begin{macrocode}
+ \group_begin:
+ \char_set_catcode_active:n { 13 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% To prevent doubling the hash signs (`#`, ASCII code 35 in decimal), we switch
+% its category from 6 (parameter) to 12 (letter).
+%
+% \end{markdown}
+% \begin{macrocode}
+ \char_set_catcode_letter:n { 35 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% After we have matched the opening `[` that begins the optional argument,
+% we accept carriage returns as well.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \peek_regex_replace_once:nnF
+ { \ *\[([^]]*)\][^\r]* }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% After we have matched the optional argument, we switch back the category
+% code of carriage returns and hash signs and we retokenize the content. This
+% will cause single new lines to produce a space token and multiple new lines
+% to produce `\par` tokens. Furthermore, this will cause hash signs followed
+% by a number to be recognized as parameter numbers, which is necessary when
+% we use the optional argument to redefine token renderers and token renderer
+% prototypes.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \c { group_end: }
+ \c { tl_set_rescan:Nnn } \c { l_tmpa_tl } { } { \1 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Then, we pass the retokenized content to the \mref{markdownSetup} macro.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \c { @@_setup:V } \c { l_tmpa_tl }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Finally, regardless of whether or not we have matched the optional argument,
+% we let the \mref{markdownReadAndConvert} macro process the rest of the
+% \LaTeX{} environment.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \c { markdownReadAndConvert@markdown } { }
+ }
+ {
+ \group_end:
+ \markdownReadAndConvert@markdown { }
+ }
+ }
+ { \markdownEnd }
+\renewenvironment
+ { markdown* }
+ [ 1 ]
+ {
+ \msg_warning:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
+ { #1 }
+ \@@_setup:n
+ { #1 }
+ \markdownReadAndConvert@markdown *
+ }
+ { \markdownEnd }
+\msg_new:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
+ {
+ The~markdown*~LaTeX~environment~has~been~deprecated~and~will~
+ be~removed~in~the~next~major~version~of~the~Markdown~package.
+ }
+\ExplSyntaxOff
\begingroup
% \end{macrocode}
% \begin{markdown}
@@ -29546,51 +33815,147 @@ end
% \par
% \begin{markdown}
%
-%#### \LaTeX{} Themes {#latex-themes-implementation}
+%### Options
+% The supplied package options are processed using the \mref{markdownSetup} macro.
+%
+% \end{markdown}
+% \begin{macrocode}
+\DeclareOption*{%
+ \expandafter\markdownSetup\expandafter{\CurrentOption}}%
+\ProcessOptions\relax
+% \end{macrocode}
+% \begin{markdown}
+%
+%### Themes {#latex-themes-implementation}
%
-% This section implements the theme-loading mechanism and the example themes
-% provided with the Markdown package.
+% This section overrides the plain \TeX{} implementation of the theme-loading
+% mechanism from Section <#sec:themes-implementation>. Futhermore, this section
+% also implements the built-in \LaTeX{} themes provided with the Markdown package.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
+\cs_gset:Nn
+ \@@_load_theme:nn
+ {
% \end{macrocode}
+% \par
% \begin{markdown}
%
-% To keep track of our current place when packages themes have been nested,
-% we will maintain the \mdef{g_\@\@_latex_themes_seq} stack of theme names.
+% If the Markdown package has already been loaded, determine whether
+% a file named `markdowntheme`\meta{munged theme name}`.sty` exists
+% and whether we are still in the preamble.
%
% \end{markdown}
% \begin{macrocode}
-\newcommand\markdownLaTeXThemeName{}
-\seq_new:N \g_@@_latex_themes_seq
-\seq_gput_right:NV
- \g_@@_latex_themes_seq
- \markdownLaTeXThemeName
-\newcommand\markdownLaTeXThemeLoad[2]{
- \def\@tempa{%
- \def\markdownLaTeXThemeName{#2}
- \seq_gput_right:NV
- \g_@@_latex_themes_seq
- \markdownLaTeXThemeName
- \RequirePackage{#1}
- \seq_pop_right:NN
- \g_@@_latex_themes_seq
- \l_tmpa_tl
- \seq_get_right:NN
- \g_@@_latex_themes_seq
- \l_tmpa_tl
- \exp_args:NNV
- \def
- \markdownLaTeXThemeName
- \l_tmpa_tl}
- \ifmarkdownLaTeXLoaded
- \@tempa
- \else
- \exp_args:No
+ \ifmarkdownLaTeXLoaded
+ \ifx\@onlypreamble\@notprerr
+% \end{macrocode}
+% \begin{markdown}
+%
+% If both conditions are true does, end with an error, since we cannot load
+% \LaTeX{} themes after the preamble. Otherwise, try loading a plain \TeX{}
+% theme instead.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \file_if_exist:nTF
+ { markdown theme #2.sty }
+ {
+ \msg_error:nnn
+ { markdown }
+ { latex-theme-after-preamble }
+ { #1 }
+ }
+ {
+ \@@_plain_tex_load_theme:nn
+ { #1 }
+ { #2 }
+ }
+ \else
+% \end{macrocode}
+% \begin{markdown}
+%
+% If the Markdown package has already been loaded but we are still in the
+% preamble, load a \LaTeX{} theme if it exists or load a plain \TeX{} theme
+% otherwise.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \file_if_exist:nTF
+ { markdown theme #2.sty }
+ {
+ \msg_info:nnn
+ { markdown }
+ { loading-latex-theme }
+ { #1 }
+ \RequirePackage
+ { markdown theme #2 }
+ }
+ {
+ \@@_plain_tex_load_theme:nn
+ { #1 }
+ { #2 }
+ }
+ \fi
+ \else
+% \end{macrocode}
+% \begin{markdown}
+%
+% If the Markdown package has not yet been loaded, postpone the loading until
+% the Markdown package has finished loading.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \msg_info:nnn
+ { markdown }
+ { theme-loading-postponed }
+ { #1 }
\AtEndOfPackage
- { \@tempa }
- \fi}
+ {
+ \@@_load_theme:nn
+ { #1 }
+ { #2 }
+ }
+ \fi
+ }
+\msg_new:nnn
+ { markdown }
+ { theme-loading-postponed }
+ {
+ Postponing~loading~Markdown~theme~#1~until~
+ Markdown~package~has~finished~loading
+ }
+\msg_new:nnn
+ { markdown }
+ { loading-latex-theme }
+ { Loading~LaTeX~Markdown~theme~#1 }
+\cs_generate_variant:Nn
+ \msg_new:nnnn
+ { nnVV }
+\tl_set:Nn
+ \l_tmpa_tl
+ { Cannot~load~LaTeX~Markdown~theme~#1~after~ }
+\tl_put_right:NV
+ \l_tmpa_tl
+ \c_backslash_str
+\tl_put_right:Nn
+ \l_tmpa_tl
+ { begin{document} }
+\tl_set:Nn
+ \l_tmpb_tl
+ { Load~Markdown~theme~#1~before~ }
+\tl_put_right:NV
+ \l_tmpb_tl
+ \c_backslash_str
+\tl_put_right:Nn
+ \l_tmpb_tl
+ { begin{document} }
+\msg_new:nnVV
+ { markdown }
+ { latex-theme-after-preamble }
+ \l_tmpa_tl
+ \l_tmpb_tl
\ExplSyntaxOff
% \end{macrocode}
% \begin{markdown}
@@ -29600,7 +33965,7 @@ end
% \end{markdown}
% \iffalse
%</latex>
-%<*latex-themes-witiko-dot>
+%<*themes-witiko-dot>
% \fi
% \begin{macrocode}
\markdownSetup{fencedCode}%
@@ -29632,7 +33997,7 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\renewcommand\markdownRendererInputFencedCodePrototype[2]{%
+\renewcommand\markdownRendererInputFencedCodePrototype[3]{%
\def\next##1 ##2\relax{%
\ifthenelse{\equal{##1}{dot}}{%
\markdownIfOption{frozenCache}{}{%
@@ -29659,14 +34024,14 @@ end
% \end{markdown}
% \begin{macrocode}
}{%
- \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}%
+ \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}{#3}%
}%
}%
\next#2 \relax}%
% \end{macrocode}
% \iffalse
-%</latex-themes-witiko-dot>
-%<*latex-themes-witiko-graphicx-http>
+%</themes-witiko-dot>
+%<*themes-witiko-graphicx-http>
% \fi
% \par
% \begin{markdown}
@@ -29802,152 +34167,32 @@ end
\endgroup
% \end{macrocode}
% \iffalse
-%</latex-themes-witiko-graphicx-http>
-%<*latex-themes-witiko-tilde>
+%</themes-witiko-graphicx-http>
+%<*themes-witiko-markdown-defaults-latex>
% \fi
% \par
% \begin{markdown}
%
-% The `witiko/tilde` theme redefines the tilde token renderer prototype,
-% so that it expands to a non-breaking space:
+% The `witiko/markdown/defaults` \LaTeX{} theme provides default definitions
+% for token renderer prototypes. First, the \LaTeX{} theme loads the plain
+% \TeX{} theme with the default definitions for plain \TeX{}:
%
% \end{markdown}
% \begin{macrocode}
-\renewcommand\markdownRendererTildePrototype{~}%
+\markdownLoadPlainTeXTheme
% \end{macrocode}
-% \iffalse
-%</latex-themes-witiko-tilde>
-%<*latex>
-% \fi
% \par
% \begin{markdown}
%
-%### Options
-% The supplied package options are processed using the \mref{markdownSetup} macro.
-%
-% \end{markdown}
-% \begin{macrocode}
-\DeclareOption*{%
- \expandafter\markdownSetup\expandafter{\CurrentOption}}%
-\ProcessOptions\relax
-% \end{macrocode}
-% \begin{markdown}
-%
-% After processing the options, activate the `jekyllDataRenderes`, `renderers`,
-% `rendererPrototypes`, and `code` keys.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\keys_define:nn
- { markdown/latex-options }
- {
- renderers .code:n = {
- \keys_set:nn
- { markdown/latex-options/renderers }
- { #1 }
- },
- }
-\@@_with_various_cases:nn
- { rendererPrototypes }
- {
- \keys_define:nn
- { markdown/latex-options }
- {
- #1 .code:n = {
- \keys_set:nn
- { markdown/latex-options/renderer-prototypes }
- { ##1 }
- },
- }
- }
-% \end{macrocode}
-% \begin{markdown}
-%
-% The `code` key is used to immediately expand and execute code, which can be
-% especially useful in \LaTeX{} snippets.
-%
-% \end{markdown}
-% \begin{macrocode}
-\keys_define:nn
- { markdown/latex-options }
- {
- code .code:n = { #1 },
- }
-% \end{macrocode}
-% \begin{markdown}
-%
-% The `jekyllDataRenderers` key can be used as a syntactic sugar for setting
-% the `markdown/jekyllData` key--values (see Section <#sec:expl3yamlmetadata>)
-% without using the expl3 language.
-%
-% \end{markdown}
-% \begin{macrocode}
-\@@_with_various_cases:nn
- { jekyllDataRenderers }
- {
- \keys_define:nn
- { markdown/latex-options }
- {
- #1 .code:n = {
- \tl_set:Nn
- \l_tmpa_tl
- { ##1 }
-% \end{macrocode}
-% \begin{markdown}
-%
-% To ensure that keys containing forward slashes get passed correctly, we
-% replace all forward slashes in the input with backslash tokens with category
-% code letter and then undo the replacement. This means that if any unbraced
-% backslash tokens with category code letter exist in the input, they will be
-% replaced with forward slashes. However, this should be extremely rare.
-%
-% \end{markdown}
-% \begin{macrocode}
- \tl_replace_all:NnV
- \l_tmpa_tl
- { / }
- \c_backslash_str
- \keys_set:nV
- { markdown/latex-options/jekyll-data-renderers }
- \l_tmpa_tl
- },
- }
- }
-\keys_define:nn
- { markdown/latex-options/jekyll-data-renderers }
- {
- unknown .code:n = {
- \tl_set_eq:NN
- \l_tmpa_tl
- \l_keys_key_str
- \tl_replace_all:NVn
- \l_tmpa_tl
- \c_backslash_str
- { / }
- \tl_put_right:Nn
- \l_tmpa_tl
- {
- .code:n = { #1 }
- }
- \keys_define:nV
- { markdown/jekyllData }
- \l_tmpa_tl
- }
- }
-\cs_generate_variant:Nn
- \keys_define:nn
- { nV }
-\ExplSyntaxOff
-% \end{macrocode}
-% \par
-% \begin{markdown}
+% Next, the \LaTeX{} theme overrides some of the plain \TeX{} definitions.
+% See Section <#sec:latex-token-renderer-prototypes> for the actual
+% definitions.
%
-%### Token Renderer Prototypes {#latex-default-renderer-prototypes}
+%### Token Renderer Prototypes {#latex-token-renderer-prototypes}
%
-% The following configuration should be considered placeholder. If the `plain`
-% package option has been enabled (see Section <#sec:latexplain>), none of
-% it will take effect.
+% The following configuration should be considered placeholder. If the option
+% `plain` has been enabled (see Section <#sec:plain>), none of the definitions
+% will take effect.
% \end{markdown}
% \begin{macrocode}
\markdownIfOption{plain}{\iffalse}{\iftrue}
@@ -29991,7 +34236,7 @@ end
{ LowerRoman } { \int_to_roman:n { #2 } }
{ UpperRoman } { \int_to_Roman:n { #2 } }
{ LowerAlpha } { \int_to_alph:n { #2 } }
- { UpperAlpha } { \int_to_alph:n { #2 } }
+ { UpperAlpha } { \int_to_Alph:n { #2 } }
}
}
\cs_new:Nn
@@ -30057,16 +34302,26 @@ end
\tl_set:Nn
\l_@@_latex_fancy_list_item_label_delimiter_style_tl
{ #2 }
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{enumerate}[ }
- \tl_put_right:Nx
- \l_tmpa_tl
- { \@@_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
+ \@@_if_option:nTF
+ { startNumber }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \begin{enumerate} }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \begin{enumerate}[ }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { \@@_latex_paralist_style:nn { #1 } { #2 } }
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { ] }
+ }
+ \tl_use:N
\l_tmpa_tl
- { ] }
- \l_tmpa_tl
},
fancyOlEnd = {
\end{enumerate}
@@ -30104,15 +34359,27 @@ end
{
\plpartopsep=\partopsep
\pltopsep=\topsep
- \begin{compactenum}[
}
- \tl_put_right:Nx
- \l_tmpa_tl
- { \@@_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
+ \@@_if_option:nTF
+ { startNumber }
+ {
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { \begin{compactenum} }
+ }
+ {
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { \begin{compactenum}[ }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { \@@_latex_paralist_style:nn { #1 } { #2 } }
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { ] }
+ }
+ \tl_use:N
\l_tmpa_tl
- { ] }
- \l_tmpa_tl
},
fancyOlEndTight = {
\end{compactenum}
@@ -30250,7 +34517,7 @@ end
image = {%
\begin{figure}%
\begin{center}%
- \includegraphics{#3}%
+ \includegraphics[alt={#1}]{#3}%
\end{center}%
\ifx\empty#4\empty\else
\caption{#4}%
@@ -30267,43 +34534,44 @@ end
dlEnd = {\end{description}},
emphasis = {\emph{#1}},
tickedBox = {$\boxtimes$},
- halfTickedBox = {$\boxdot$},
+ halfTickedBox = {$\boxdot$}}}
% \end{macrocode}
% \par
% \begin{markdown}
%
-% If identifier attributes appear at the beginning of a section, we make the
-% next heading produce the `\label` macro.
+% If identifier attributes appear at the beginning of a section, we make them
+% produce the `\label` macro.
%
% \end{markdown}
% \begin{macrocode}
- headerAttributeContextBegin = {%
- \markdownSetup{
- rendererPrototypes = {
- attributeIdentifier = {%
- \begingroup
- \def\next####1{%
- \def####1########1{%
- \endgroup
- ####1{########1}%
- \label{##1}%
- }%
- }%
- \next\markdownRendererHeadingOne
- \next\markdownRendererHeadingTwo
- \next\markdownRendererHeadingThree
- \next\markdownRendererHeadingFour
- \next\markdownRendererHeadingFive
- \next\markdownRendererHeadingSix
- },
- },
- }%
+\ExplSyntaxOn
+\seq_new:N \l_@@_header_identifiers_seq
+\markdownSetup{
+ rendererPrototypes = {
+ headerAttributeContextBegin = {
+ \seq_clear:N \l_@@_header_identifiers_seq
+ \markdownSetup
+ {
+ renderers = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l_@@_header_identifiers_seq
+ { ##1 }
+ },
+ },
+ }
+ },
+ headerAttributeContextEnd = {
+ \seq_map_inline:Nn
+ \l_@@_header_identifiers_seq
+ { \label { ##1 } }
+ },
},
- headerAttributeContextEnd = {},
+}
+\ExplSyntaxOff
+\markdownSetup{rendererPrototypes={
superscript = {\textsuperscript{#1}},
subscript = {\textsubscript{#1}},
- displayMath = {\begin{displaymath}#1\end{displaymath}},
- inlineMath = {\begin{math}#1\end{math}},
blockQuoteBegin = {\begin{quotation}},
blockQuoteEnd = {\end{quotation}},
inputVerbatim = {\VerbatimInput{#1}},
@@ -30322,7 +34590,7 @@ end
\RequirePackage{ltxcmds}
\ExplSyntaxOn
\cs_gset:Npn
- \markdownRendererInputFencedCodePrototype#1#2
+ \markdownRendererInputFencedCodePrototype#1#2#3
{
\tl_if_empty:nTF
{ #2 }
@@ -30382,7 +34650,7 @@ end
%
% \end{markdown}
% \begin{macrocode}
- { \markdownRendererInputFencedCode{#1}{} }
+ { \markdownRendererInputFencedCode{#1}{}{} }
}
}
}
@@ -30419,16 +34687,16 @@ end
headingOne = {\section{#1}},
headingTwo = {\subsection{#1}},
headingThree = {\subsubsection{#1}},
- headingFour = {\paragraph{#1}\leavevmode},
- headingFive = {\subparagraph{#1}\leavevmode}}}
+ headingFour = {\paragraph{#1}},
+ headingFive = {\subparagraph{#1}}}}
}{%
\markdownSetup{rendererPrototypes = {
headingOne = {\chapter{#1}},
headingTwo = {\section{#1}},
headingThree = {\subsection{#1}},
headingFour = {\subsubsection{#1}},
- headingFive = {\paragraph{#1}\leavevmode},
- headingSix = {\subparagraph{#1}\leavevmode}}}
+ headingFive = {\paragraph{#1}},
+ headingSix = {\subparagraph{#1}}}}
}%
% \end{macrocode}
% \par
@@ -30966,25 +35234,10 @@ end
%
% \end{markdown}
% \begin{macrocode}
-% TODO: Remove the command definition in TeX Live 2021.
-\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\markdownSetup{
rendererPrototypes = {
jekyllDataEnd = {
-% TODO: Remove the else branch in TeX Live 2021.
- \IfFormatAtLeastTF
- { 2020-10-01 }
- { \AddToHook{begindocument/end}{\maketitle} }
- {
- \ifx\@onlypreamble\@notprerr
- % We are in the document
- \maketitle
- \else
- % We are in the preamble
- \RequirePackage{etoolbox}
- \AfterEndPreamble{\maketitle}
- \fi
- }
+ \AddToHook{begindocument/end}{\maketitle}
},
},
}
@@ -31013,18 +35266,18 @@ end
% \par
% \begin{markdown}
%
-%#### Strike-Through
-% If the \Opt{strikeThrough} option is enabled, we will load the
-% \pkg{soulutf8} package and use it to implement strike-throughs.
+%#### Marked Text
+% If the \Opt{mark} option is enabled, we will load the \pkg{soulutf8} package
+% and use it to implement marked text.
%
% \end{markdown}
% \begin{macrocode}
-\markdownIfOption{strikeThrough}{%
+\markdownIfOption{mark}{%
\RequirePackage{soulutf8}%
\markdownSetup{
rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
+ mark = {%
+ \hl{#1}%
},
}
}
@@ -31120,8 +35373,12 @@ end
}
}
\ExplSyntaxOff
-\fi % Closes `\markdownIfOption{Plain}{\iffalse}{iftrue}`
+\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}`
% \end{macrocode}
+% \iffalse
+%</themes-witiko-markdown-defaults-latex>
+%<*latex>
+% \fi
% \par
% \begin{markdown}
%
@@ -31186,7 +35443,7 @@ end
% \begin{markdown}
%
%### Typesetting Markdown
-% The \mref{inputmarkdown} is defined to accept an optional argument with
+% The \mref{inputmarkdown} macro is defined to accept an optional argument with
% options recognized by the \Hologo{ConTeXt} interface (see Section
% <#sec:context-options>).
%
@@ -31198,7 +35455,7 @@ end
\long\def\doinputmarkdown[#1]#2{%
\begingroup
\iffirstargument
- \setupmarkdown{#1}%
+ \setupmarkdown[#1]%
\fi
\markdownInput{#2}%
\endgroup}%
@@ -31220,48 +35477,108 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\ifx\startluacode\undefined % MkII
- \begingroup
- \catcode`\|=0%
- \catcode`\\=12%
- |gdef|startmarkdown{%
- |markdownReadAndConvert{\stopmarkdown}%
- {|stopmarkdown}}%
- |gdef|stopmarkdown{%
- |markdownEnd}%
- |endgroup
-\else % MkIV
- \startluacode
- document.markdown_buffering = false
- local function preserve_trailing_spaces(line)
- if document.markdown_buffering then
- line = line:gsub("[ \t][ \t]$", "\t\t")
- end
- return line
+\startluacode
+ document.markdown_buffering = false
+ local function preserve_trailing_spaces(line)
+ if document.markdown_buffering then
+ line = line:gsub("[ \t][ \t]$", "\t\t")
end
- resolvers.installinputlinehandler(preserve_trailing_spaces)
- \stopluacode
- \begingroup
- \catcode`\|=0%
- \catcode`\\=12%
- |gdef|startmarkdown{%
- |ctxlua{document.markdown_buffering = true}%
- |markdownReadAndConvert{\stopmarkdown}%
- {|stopmarkdown}}%
- |gdef|stopmarkdown{%
- |ctxlua{document.markdown_buffering = false}%
- |markdownEnd}%
- |endgroup
-\fi
+ return line
+ end
+ resolvers.installinputlinehandler(preserve_trailing_spaces)
+\stopluacode
+\begingroup
+ \catcode`\|=0%
+ \catcode`\\=12%
+ |gdef|startmarkdown{%
+ |ctxlua{document.markdown_buffering = true}%
+ |markdownReadAndConvert{\stopmarkdown}%
+ {|stopmarkdown}}%
+ |gdef|stopmarkdown{%
+ |ctxlua{document.markdown_buffering = false}%
+ |markdownEnd}%
+|endgroup
% \end{macrocode}
% \par
% \begin{markdown}
%
-%### Token Renderer Prototypes
-% The following configuration should be considered placeholder.
+%### Themes {#context-themes-implementation}
+%
+% This section overrides the plain \TeX{} implementation of the theme-loading
+% mechanism from Section <#sec:themes-implementation>. Futhermore, this section
+% also implements the built-in \Hologo{ConTeXt} themes provided with the
+% Markdown package.
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_gset:Nn
+ \@@_load_theme:nn
+ {
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Determine whether a file named `t-markdowntheme`\meta{munged theme
+% name}`.tex` exists. If it does, load it. Otherwise, try loading a plain
+% \TeX{} theme instead.
%
% \end{markdown}
% \begin{macrocode}
+ \file_if_exist:nTF
+ { t - markdown theme #2.tex }
+ {
+ \msg_info:nnn
+ { markdown }
+ { loading-context-theme }
+ { #1 }
+ \usemodule
+ [ t ]
+ [ markdown theme #2 ]
+ }
+ {
+ \@@_plain_tex_load_theme:nn
+ { #1 }
+ { #2 }
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { loading-context-theme }
+ { Loading~ConTeXt~Markdown~theme~#1 }
+\ExplSyntaxOff
+% \end{macrocode}
+% \iffalse
+%</context>
+%<*themes-witiko-markdown-defaults-context>
+% \fi
+% \par
+% \begin{markdown}
+%
+% The `witiko/markdown/defaults` \Hologo{ConTeXt} theme provides default
+% definitions for token renderer prototypes. First, the \Hologo{ConTeXt} theme
+% loads the plain \TeX{} theme with the default definitions for plain \TeX{}:
+%
+% \end{markdown}
+% \begin{macrocode}
+\markdownLoadPlainTeXTheme
+% \end{macrocode}
+% \par
+% \begin{markdown}
+%
+% Next, the \Hologo{ConTeXt} theme overrides some of the plain \TeX{} definitions.
+% See Section <#sec:context-token-renderer-prototypes> for the actual
+% definitions.
+%
+%### Token Renderer Prototypes {#context-token-renderer-prototypes}
+%
+% The following configuration should be considered placeholder. If the option
+% `plain` has been enabled (see Section <#sec:plain>), none of the definitions
+% will take effect.
+%
+% \end{markdown}
+% \begin{macrocode}
+\markdownIfOption{plain}{\iffalse}{\iftrue}
\def\markdownRendererHardLineBreakPrototype{\blank}%
\def\markdownRendererLeftBracePrototype{\textbraceleft}%
\def\markdownRendererRightBracePrototype{\textbraceright}%
@@ -31356,7 +35673,7 @@ end
% \begin{macrocode}
\ExplSyntaxOn
\cs_gset:Npn
- \markdownRendererInputFencedCodePrototype#1#2
+ \markdownRendererInputFencedCodePrototype#1#2#3
{
\tl_if_empty:nTF
{ #2 }
@@ -31416,7 +35733,6 @@ end
\def\markdownRendererSuperscriptPrototype#1{\high{#1}}
\def\markdownRendererSubscriptPrototype#1{\low{#1}}
\def\markdownRendererDisplayMathPrototype#1{\startformula#1\stopformula}%
-\def\markdownRendererInlineMathPrototype#1{$#1$}%
% \end{macrocode}
% \par
% \begin{markdown}
@@ -31544,8 +35860,30 @@ end
\cs_gset_eq:NN
\markdownRendererInputRawBlockPrototype
\markdownRendererInputRawInlinePrototype
+\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}`
\ExplSyntaxOff
-\stopmodule\protect
+\stopmodule
+\protect
+% \end{macrocode}
+% \iffalse
+%</themes-witiko-markdown-defaults-context>
+%<*context>
+% \fi
+% \par
+% \begin{markdown}
+%
+% At the end of the \Hologo{ConTeXt} module, we load the
+% `witiko/markdown/defaults` \Hologo{ConTeXt} theme with the default
+% definitions for token renderer prototypes unless the option `noDefaults`
+% has been enabled (see Section <#sec:plain>).
+%
+% \end{markdown}
+% \begin{macrocode}
+\markdownIfOption{noDefaults}{}{
+ \setupmarkdown[theme=witiko/markdown/defaults]
+}
+\stopmodule
+\protect
% \end{macrocode}
% \iffalse
%</context>
diff --git a/Master/texmf-dist/source/generic/markdown/markdown.ins b/Master/texmf-dist/source/generic/markdown/markdown.ins
index de2f350d50f..8e777f4217c 100644
--- a/Master/texmf-dist/source/generic/markdown/markdown.ins
+++ b/Master/texmf-dist/source/generic/markdown/markdown.ins
@@ -9,10 +9,13 @@
\file{markdown.tex}{\from{markdown.dtx}{tex}}
\file{markdown.sty}{\from{markdown.dtx}{latex}}
\file{t-markdown.tex}{\from{markdown.dtx}{context}}
- \file{markdownthemewitiko_dot.sty}{\from{markdown.dtx}{latex-themes-witiko-dot}}
- \file{markdownthemewitiko_graphicx_http.sty}{\from{markdown.dtx}{latex-themes-witiko-graphicx-http}}
- \file{markdownthemewitiko_tilde.sty}{\from{markdown.dtx}{latex-themes-witiko-tilde}}
- \file{markdownthemewitiko_markdown_techdoc.sty}{\from{markdown.dtx}{latex-themes-witiko-markdown-techdoc}}
+ \file{markdownthemewitiko_dot.sty}{\from{markdown.dtx}{themes-witiko-dot}}
+ \file{markdownthemewitiko_graphicx_http.sty}{\from{markdown.dtx}{themes-witiko-graphicx-http}}
+ \file{markdownthemewitiko_tilde.tex}{\from{markdown.dtx}{themes-witiko-tilde}}
+ \file{markdownthemewitiko_markdown_defaults.tex}{\from{markdown.dtx}{themes-witiko-markdown-defaults-tex}}
+ \file{markdownthemewitiko_markdown_defaults.sty}{\from{markdown.dtx}{themes-witiko-markdown-defaults-latex}}
+ \file{t-markdownthemewitiko_markdown_defaults.tex}{\from{markdown.dtx}{themes-witiko-markdown-defaults-context}}
+ \file{markdownthemewitiko_markdown_techdoc.sty}{\from{markdown.dtx}{themes-witiko-markdown-techdoc}}
\usepreamble\empty
\usepostamble\empty
\file{markdown.md}{\from{markdown.dtx}{manual}}
diff --git a/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex b/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
index 7185b66c2c5..642d0bcd2da 100644
--- a/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
+++ b/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `context')
%%
-%% Copyright (C) 2016-2023 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,7 +16,7 @@
%% http://www.latex-project.org/lppl.txt
%%
%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Novotný.
+%% The Current Maintainer of this work is Vít Starý Novotný.
%%
%% Send bug reports, requests for additions and questions
%% either to the GitHub issue tracker at
@@ -42,11 +42,25 @@
%%
%% The names of the source files used are shown above.
%%
+\unprotect
+\ifx\ExplSyntaxOn\undefined
+ \input expl3-generic
+\fi
+\ExplSyntaxOn
+\tl_const:Nn \c__markdown_option_layer_context_tl { context }
+\cs_generate_variant:Nn
+ \tl_const:Nn
+ { NV }
+\tl_if_exist:NF
+ \c__markdown_top_layer_tl
+ {
+ \tl_const:NV
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_context_tl
+ }
+\ExplSyntaxOff
\writestatus{loading}{ConTeXt User Module / markdown}%
\startmodule[markdown]
-\unprotect
-\def\markdownInfo#1{\writestatus{markdown}{#1.}}%
-\def\markdownWarning#1{\writestatus{markdown\space warn}{#1.}}%
\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
\do\#\do\^\do\_\do\%\do\~}%
\input markdown/markdown
@@ -54,39 +68,13 @@
\let\stopmarkdown\relax
\let\inputmarkdown\relax
\ExplSyntaxOn
-\cs_new:Nn
- \__markdown_setup:n
- {
- \keys_set:nn
- { markdown/context-options }
- { #1 }
- }
-\long\def\setupmarkdown[#1]
+\cs_new:Npn
+ \setupmarkdown
+ [ #1 ]
{
\__markdown_setup:n
{ #1 }
}
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn \__markdown_context_define_option_commands_and_keyvals:
- {
- \seq_map_inline:Nn
- \g__markdown_option_layers_seq
- {
- \seq_map_inline:cn
- { g__markdown_ ##1 _options_seq }
- {
- \__markdown_with_various_cases:nn
- { ####1 }
- {
- \__markdown_context_define_option_keyval:nnn
- { ##1 }
- { ####1 }
- { ########1 }
- }
- }
- }
- }
\cs_new:Nn \__markdown_caseless:N
{
\regex_replace_all:nnN
@@ -98,47 +86,14 @@
{ #1 }
}
\seq_gput_right:Nn \g__markdown_cases_seq { __markdown_caseless:N }
-\cs_new:Nn \__markdown_context_define_option_keyval:nnn
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_context_tl
{
- \prop_get:cnN
- { g__markdown_ #1 _option_types_prop }
- { #2 }
- \l_tmpa_tl
- \keys_define:nn
- { markdown/context-options }
- {
- #3 .code:n = {
- \tl_set:Nx
- \l_tmpa_tl
- {
- \str_case:nnF
- { ##1 }
- {
- { yes } { true }
- { no } { false }
- }
- { ##1 }
- }
- \__markdown_set_option_value:nV
- { #2 }
- \l_tmpa_tl
- },
- }
- \str_if_eq:VVT
- \l_tmpa_tl
- \c__markdown_option_type_boolean_tl
- {
- \keys_define:nn
- { markdown/context-options }
- {
- #3 .default:n = { true },
- }
- }
+ \__markdown_define_option_commands_and_keyvals:
+ \__markdown_define_renderers:
+ \__markdown_define_renderer_prototypes:
}
-\cs_generate_variant:Nn
- \__markdown_set_option_value:nn
- { nV }
-\__markdown_context_define_option_commands_and_keyvals:
\ExplSyntaxOff
\def\markdownMakeOther{%
\count0=128\relax
@@ -153,270 +108,62 @@
\long\def\doinputmarkdown[#1]#2{%
\begingroup
\iffirstargument
- \setupmarkdown{#1}%
+ \setupmarkdown[#1]%
\fi
\markdownInput{#2}%
\endgroup}%
-\ifx\startluacode\undefined % MkII
- \begingroup
- \catcode`\|=0%
- \catcode`\\=12%
- |gdef|startmarkdown{%
- |markdownReadAndConvert{\stopmarkdown}%
- {|stopmarkdown}}%
- |gdef|stopmarkdown{%
- |markdownEnd}%
- |endgroup
-\else % MkIV
- \startluacode
- document.markdown_buffering = false
- local function preserve_trailing_spaces(line)
- if document.markdown_buffering then
- line = line:gsub("[ \t][ \t]$", "\t\t")
- end
- return line
+\startluacode
+ document.markdown_buffering = false
+ local function preserve_trailing_spaces(line)
+ if document.markdown_buffering then
+ line = line:gsub("[ \t][ \t]$", "\t\t")
end
- resolvers.installinputlinehandler(preserve_trailing_spaces)
- \stopluacode
- \begingroup
- \catcode`\|=0%
- \catcode`\\=12%
- |gdef|startmarkdown{%
- |ctxlua{document.markdown_buffering = true}%
- |markdownReadAndConvert{\stopmarkdown}%
- {|stopmarkdown}}%
- |gdef|stopmarkdown{%
- |ctxlua{document.markdown_buffering = false}%
- |markdownEnd}%
- |endgroup
-\fi
-\def\markdownRendererHardLineBreakPrototype{\blank}%
-\def\markdownRendererLeftBracePrototype{\textbraceleft}%
-\def\markdownRendererRightBracePrototype{\textbraceright}%
-\def\markdownRendererDollarSignPrototype{\textdollar}%
-\def\markdownRendererPercentSignPrototype{\percent}%
-\def\markdownRendererUnderscorePrototype{\textunderscore}%
-\def\markdownRendererCircumflexPrototype{\textcircumflex}%
-\def\markdownRendererBackslashPrototype{\textbackslash}%
-\def\markdownRendererTildePrototype{\textasciitilde}%
-\def\markdownRendererPipePrototype{\char`|}%
-\def\markdownRendererLinkPrototype#1#2#3#4{%
- \useURL[#1][#3][][#4]#1\footnote[#1]{\ifx\empty#4\empty\else#4:
- \fi\tt<\hyphenatedurl{#3}>}}%
-\usemodule[database]
-\defineseparatedlist
- [MarkdownConTeXtCSV]
- [separator={,},
- before=\bTABLE,after=\eTABLE,
- first=\bTR,last=\eTR,
- left=\bTD,right=\eTD]
-\def\markdownConTeXtCSV{csv}
-\def\markdownRendererContentBlockPrototype#1#2#3#4{%
- \def\markdownConTeXtCSV@arg{#1}%
- \ifx\markdownConTeXtCSV@arg\markdownConTeXtCSV
- \placetable[][tab:#1]{#4}{%
- \processseparatedfile[MarkdownConTeXtCSV][#3]}%
- \else
- \markdownInput{#3}%
- \fi}%
-\def\markdownRendererImagePrototype#1#2#3#4{%
- \placefigure[][]{#4}{\externalfigure[#3]}}%
-\def\markdownRendererUlBeginPrototype{\startitemize}%
-\def\markdownRendererUlBeginTightPrototype{\startitemize[packed]}%
-\def\markdownRendererUlItemPrototype{\item}%
-\def\markdownRendererUlEndPrototype{\stopitemize}%
-\def\markdownRendererUlEndTightPrototype{\stopitemize}%
-\def\markdownRendererOlBeginPrototype{\startitemize[n]}%
-\def\markdownRendererOlBeginTightPrototype{\startitemize[packed,n]}%
-\def\markdownRendererOlItemPrototype{\item}%
-\def\markdownRendererOlItemWithNumberPrototype#1{\sym{#1.}}%
-\def\markdownRendererOlEndPrototype{\stopitemize}%
-\def\markdownRendererOlEndTightPrototype{\stopitemize}%
-\definedescription
- [MarkdownConTeXtDlItemPrototype]
- [location=hanging,
- margin=standard,
- headstyle=bold]%
-\definestartstop
- [MarkdownConTeXtDlPrototype]
- [before=\blank,
- after=\blank]%
-\definestartstop
- [MarkdownConTeXtDlTightPrototype]
- [before=\blank\startpacked,
- after=\stoppacked\blank]%
-\def\markdownRendererDlBeginPrototype{%
- \startMarkdownConTeXtDlPrototype}%
-\def\markdownRendererDlBeginTightPrototype{%
- \startMarkdownConTeXtDlTightPrototype}%
-\def\markdownRendererDlItemPrototype#1{%
- \startMarkdownConTeXtDlItemPrototype{#1}}%
-\def\markdownRendererDlItemEndPrototype{%
- \stopMarkdownConTeXtDlItemPrototype}%
-\def\markdownRendererDlEndPrototype{%
- \stopMarkdownConTeXtDlPrototype}%
-\def\markdownRendererDlEndTightPrototype{%
- \stopMarkdownConTeXtDlTightPrototype}%
-\def\markdownRendererEmphasisPrototype#1{{\em#1}}%
-\def\markdownRendererStrongEmphasisPrototype#1{{\bf#1}}%
-\def\markdownRendererBlockQuoteBeginPrototype{\startquotation}%
-\def\markdownRendererBlockQuoteEndPrototype{\stopquotation}%
-\def\markdownRendererLineBlockBeginPrototype{%
- \begingroup
- \def\markdownRendererHardLineBreak{
- }%
- \startlines
-}%
-\def\markdownRendererLineBlockEndPrototype{%
- \stoplines
- \endgroup
-}%
-\def\markdownRendererInputVerbatimPrototype#1{\typefile{#1}}%
-\ExplSyntaxOn
-\cs_gset:Npn
- \markdownRendererInputFencedCodePrototype#1#2
- {
- \tl_if_empty:nTF
- { #2 }
- { \markdownRendererInputVerbatim{#1} }
- {
- \regex_extract_once:nnN
- { \w* }
- { #2 }
- \l_tmpa_seq
- \seq_pop_left:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \typefile[\l_tmpa_tl][]{#1}
- }
- }
-\ExplSyntaxOff
-\def\markdownRendererHeadingOnePrototype#1{\chapter{#1}}%
-\def\markdownRendererHeadingTwoPrototype#1{\section{#1}}%
-\def\markdownRendererHeadingThreePrototype#1{\subsection{#1}}%
-\def\markdownRendererHeadingFourPrototype#1{\subsubsection{#1}}%
-\def\markdownRendererHeadingFivePrototype#1{\subsubsubsection{#1}}%
-\def\markdownRendererHeadingSixPrototype#1{\subsubsubsubsection{#1}}%
-\def\markdownRendererThematicBreakPrototype{%
- \blackrule[height=1pt, width=\hsize]}%
-\def\markdownRendererNotePrototype#1{\footnote{#1}}%
-\def\markdownRendererTickedBoxPrototype{$\boxtimes$}
-\def\markdownRendererHalfTickedBoxPrototype{$\boxdot$}
-\def\markdownRendererUntickedBoxPrototype{$\square$}
-\def\markdownRendererStrikeThroughPrototype#1{\overstrikes{#1}}
-\def\markdownRendererSuperscriptPrototype#1{\high{#1}}
-\def\markdownRendererSubscriptPrototype#1{\low{#1}}
-\def\markdownRendererDisplayMathPrototype#1{\startformula#1\stopformula}%
-\def\markdownRendererInlineMathPrototype#1{$#1$}%
-\newcount\markdownConTeXtRowCounter
-\newcount\markdownConTeXtRowTotal
-\newcount\markdownConTeXtColumnCounter
-\newcount\markdownConTeXtColumnTotal
-\newtoks\markdownConTeXtTable
-\newtoks\markdownConTeXtTableFloat
-\def\markdownRendererTablePrototype#1#2#3{%
- \markdownConTeXtTable={}%
- \ifx\empty#1\empty
- \markdownConTeXtTableFloat={%
- \the\markdownConTeXtTable}%
- \else
- \markdownConTeXtTableFloat={%
- \placetable{#1}{\the\markdownConTeXtTable}}%
- \fi
- \begingroup
- \setupTABLE[r][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off]
- \setupTABLE[c][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off]
- \setupTABLE[r][1][topframe=on, bottomframe=on]
- \setupTABLE[r][#1][bottomframe=on]
- \markdownConTeXtRowCounter=0%
- \markdownConTeXtRowTotal=#2%
- \markdownConTeXtColumnTotal=#3%
- \markdownConTeXtRenderTableRow}
-\def\markdownConTeXtRenderTableRow#1{%
- \markdownConTeXtColumnCounter=0%
- \ifnum\markdownConTeXtRowCounter=0\relax
- \markdownConTeXtReadAlignments#1%
- \markdownConTeXtTable={\bTABLE}%
- \else
- \markdownConTeXtTable=\expandafter{%
- \the\markdownConTeXtTable\bTR}%
- \markdownConTeXtRenderTableCell#1%
- \markdownConTeXtTable=\expandafter{%
- \the\markdownConTeXtTable\eTR}%
- \fi
- \advance\markdownConTeXtRowCounter by 1\relax
- \ifnum\markdownConTeXtRowCounter>\markdownConTeXtRowTotal\relax
- \markdownConTeXtTable=\expandafter{%
- \the\markdownConTeXtTable\eTABLE}%
- \the\markdownConTeXtTableFloat
- \endgroup
- \expandafter\gobbleoneargument
- \fi\markdownConTeXtRenderTableRow}
-\def\markdownConTeXtReadAlignments#1{%
- \advance\markdownConTeXtColumnCounter by 1\relax
- \if#1d%
- \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=right]
- \fi\if#1l%
- \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=right]
- \fi\if#1c%
- \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=middle]
- \fi\if#1r%
- \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=left]
- \fi
- \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else
- \expandafter\gobbleoneargument
- \fi\markdownConTeXtReadAlignments}
-\def\markdownConTeXtRenderTableCell#1{%
- \advance\markdownConTeXtColumnCounter by 1\relax
- \markdownConTeXtTable=\expandafter{%
- \the\markdownConTeXtTable\bTD#1\eTD}%
- \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else
- \expandafter\gobbleoneargument
- \fi\markdownConTeXtRenderTableCell}
+ return line
+ end
+ resolvers.installinputlinehandler(preserve_trailing_spaces)
+\stopluacode
+\begingroup
+ \catcode`\|=0%
+ \catcode`\\=12%
+ |gdef|startmarkdown{%
+ |ctxlua{document.markdown_buffering = true}%
+ |markdownReadAndConvert{\stopmarkdown}%
+ {|stopmarkdown}}%
+ |gdef|stopmarkdown{%
+ |ctxlua{document.markdown_buffering = false}%
+ |markdownEnd}%
+|endgroup
\ExplSyntaxOn
-\cs_gset:Npn
- \markdownRendererInputRawInlinePrototype#1#2
+\cs_gset:Nn
+ \__markdown_load_theme:nn
{
- \str_case:nnF
- { #2 }
- {
- { latex }
- {
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
- { #1 }
- { context }
- }
- }
+ \file_if_exist:nTF
+ { t - markdown theme #2.tex }
{
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \msg_info:nnn
+ { markdown }
+ { loading-context-theme }
{ #1 }
- { #2 }
- }
- }
-\cs_gset:Npn
- \markdownRendererInputRawBlockPrototype#1#2
- {
- \str_case:nnF
- { #2 }
- {
- { context }
- {
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
- { #1 }
- { tex }
- }
+ \usemodule
+ [ t ]
+ [ markdown theme #2 ]
}
{
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \__markdown_plain_tex_load_theme:nn
{ #1 }
{ #2 }
}
}
-\cs_gset_eq:NN
- \markdownRendererInputRawBlockPrototype
- \markdownRendererInputRawInlinePrototype
+\msg_new:nnn
+ { markdown }
+ { loading-context-theme }
+ { Loading~ConTeXt~Markdown~theme~#1 }
\ExplSyntaxOff
-\stopmodule\protect
+\markdownIfOption{noDefaults}{}{
+ \setupmarkdown[theme=witiko/markdown/defaults]
+}
+\stopmodule
+\protect
\endinput
%%
%% End of file `t-markdown.tex'.
diff --git a/Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex b/Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex
new file mode 100644
index 00000000000..35fd80f89cd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex
@@ -0,0 +1,279 @@
+%%
+%% This is file `t-markdownthemewitiko_markdown_defaults.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% markdown.dtx (with options: `themes-witiko-markdown-defaults-context')
+%%
+%% Copyright (C) 2016-2024 Vít Starý Novotný
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%% The Current Maintainer of this work is Vít Starý Novotný.
+%%
+%% Send bug reports, requests for additions and questions
+%% either to the GitHub issue tracker at
+%%
+%% https://github.com/Witiko/markdown/issues
+%%
+%% or to the e-mail address <witiko@mail.muni.cz>.
+%%
+%% MODIFICATION ADVICE:
+%%
+%% If you want to customize this file, it is best to make a copy of
+%% the source file(s) from which it was produced. Use a different
+%% name for your copy(ies) and modify the copy(ies); this will ensure
+%% that your modifications do not get overwritten when you install a
+%% new release of the standard system. You should also ensure that
+%% your modified source file does not generate any modified file with
+%% the same name as a standard file.
+%%
+%% You will also need to produce your own, suitably named, .ins file to
+%% control the generation of files from your source file; this file
+%% should contain your own preambles for the files it generates, not
+%% those in the standard .ins files.
+%%
+%% The names of the source files used are shown above.
+%%
+\startmodule[markdownthemewitiko_markdown_defaults]
+\unprotect
+\markdownLoadPlainTeXTheme
+\markdownIfOption{plain}{\iffalse}{\iftrue}
+\def\markdownRendererHardLineBreakPrototype{\blank}%
+\def\markdownRendererLeftBracePrototype{\textbraceleft}%
+\def\markdownRendererRightBracePrototype{\textbraceright}%
+\def\markdownRendererDollarSignPrototype{\textdollar}%
+\def\markdownRendererPercentSignPrototype{\percent}%
+\def\markdownRendererUnderscorePrototype{\textunderscore}%
+\def\markdownRendererCircumflexPrototype{\textcircumflex}%
+\def\markdownRendererBackslashPrototype{\textbackslash}%
+\def\markdownRendererTildePrototype{\textasciitilde}%
+\def\markdownRendererPipePrototype{\char`|}%
+\def\markdownRendererLinkPrototype#1#2#3#4{%
+ \useURL[#1][#3][][#4]#1\footnote[#1]{\ifx\empty#4\empty\else#4:
+ \fi\tt<\hyphenatedurl{#3}>}}%
+\usemodule[database]
+\defineseparatedlist
+ [MarkdownConTeXtCSV]
+ [separator={,},
+ before=\bTABLE,after=\eTABLE,
+ first=\bTR,last=\eTR,
+ left=\bTD,right=\eTD]
+\def\markdownConTeXtCSV{csv}
+\def\markdownRendererContentBlockPrototype#1#2#3#4{%
+ \def\markdownConTeXtCSV@arg{#1}%
+ \ifx\markdownConTeXtCSV@arg\markdownConTeXtCSV
+ \placetable[][tab:#1]{#4}{%
+ \processseparatedfile[MarkdownConTeXtCSV][#3]}%
+ \else
+ \markdownInput{#3}%
+ \fi}%
+\def\markdownRendererImagePrototype#1#2#3#4{%
+ \placefigure[][]{#4}{\externalfigure[#3]}}%
+\def\markdownRendererUlBeginPrototype{\startitemize}%
+\def\markdownRendererUlBeginTightPrototype{\startitemize[packed]}%
+\def\markdownRendererUlItemPrototype{\item}%
+\def\markdownRendererUlEndPrototype{\stopitemize}%
+\def\markdownRendererUlEndTightPrototype{\stopitemize}%
+\def\markdownRendererOlBeginPrototype{\startitemize[n]}%
+\def\markdownRendererOlBeginTightPrototype{\startitemize[packed,n]}%
+\def\markdownRendererOlItemPrototype{\item}%
+\def\markdownRendererOlItemWithNumberPrototype#1{\sym{#1.}}%
+\def\markdownRendererOlEndPrototype{\stopitemize}%
+\def\markdownRendererOlEndTightPrototype{\stopitemize}%
+\definedescription
+ [MarkdownConTeXtDlItemPrototype]
+ [location=hanging,
+ margin=standard,
+ headstyle=bold]%
+\definestartstop
+ [MarkdownConTeXtDlPrototype]
+ [before=\blank,
+ after=\blank]%
+\definestartstop
+ [MarkdownConTeXtDlTightPrototype]
+ [before=\blank\startpacked,
+ after=\stoppacked\blank]%
+\def\markdownRendererDlBeginPrototype{%
+ \startMarkdownConTeXtDlPrototype}%
+\def\markdownRendererDlBeginTightPrototype{%
+ \startMarkdownConTeXtDlTightPrototype}%
+\def\markdownRendererDlItemPrototype#1{%
+ \startMarkdownConTeXtDlItemPrototype{#1}}%
+\def\markdownRendererDlItemEndPrototype{%
+ \stopMarkdownConTeXtDlItemPrototype}%
+\def\markdownRendererDlEndPrototype{%
+ \stopMarkdownConTeXtDlPrototype}%
+\def\markdownRendererDlEndTightPrototype{%
+ \stopMarkdownConTeXtDlTightPrototype}%
+\def\markdownRendererEmphasisPrototype#1{{\em#1}}%
+\def\markdownRendererStrongEmphasisPrototype#1{{\bf#1}}%
+\def\markdownRendererBlockQuoteBeginPrototype{\startquotation}%
+\def\markdownRendererBlockQuoteEndPrototype{\stopquotation}%
+\def\markdownRendererLineBlockBeginPrototype{%
+ \begingroup
+ \def\markdownRendererHardLineBreak{
+ }%
+ \startlines
+}%
+\def\markdownRendererLineBlockEndPrototype{%
+ \stoplines
+ \endgroup
+}%
+\def\markdownRendererInputVerbatimPrototype#1{\typefile{#1}}%
+\ExplSyntaxOn
+\cs_gset:Npn
+ \markdownRendererInputFencedCodePrototype#1#2#3
+ {
+ \tl_if_empty:nTF
+ { #2 }
+ { \markdownRendererInputVerbatim{#1} }
+ {
+ \regex_extract_once:nnN
+ { \w* }
+ { #2 }
+ \l_tmpa_seq
+ \seq_pop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \typefile[\l_tmpa_tl][]{#1}
+ }
+ }
+\ExplSyntaxOff
+\def\markdownRendererHeadingOnePrototype#1{\chapter{#1}}%
+\def\markdownRendererHeadingTwoPrototype#1{\section{#1}}%
+\def\markdownRendererHeadingThreePrototype#1{\subsection{#1}}%
+\def\markdownRendererHeadingFourPrototype#1{\subsubsection{#1}}%
+\def\markdownRendererHeadingFivePrototype#1{\subsubsubsection{#1}}%
+\def\markdownRendererHeadingSixPrototype#1{\subsubsubsubsection{#1}}%
+\def\markdownRendererThematicBreakPrototype{%
+ \blackrule[height=1pt, width=\hsize]}%
+\def\markdownRendererNotePrototype#1{\footnote{#1}}%
+\def\markdownRendererTickedBoxPrototype{$\boxtimes$}
+\def\markdownRendererHalfTickedBoxPrototype{$\boxdot$}
+\def\markdownRendererUntickedBoxPrototype{$\square$}
+\def\markdownRendererStrikeThroughPrototype#1{\overstrikes{#1}}
+\def\markdownRendererSuperscriptPrototype#1{\high{#1}}
+\def\markdownRendererSubscriptPrototype#1{\low{#1}}
+\def\markdownRendererDisplayMathPrototype#1{\startformula#1\stopformula}%
+\newcount\markdownConTeXtRowCounter
+\newcount\markdownConTeXtRowTotal
+\newcount\markdownConTeXtColumnCounter
+\newcount\markdownConTeXtColumnTotal
+\newtoks\markdownConTeXtTable
+\newtoks\markdownConTeXtTableFloat
+\def\markdownRendererTablePrototype#1#2#3{%
+ \markdownConTeXtTable={}%
+ \ifx\empty#1\empty
+ \markdownConTeXtTableFloat={%
+ \the\markdownConTeXtTable}%
+ \else
+ \markdownConTeXtTableFloat={%
+ \placetable{#1}{\the\markdownConTeXtTable}}%
+ \fi
+ \begingroup
+ \setupTABLE[r][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off]
+ \setupTABLE[c][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off]
+ \setupTABLE[r][1][topframe=on, bottomframe=on]
+ \setupTABLE[r][#1][bottomframe=on]
+ \markdownConTeXtRowCounter=0%
+ \markdownConTeXtRowTotal=#2%
+ \markdownConTeXtColumnTotal=#3%
+ \markdownConTeXtRenderTableRow}
+\def\markdownConTeXtRenderTableRow#1{%
+ \markdownConTeXtColumnCounter=0%
+ \ifnum\markdownConTeXtRowCounter=0\relax
+ \markdownConTeXtReadAlignments#1%
+ \markdownConTeXtTable={\bTABLE}%
+ \else
+ \markdownConTeXtTable=\expandafter{%
+ \the\markdownConTeXtTable\bTR}%
+ \markdownConTeXtRenderTableCell#1%
+ \markdownConTeXtTable=\expandafter{%
+ \the\markdownConTeXtTable\eTR}%
+ \fi
+ \advance\markdownConTeXtRowCounter by 1\relax
+ \ifnum\markdownConTeXtRowCounter>\markdownConTeXtRowTotal\relax
+ \markdownConTeXtTable=\expandafter{%
+ \the\markdownConTeXtTable\eTABLE}%
+ \the\markdownConTeXtTableFloat
+ \endgroup
+ \expandafter\gobbleoneargument
+ \fi\markdownConTeXtRenderTableRow}
+\def\markdownConTeXtReadAlignments#1{%
+ \advance\markdownConTeXtColumnCounter by 1\relax
+ \if#1d%
+ \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=right]
+ \fi\if#1l%
+ \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=right]
+ \fi\if#1c%
+ \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=middle]
+ \fi\if#1r%
+ \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=left]
+ \fi
+ \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else
+ \expandafter\gobbleoneargument
+ \fi\markdownConTeXtReadAlignments}
+\def\markdownConTeXtRenderTableCell#1{%
+ \advance\markdownConTeXtColumnCounter by 1\relax
+ \markdownConTeXtTable=\expandafter{%
+ \the\markdownConTeXtTable\bTD#1\eTD}%
+ \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else
+ \expandafter\gobbleoneargument
+ \fi\markdownConTeXtRenderTableCell}
+\ExplSyntaxOn
+\cs_gset:Npn
+ \markdownRendererInputRawInlinePrototype#1#2
+ {
+ \str_case:nnF
+ { #2 }
+ {
+ { latex }
+ {
+ \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ { #1 }
+ { context }
+ }
+ }
+ {
+ \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ { #1 }
+ { #2 }
+ }
+ }
+\cs_gset:Npn
+ \markdownRendererInputRawBlockPrototype#1#2
+ {
+ \str_case:nnF
+ { #2 }
+ {
+ { context }
+ {
+ \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ { #1 }
+ { tex }
+ }
+ }
+ {
+ \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ { #1 }
+ { #2 }
+ }
+ }
+\cs_gset_eq:NN
+ \markdownRendererInputRawBlockPrototype
+ \markdownRendererInputRawInlinePrototype
+\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}`
+\ExplSyntaxOff
+\stopmodule
+\protect
+\endinput
+%%
+%% End of file `t-markdownthemewitiko_markdown_defaults.tex'.
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 8ad545ea609..3f692d579e8 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdown.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `tex')
%%
-%% Copyright (C) 2016-2023 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,7 +16,7 @@
%% http://www.latex-project.org/lppl.txt
%%
%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Novotný.
+%% The Current Maintainer of this work is Vít Starý Novotný.
%%
%% Send bug reports, requests for additions and questions
%% either to the GitHub issue tracker at
@@ -43,7 +43,7 @@
%% The names of the source files used are shown above.
%%
\ifx\ExplSyntaxOn\undefined
- \input expl3-generic\relax
+ \input expl3-generic
\fi
\ExplSyntaxOn
\seq_new:N \g__markdown_lua_options_seq
@@ -321,6 +321,14 @@
}
\seq_gput_right:Nn \g__markdown_cases_seq { __markdown_snake_case:N }
\__markdown_add_lua_option:nnn
+ { eagerCache }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
+ { singletonCache }
+ { boolean }
+ { true }
+\__markdown_add_lua_option:nnn
{ cacheDir }
{ path }
{ \markdownOptionOutputDir / _markdown_\jobname }
@@ -337,6 +345,10 @@
{ path }
{ \markdownOptionCacheDir / frozenCache.tex }
\__markdown_add_lua_option:nnn
+ { autoIdentifiers }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ blankBeforeBlockquote }
{ boolean }
{ false }
@@ -353,13 +365,17 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
+ { blankBeforeList }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ bracketedSpans }
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
{ breakableBlockquotes }
{ boolean }
- { false }
+ { true }
\__markdown_add_lua_option:nnn
{ citationNbsps }
{ boolean }
@@ -377,6 +393,10 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
+ { contentLevel }
+ { string }
+ { block }
+\__markdown_add_lua_option:nnn
{ debugExtensions }
{ boolean }
{ false }
@@ -385,10 +405,6 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
- { eagerCache }
- { boolean }
- { true }
-\__markdown_add_lua_option:nnn
{ expectJekyllData }
{ boolean }
{ false }
@@ -406,7 +422,7 @@
\__markdown_add_lua_option:nnn
{ fencedCode }
{ boolean }
- { false }
+ { true }
\__markdown_add_lua_option:nnn
{ fencedCodeAttributes }
{ boolean }
@@ -424,7 +440,7 @@
{ counter }
{ 0 }
\__markdown_add_lua_option:nnn
- { hardLineBreaks }
+ { gfmAutoIdentifiers }
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
@@ -438,7 +454,7 @@
\__markdown_add_lua_option:nnn
{ html }
{ boolean }
- { false }
+ { true }
\__markdown_add_lua_option:nnn
{ hybrid }
{ boolean }
@@ -448,10 +464,6 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
- { inlineFootnotes }
- { boolean }
- { false }
-\__markdown_add_lua_option:nnn
{ inlineNotes }
{ boolean }
{ false }
@@ -468,7 +480,7 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
- { footnotes }
+ { mark }
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
@@ -482,7 +494,7 @@
\__markdown_add_lua_option:nnn
{ preserveTabs }
{ boolean }
- { false }
+ { true }
\__markdown_add_lua_option:nnn
{ rawAttribute }
{ boolean }
@@ -524,6 +536,10 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
+ { tableAttributes }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ tableCaptions }
{ boolean }
{ false }
@@ -556,17 +572,27 @@
{ boolean }
{ true }
\ExplSyntaxOff
-\def\markdownLastModified{2023-04-27}%
-\def\markdownVersion{2.23.0-0-g0b22f91}%
+\def\markdownLastModified{2024-02-16}%
+\def\markdownVersion{3.4.1-0-g457226ae}%
\let\markdownBegin\relax
\let\markdownEnd\relax
\let\markdownInput\relax
\let\markdownEscape\relax
\ExplSyntaxOn
+\tl_const:Nn \c__markdown_option_layer_plain_tex_tl { plain_tex }
+\cs_generate_variant:Nn
+ \tl_const:Nn
+ { NV }
+\tl_if_exist:NF
+ \c__markdown_top_layer_tl
+ {
+ \tl_const:NV
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_plain_tex_tl
+ }
\seq_new:N \g__markdown_plain_tex_options_seq
\prop_new:N \g__markdown_plain_tex_option_types_prop
\prop_new:N \g__markdown_default_plain_tex_options_prop
-\tl_const:Nn \c__markdown_option_layer_plain_tex_tl { plain_tex }
\seq_gput_right:NV \g__markdown_option_layers_seq \c__markdown_option_layer_plain_tex_tl
\cs_new:Nn
\__markdown_add_plain_tex_option:nnn
@@ -577,46 +603,111 @@
{ #2 }
{ #3 }
}
+\cs_new:Nn
+ \__markdown_setup:n
+ {
+ \keys_set:nn
+ { markdown/options }
+ { #1 }
+ }
+\cs_gset_eq:NN
+ \markdownSetup
+ \__markdown_setup:n
+\prg_new_conditional:Nnn
+ \__markdown_if_option:n
+ { TF, T, F }
+ {
+ \__markdown_get_option_type:nN
+ { #1 }
+ \l_tmpa_tl
+ \str_if_eq:NNF
+ \l_tmpa_tl
+ \c__markdown_option_type_boolean_tl
+ {
+ \msg_error:nnxx
+ { markdown }
+ { expected-boolean-option }
+ { #1 }
+ { \l_tmpa_tl }
+ }
+ \__markdown_get_option_value:nN
+ { #1 }
+ \l_tmpa_tl
+ \str_if_eq:NNTF
+ \l_tmpa_tl
+ \c__markdown_option_value_true_tl
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\msg_new:nnn
+ { markdown }
+ { expected-boolean-option }
+ {
+ Option~#1~has~type~#2,~
+ but~a~boolean~was~expected.
+ }
+\let\markdownIfOption=\__markdown_if_option:nTF
\__markdown_add_plain_tex_option:nnn
{ frozenCache }
{ boolean }
{ false }
\__markdown_add_plain_tex_option:nnn
- { helperScriptFileName }
- { path }
- { \jobname.markdown.lua }
-\str_new:N
- \g_luabridge_helper_script_filename_str
-\tl_gset:Nn
- \g_luabridge_helper_script_filename_str
- { \markdownOptionHelperScriptFileName }
-\__markdown_add_plain_tex_option:nnn
{ inputTempFileName }
{ path }
{ \jobname.markdown.in }
-\__markdown_add_plain_tex_option:nnn
- { outputTempFileName }
+\cs_generate_variant:Nn
+ \__markdown_add_plain_tex_option:nnn
+ { nnV }
+\ExplSyntaxOff
+\input lt3luabridge.tex
+\ExplSyntaxOn
+\bool_if:nTF
+ {
+ \cs_if_exist_p:N
+ \luabridge_tl_set:Nn &&
+ (
+ \int_compare_p:nNn
+ { \g_luabridge_method_int }
+ =
+ { \c_luabridge_method_directlua_int } ||
+ \sys_if_shell_unrestricted_p:
+ )
+ }
+ {
+ \luabridge_tl_set:Nn
+ \l_tmpa_tl
+ { print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { . }
+ }
+\__markdown_add_plain_tex_option:nnV
+ { outputDir }
{ path }
- { \jobname.markdown.out }
-\str_new:N
- \g_luabridge_standard_output_filename_str
-\tl_gset:Nn
- \g_luabridge_standard_output_filename_str
- { \markdownOptionOutputTempFileName }
+ \l_tmpa_tl
\__markdown_add_plain_tex_option:nnn
- { errorTempFileName }
- { path }
- { \jobname.markdown.err }
-\str_new:N
- \g_luabridge_error_output_filename_str
-\tl_gset:Nn
- \g_luabridge_error_output_filename_str
- { \markdownOptionErrorTempFileName }
+ { plain }
+ { boolean }
+ { false }
\__markdown_add_plain_tex_option:nnn
- { outputDir }
- { path }
- { . }
-\cs_new:Nn \__markdown_plain_tex_define_option_commands:
+ { noDefaults }
+ { boolean }
+ { false }
+\seq_gput_right:Nn
+ \g__markdown_plain_tex_options_seq
+ { stripPercentSigns }
+\prop_gput:Nnn
+ \g__markdown_plain_tex_option_types_prop
+ { stripPercentSigns }
+ { boolean }
+\prop_gput:Nnx
+ \g__markdown_default_plain_tex_options_prop
+ { stripPercentSigns }
+ { false }
+\cs_new:Nn
+ \__markdown_define_option_commands_and_keyvals:
{
\seq_map_inline:Nn
\g__markdown_option_layers_seq
@@ -624,19 +715,35 @@
\seq_map_inline:cn
{ g__markdown_ ##1 _options_seq }
{
- \__markdown_plain_tex_define_option_command:n
+ \__markdown_define_option_command:n
+ { ####1 }
+ \__markdown_with_various_cases:nn
{ ####1 }
+ {
+ \__markdown_define_option_keyval:nnn
+ { ##1 }
+ { ####1 }
+ { ########1 }
+ }
}
}
}
-\cs_new:Nn \__markdown_plain_tex_define_option_command:n
+\cs_new:Nn
+ \__markdown_define_option_command:n
{
- \__markdown_get_default_option_value:nN
- { #1 }
- \l_tmpa_tl
- \__markdown_set_option_value:nV
+ \__markdown_option_tl_to_csname:nN
{ #1 }
\l_tmpa_tl
+ \cs_if_exist:cF
+ { \l_tmpa_tl }
+ {
+ \__markdown_get_default_option_value:nN
+ { #1 }
+ \l_tmpa_tl
+ \__markdown_set_option_value:nV
+ { #1 }
+ \l_tmpa_tl
+ }
}
\cs_new:Nn
\__markdown_set_option_value:nn
@@ -693,19 +800,376 @@
}
}
}
-\__markdown_plain_tex_define_option_commands:
-\seq_gput_right:Nn
- \g__markdown_plain_tex_options_seq
- { stripPercentSigns }
-\prop_gput:Nnn
- \g__markdown_plain_tex_option_types_prop
- { stripPercentSigns }
- { boolean }
-\prop_gput:Nnx
- \g__markdown_default_plain_tex_options_prop
- { stripPercentSigns }
- { false }
-\ExplSyntaxOff
+\cs_new:Nn
+ \__markdown_define_option_keyval:nnn
+ {
+ \prop_get:cnN
+ { g__markdown_ #1 _option_types_prop }
+ { #2 }
+ \l_tmpa_tl
+ \str_if_eq:VVTF
+ \l_tmpa_tl
+ \c__markdown_option_type_boolean_tl
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #3 .code:n = {
+ \tl_set:Nx
+ \l_tmpa_tl
+ {
+ \str_case:nnF
+ { ##1 }
+ {
+ { yes } { true }
+ { no } { false }
+ }
+ { ##1 }
+ }
+ \__markdown_set_option_value:nV
+ { #2 }
+ \l_tmpa_tl
+ },
+ #3 .default:n = { true },
+ }
+ }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #3 .code:n = {
+ \__markdown_set_option_value:nn
+ { #2 }
+ { ##1 }
+ },
+ }
+ }
+ \str_if_eq:VVT
+ \l_tmpa_tl
+ \c__markdown_option_type_clist_tl
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #3 }
+ \tl_reverse:N
+ \l_tmpa_tl
+ \str_if_eq:enF
+ {
+ \tl_head:V
+ \l_tmpa_tl
+ }
+ { s }
+ {
+ \msg_error:nnn
+ { markdown }
+ { malformed-name-for-clist-option }
+ { #3 }
+ }
+ \tl_set:Nx
+ \l_tmpa_tl
+ {
+ \tl_tail:V
+ \l_tmpa_tl
+ }
+ \tl_reverse:N
+ \l_tmpa_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ {
+ .code:n = {
+ \__markdown_get_option_value:nN
+ { #2 }
+ \l_tmpa_tl
+ \clist_set:NV
+ \l_tmpa_clist
+ { \l_tmpa_tl, { ##1 } }
+ \__markdown_set_option_value:nV
+ { #2 }
+ \l_tmpa_clist
+ }
+ }
+ \keys_define:nV
+ { markdown/options }
+ \l_tmpa_tl
+ }
+ }
+\cs_generate_variant:Nn
+ \clist_set:Nn
+ { NV }
+\cs_generate_variant:Nn
+ \keys_define:nn
+ { nV }
+\cs_generate_variant:Nn
+ \__markdown_set_option_value:nn
+ { nV }
+\prg_generate_conditional_variant:Nnn
+ \str_if_eq:nn
+ { en }
+ { F }
+\msg_new:nnn
+ { markdown }
+ { malformed-name-for-clist-option }
+ {
+ Clist~option~name~#1~does~not~end~with~-s.
+ }
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_plain_tex_tl
+ {
+ \__markdown_define_option_commands_and_keyvals:
+ }
+\keys_define:nn
+ { markdown/options }
+ {
+ theme .code:n = {
+ \__markdown_set_theme:n
+ { #1 }
+ },
+ import .code:n = {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #1 }
+ \tl_replace_all:NnV
+ \l_tmpa_tl
+ { / }
+ \c_backslash_str
+ \keys_set:nV
+ { markdown/options/import }
+ \l_tmpa_tl
+ },
+ }
+\seq_new:N
+ \g__markdown_themes_seq
+\tl_new:N
+ \g__markdown_current_theme_tl
+\tl_gset:Nn
+ \g__markdown_current_theme_tl
+ { }
+\seq_gput_right:NV
+ \g__markdown_themes_seq
+ \g__markdown_current_theme_tl
+\cs_new:Nn
+ \__markdown_set_theme:n
+ {
+ \str_if_in:nnF
+ { #1 }
+ { / }
+ {
+ \msg_error:nnn
+ { markdown }
+ { unqualified-theme-name }
+ { #1 }
+ }
+ \str_if_in:nnT
+ { #1 }
+ { _ }
+ {
+ \msg_error:nnn
+ { markdown }
+ { underscores-in-theme-name }
+ { #1 }
+ }
+ \str_set:Nn
+ \l_tmpa_str
+ { #1 }
+ \str_replace_all:Nnn
+ \l_tmpa_str
+ { / }
+ { _ }
+ \tl_gset:Nn
+ \g__markdown_current_theme_tl
+ { #1 / }
+ \seq_gput_right:NV
+ \g__markdown_themes_seq
+ \g__markdown_current_theme_tl
+ \__markdown_load_theme:nV
+ { #1 }
+ \l_tmpa_str
+ \seq_gpop_right:NN
+ \g__markdown_themes_seq
+ \l_tmpa_tl
+ \seq_get_right:NN
+ \g__markdown_themes_seq
+ \l_tmpa_tl
+ \tl_gset:NV
+ \g__markdown_current_theme_tl
+ \l_tmpa_tl
+ }
+\msg_new:nnnn
+ { markdown }
+ { unqualified-theme-name }
+ { Won't~load~theme~with~unqualified~name~#1 }
+ { Theme~names~must~contain~at~least~one~forward~slash }
+\msg_new:nnnn
+ { markdown }
+ { underscores-in-theme-name }
+ { Won't~load~theme~with~an~underscore~in~its~name~#1 }
+ { Theme~names~must~not~contain~underscores~in~their~names }
+\cs_generate_variant:Nn
+ \tl_replace_all:Nnn
+ { NnV }
+\prop_new:N
+ \g__markdown_snippets_prop
+\cs_new:Nn
+ \__markdown_setup_snippet:nn
+ {
+ \tl_if_empty:nT
+ { #1 }
+ {
+ \msg_error:nnn
+ { markdown }
+ { empty-snippet-name }
+ { #1 }
+ }
+ \tl_set:NV
+ \l_tmpa_tl
+ \g__markdown_current_theme_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { #1 }
+ \__markdown_if_snippet_exists:nT
+ { #1 }
+ {
+ \msg_warning:nnV
+ { markdown }
+ { redefined-snippet }
+ \l_tmpa_tl
+ }
+ \prop_gput:NVn
+ \g__markdown_snippets_prop
+ \l_tmpa_tl
+ { #2 }
+ }
+\cs_gset_eq:NN
+ \markdownSetupSnippet
+ \__markdown_setup_snippet:nn
+\msg_new:nnnn
+ { markdown }
+ { empty-snippet-name }
+ { Empty~snippet~name~#1 }
+ { Pick~a~non-empty~name~for~your~snippet }
+\msg_new:nnn
+ { markdown }
+ { redefined-snippet }
+ { Redefined~snippet~#1 }
+\prg_new_conditional:Nnn
+ \__markdown_if_snippet_exists:n
+ { TF, T, F }
+ {
+ \tl_set:NV
+ \l_tmpa_tl
+ \g__markdown_current_theme_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { #1 }
+ \prop_get:NVNTF
+ \g__markdown_snippets_prop
+ \l_tmpa_tl
+ \l_tmpb_tl
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\cs_gset_eq:NN
+ \markdownIfSnippetExists
+ \__markdown_if_snippet_exists:nTF
+\keys_define:nn
+ { markdown/options }
+ {
+ snippet .code:n = {
+ \tl_set:NV
+ \l_tmpa_tl
+ \g__markdown_current_theme_tl
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { #1 }
+ \__markdown_if_snippet_exists:nTF
+ { #1 }
+ {
+ \prop_get:NVN
+ \g__markdown_snippets_prop
+ \l_tmpa_tl
+ \l_tmpb_tl
+ \__markdown_setup:V
+ \l_tmpb_tl
+ }
+ {
+ \msg_error:nnV
+ { markdown }
+ { undefined-snippet }
+ \l_tmpa_tl
+ }
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { undefined-snippet }
+ { Can't~invoke~undefined~snippet~#1 }
+\cs_generate_variant:Nn
+ \__markdown_setup:n
+ { V }
+\tl_new:N
+ \l__markdown_import_current_theme_tl
+\keys_define:nn
+ { markdown/options/import }
+ {
+ unknown .default:n = {},
+ unknown .code:n = {
+ \tl_set_eq:NN
+ \l__markdown_import_current_theme_tl
+ \l_keys_key_str
+ \tl_replace_all:NVn
+ \l__markdown_import_current_theme_tl
+ \c_backslash_str
+ { / }
+ \clist_map_inline:nn
+ { #1 }
+ {
+ \regex_extract_once:nnNTF
+ { ^(.*?)\s+as\s+(.*?)$ }
+ { ##1 }
+ \l_tmpa_seq
+ {
+ \seq_pop:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \seq_pop:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \seq_pop:NN
+ \l_tmpa_seq
+ \l_tmpb_tl
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { ##1 }
+ \tl_set:Nn
+ \l_tmpb_tl
+ { ##1 }
+ }
+ \tl_put_left:Nn
+ \l_tmpa_tl
+ { / }
+ \tl_put_left:NV
+ \l_tmpa_tl
+ \l__markdown_import_current_theme_tl
+ \__markdown_setup_snippet:Vx
+ \l_tmpb_tl
+ { snippet = { \l_tmpa_tl } }
+ }
+ \__markdown_set_theme:V
+ \l__markdown_import_current_theme_tl
+ },
+ }
+\cs_generate_variant:Nn
+ \tl_replace_all:Nnn
+ { NVn }
+\cs_generate_variant:Nn
+ \__markdown_set_theme:n
+ { V }
+\cs_generate_variant:Nn
+ \__markdown_setup_snippet:nn
+ { Vx }
\ExplSyntaxOn
\seq_new:N \g__markdown_renderers_seq
\prop_new:N \g__markdown_renderer_arities_prop
@@ -853,6 +1317,28 @@
{ ulEndTight }
{ 0 }
\ExplSyntaxOff
+\def\markdownRendererCite{%
+ \markdownRendererCitePrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { cite }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { cite }
+ { 1 }
+\ExplSyntaxOff
+\def\markdownRendererTextCite{%
+ \markdownRendererTextCitePrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { textCite }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { textCite }
+ { 1 }
+\ExplSyntaxOff
\def\markdownRendererInputVerbatim{%
\markdownRendererInputVerbatimPrototype}%
\ExplSyntaxOn
@@ -873,7 +1359,7 @@
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
{ inputFencedCode }
- { 2 }
+ { 3 }
\ExplSyntaxOff
\def\markdownRendererCodeSpan{%
\markdownRendererCodeSpanPrototype}%
@@ -1205,28 +1691,6 @@
{ inlineHtmlComment }
{ 1 }
\ExplSyntaxOff
-\def\markdownRendererBlockHtmlCommentBegin{%
- \markdownRendererBlockHtmlCommentBeginPrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g__markdown_renderers_seq
- { blockHtmlCommentBegin }
-\prop_gput:Nnn
- \g__markdown_renderer_arities_prop
- { blockHtmlCommentBegin }
- { 0 }
-\ExplSyntaxOff
-\def\markdownRendererBlockHtmlCommentEnd{%
- \markdownRendererBlockHtmlCommentEndPrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g__markdown_renderers_seq
- { blockHtmlCommentEnd }
-\prop_gput:Nnn
- \g__markdown_renderer_arities_prop
- { blockHtmlCommentEnd }
- { 0 }
-\ExplSyntaxOff
\def\markdownRendererInlineHtmlTag{%
\markdownRendererInlineHtmlTagPrototype}%
\ExplSyntaxOn
@@ -1293,6 +1757,17 @@
{ interblockSeparator }
{ 0 }
\ExplSyntaxOff
+\def\markdownRendererParagraphSeparator{%
+ \markdownRendererParagraphSeparatorPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { paragraphSeparator }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { paragraphSeparator }
+ { 0 }
+\ExplSyntaxOff
\def\markdownRendererLineBlockBegin{%
\markdownRendererLineBlockBeginPrototype}%
\ExplSyntaxOn
@@ -1315,43 +1790,20 @@
{ lineBlockEnd }
{ 0 }
\ExplSyntaxOff
+\def\markdownRendererSoftLineBreak{%
+ \markdownRendererSoftLineBreakPrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererHardLineBreak
- {
- \cs_if_exist:NTF
- \markdownRendererLineBreak
- {
- \markdownWarning
- {
- Line~break~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererLineBreak
- }
- {
- \cs_if_exist:NTF
- \markdownRendererLineBreakPrototype
- {
- \markdownWarning
- {
- Line~break~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererLineBreakPrototype
- }
- {
- \markdownRendererHardLineBreakPrototype
- }
- }
- }
\seq_gput_right:Nn
\g__markdown_renderers_seq
- { lineBreak }
+ { softLineBreak }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
- { lineBreak }
+ { softLineBreak }
{ 0 }
+\ExplSyntaxOff
+\def\markdownRendererHardLineBreak{%
+ \markdownRendererHardLineBreakPrototype}%
+\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ hardLineBreak }
@@ -1393,6 +1845,17 @@
{ linkAttributeContextEnd }
{ 0 }
\ExplSyntaxOff
+\def\markdownRendererMark{%
+ \markdownRendererMarkPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { mark }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { mark }
+ { 1 }
+\ExplSyntaxOff
\def\markdownRendererDocumentBegin{%
\markdownRendererDocumentBeginPrototype}%
\ExplSyntaxOn
@@ -1426,43 +1889,9 @@
{ nbsp }
{ 0 }
\ExplSyntaxOff
+\def\markdownRendererNote{%
+ \markdownRendererNotePrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererNote
- {
- \cs_if_exist:NTF
- \markdownRendererFootnote
- {
- \markdownWarning
- {
- Footnote~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererFootnote
- }
- {
- \cs_if_exist:NTF
- \markdownRendererFootnotePrototype
- {
- \markdownWarning
- {
- Footnote~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererFootnotePrototype
- }
- {
- \markdownRendererNotePrototype
- }
- }
- }
-\seq_gput_right:Nn
- \g__markdown_renderers_seq
- { footnote }
-\prop_gput:Nnn
- \g__markdown_renderer_arities_prop
- { footnote }
- { 1 }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ note }
@@ -1625,17 +2054,6 @@
{ fancyOlEndTight }
{ 0 }
\ExplSyntaxOff
-\def\markdownRendererCite{%
- \markdownRendererCitePrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g__markdown_renderers_seq
- { cite }
-\prop_gput:Nnn
- \g__markdown_renderer_arities_prop
- { cite }
- { 1 }
-\ExplSyntaxOff
\def\markdownRendererInputRawInline{%
\markdownRendererInputRawInlinePrototype}%
\ExplSyntaxOn
@@ -1844,6 +2262,28 @@
{ superscript }
{ 1 }
\ExplSyntaxOff
+\def\markdownRendererTableAttributeContextBegin{%
+ \markdownRendererTableAttributeContextBeginPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { tableAttributeContextBegin }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { tableAttributeContextBegin }
+ { 0 }
+\ExplSyntaxOff
+\def\markdownRendererTableAttributeContextEnd{%
+ \markdownRendererTableAttributeContextEndPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { tableAttributeContextEnd }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { tableAttributeContextEnd }
+ { 0 }
+\ExplSyntaxOff
\def\markdownRendererTable{%
\markdownRendererTablePrototype}%
\ExplSyntaxOn
@@ -1877,54 +2317,9 @@
{ displayMath }
{ 1 }
\ExplSyntaxOff
-\def\markdownRendererTextCite{%
- \markdownRendererTextCitePrototype}%
-\ExplSyntaxOn
-\seq_gput_right:Nn
- \g__markdown_renderers_seq
- { textCite }
-\prop_gput:Nnn
- \g__markdown_renderer_arities_prop
- { textCite }
- { 1 }
-\ExplSyntaxOff
+\def\markdownRendererThematicBreak{%
+ \markdownRendererThematicBreakPrototype}%
\ExplSyntaxOn
-\cs_new:Npn
- \markdownRendererThematicBreak
- {
- \cs_if_exist:NTF
- \markdownRendererHorizontalRule
- {
- \markdownWarning
- {
- Horizontal~rule~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererHorizontalRule
- }
- {
- \cs_if_exist:NTF
- \markdownRendererHorizontalRulePrototype
- {
- \markdownWarning
- {
- Horizontal~rule~renderer~prototype~has~been~deprecated,~
- to~be~removed~in~Markdown~3.0.0
- }
- \markdownRendererHorizontalRulePrototype
- }
- {
- \markdownRendererThematicBreakPrototype
- }
- }
- }
-\seq_gput_right:Nn
- \g__markdown_renderers_seq
- { horizontalRule }
-\prop_gput:Nnn
- \g__markdown_renderer_arities_prop
- { horizontalRule }
- { 0 }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ thematicBreak }
@@ -2075,41 +2470,27 @@
\g__markdown_renderer_arities_prop
{ jekyllDataEmpty }
{ 1 }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\keys_define:nn
- { markdown/jekyllData }
- { }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn \__markdown_plaintex_define_renderer_prototypes:
+\cs_new:Nn \__markdown_define_renderers:
{
\seq_map_function:NN
\g__markdown_renderers_seq
- \__markdown_plaintex_define_renderer_prototype:n
- \let\markdownRendererBlockHtmlCommentBeginPrototype=\iffalse
- \let\markdownRendererBlockHtmlCommentBegin=\iffalse
- \let\markdownRendererBlockHtmlCommentEndPrototype=\fi
- \let\markdownRendererBlockHtmlCommentEnd=\fi
- \cs_undefine:N \markdownRendererFootnote
- \cs_undefine:N \markdownRendererFootnotePrototype
- \cs_undefine:N \markdownRendererHorizontalRule
- \cs_undefine:N \markdownRendererHorizontalRulePrototype
- }
-\cs_new:Nn \__markdown_plaintex_define_renderer_prototype:n
+ \__markdown_define_renderer:n
+ }
+\cs_new:Nn \__markdown_define_renderer:n
{
- \__markdown_renderer_prototype_tl_to_csname:nN
+ \__markdown_renderer_tl_to_csname:nN
{ #1 }
\l_tmpa_tl
\prop_get:NnN
\g__markdown_renderer_arities_prop
{ #1 }
\l_tmpb_tl
- \__markdown_plaintex_define_renderer_prototype:cV
+ \__markdown_define_renderer:ncV
+ { #1 }
{ \l_tmpa_tl }
\l_tmpb_tl
}
-\cs_new:Nn \__markdown_renderer_prototype_tl_to_csname:nN
+\cs_new:Nn \__markdown_renderer_tl_to_csname:nN
{
\tl_set:Nn
\l_tmpa_tl
@@ -2120,351 +2501,534 @@
markdownRenderer
\tl_head:f { \l_tmpa_tl }
\tl_tail:n { #1 }
- Prototype
}
}
-\cs_new:Nn \__markdown_plaintex_define_renderer_prototype:Nn
+\tl_new:N
+ \l__markdown_renderer_definition_tl
+\cs_new:Nn \__markdown_define_renderer:nNn
{
- \cs_generate_from_arg_count:NNnn
- #1
- \cs_set:Npn
- { #2 }
- { }
+ \keys_define:nn
+ { markdown/options/renderers }
+ {
+ #1 .code:n = {
+ \tl_set:Nn
+ \l__markdown_renderer_definition_tl
+ { ##1 }
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { #1 }
+ \l__markdown_renderer_definition_tl
+ \cs_generate_from_arg_count:NNnV
+ #2
+ \cs_set:Npn
+ { #3 }
+ \l__markdown_renderer_definition_tl
+ },
+ }
}
\cs_generate_variant:Nn
- \__markdown_plaintex_define_renderer_prototype:Nn
- { cV }
-\__markdown_plaintex_define_renderer_prototypes:
-\ExplSyntaxOff
-\let\markdownMakeOther\relax
-\let\markdownReadAndConvert\relax
-\begingroup
- \catcode`\|=0\catcode`\\=12%
- |gdef|markdownBegin{%
- |markdownReadAndConvert{\markdownEnd}%
- {|markdownEnd}}%
-|endgroup
-\ExplSyntaxOn
-\cs_if_exist:NF
- \markdownMode
+ \__markdown_define_renderer:nNn
+ { ncV }
+\cs_generate_variant:Nn
+ \cs_generate_from_arg_count:NNnn
+ { NNnV }
+\keys_define:nn
+ { markdown/options }
+ {
+ renderers .code:n = {
+ \keys_set:nn
+ { markdown/options/renderers }
+ { #1 }
+ },
+ }
+\prop_new:N
+ \g__markdown_glob_cache_prop
+\tl_new:N
+ \l__markdown_current_glob_tl
+\cs_new:Nn
+ \__markdown_glob_seq:nnN
{
- \file_if_exist:nTF
- { lt3luabridge.tex }
+ \tl_set:Nn
+ \l__markdown_current_glob_tl
+ { ^ #1 $ }
+ \prop_get:NeNTF
+ \g__markdown_glob_cache_prop
+ { #2 / \l__markdown_current_glob_tl }
+ \l_tmpa_clist
{
- \cs_new:Npn
- \markdownMode
- { 3 }
+ \seq_set_from_clist:NN
+ #3
+ \l_tmpa_clist
}
{
- \cs_if_exist:NTF
- \directlua
- {
- \cs_new:Npn
- \markdownMode
- { 2 }
- }
+ \seq_clear:N
+ #3
+ \regex_replace_all:nnN
+ { \* }
+ { .* }
+ \l__markdown_current_glob_tl
+ \regex_set:NV
+ \l_tmpa_regex
+ \l__markdown_current_glob_tl
+ \seq_map_inline:cn
+ { #2 }
{
- \cs_new:Npn
- \markdownMode
- { 0 }
+ \regex_match:NnT
+ \l_tmpa_regex
+ { ##1 }
+ {
+ \seq_put_right:Nn
+ #3
+ { ##1 }
+ }
}
+ \clist_set_from_seq:NN
+ \l_tmpa_clist
+ #3
+ \prop_gput:NeV
+ \g__markdown_glob_cache_prop
+ { #2 / \l__markdown_current_glob_tl }
+ \l_tmpa_clist
}
}
-\ExplSyntaxOff
-\def\markdownLuaRegisterIBCallback#1{\relax}%
-\def\markdownLuaUnregisterIBCallback#1{\relax}%
-\ifx\markdownInfo\undefined
- \def\markdownInfo#1{%
- \immediate\write-1{(l.\the\inputlineno) markdown.tex info: #1.}}%
-\fi
-\ifx\markdownWarning\undefined
- \def\markdownWarning#1{%
- \immediate\write16{(l.\the\inputlineno) markdown.tex warning: #1}}%
-\fi
-\ifx\markdownError\undefined
- \def\markdownError#1#2{%
- \errhelp{#2.}%
- \errmessage{(l.\the\inputlineno) markdown.tex error: #1}}%
-\fi
-\def\markdownRendererInterblockSeparatorPrototype{\par}%
-\def\markdownRendererHardLineBreakPrototype{\hfil\break}%
-\let\markdownRendererEllipsisPrototype\dots
-\def\markdownRendererNbspPrototype{~}%
-\def\markdownRendererLeftBracePrototype{\char`\{}%
-\def\markdownRendererRightBracePrototype{\char`\}}%
-\def\markdownRendererDollarSignPrototype{\char`$}%
-\def\markdownRendererPercentSignPrototype{\char`\%}%
-\def\markdownRendererAmpersandPrototype{\&}%
-\def\markdownRendererUnderscorePrototype{\char`_}%
-\def\markdownRendererHashPrototype{\char`\#}%
-\def\markdownRendererCircumflexPrototype{\char`^}%
-\def\markdownRendererBackslashPrototype{\char`\\}%
-\def\markdownRendererTildePrototype{\char`~}%
-\def\markdownRendererPipePrototype{|}%
-\def\markdownRendererCodeSpanPrototype#1{{\tt#1}}%
-\def\markdownRendererLinkPrototype#1#2#3#4{#2}%
-\def\markdownRendererContentBlockPrototype#1#2#3#4{%
- \markdownInput{#3}}%
-\def\markdownRendererContentBlockOnlineImagePrototype{%
- \markdownRendererImage}%
-\def\markdownRendererContentBlockCodePrototype#1#2#3#4#5{%
- \markdownRendererInputFencedCode{#3}{#2}}%
-\def\markdownRendererImagePrototype#1#2#3#4{#2}%
-\def\markdownRendererUlBeginPrototype{}%
-\def\markdownRendererUlBeginTightPrototype{}%
-\def\markdownRendererUlItemPrototype{}%
-\def\markdownRendererUlItemEndPrototype{}%
-\def\markdownRendererUlEndPrototype{}%
-\def\markdownRendererUlEndTightPrototype{}%
-\def\markdownRendererOlBeginPrototype{}%
-\def\markdownRendererOlBeginTightPrototype{}%
-\def\markdownRendererFancyOlBeginPrototype#1#2{\markdownRendererOlBegin}%
-\def\markdownRendererFancyOlBeginTightPrototype#1#2{\markdownRendererOlBeginTight}%
-\def\markdownRendererOlItemPrototype{}%
-\def\markdownRendererOlItemWithNumberPrototype#1{}%
-\def\markdownRendererOlItemEndPrototype{}%
-\def\markdownRendererFancyOlItemPrototype{\markdownRendererOlItem}%
-\def\markdownRendererFancyOlItemWithNumberPrototype{\markdownRendererOlItemWithNumber}%
-\def\markdownRendererFancyOlItemEndPrototype{}%
-\def\markdownRendererOlEndPrototype{}%
-\def\markdownRendererOlEndTightPrototype{}%
-\def\markdownRendererFancyOlEndPrototype{\markdownRendererOlEnd}%
-\def\markdownRendererFancyOlEndTightPrototype{\markdownRendererOlEndTight}%
-\def\markdownRendererDlBeginPrototype{}%
-\def\markdownRendererDlBeginTightPrototype{}%
-\def\markdownRendererDlItemPrototype#1{#1}%
-\def\markdownRendererDlItemEndPrototype{}%
-\def\markdownRendererDlDefinitionBeginPrototype{}%
-\def\markdownRendererDlDefinitionEndPrototype{\par}%
-\def\markdownRendererDlEndPrototype{}%
-\def\markdownRendererDlEndTightPrototype{}%
-\def\markdownRendererEmphasisPrototype#1{{\it#1}}%
-\def\markdownRendererStrongEmphasisPrototype#1{{\bf#1}}%
-\def\markdownRendererBlockQuoteBeginPrototype{\begingroup\it}%
-\def\markdownRendererBlockQuoteEndPrototype{\endgroup\par}%
-\def\markdownRendererLineBlockBeginPrototype{\begingroup\parindent=0pt}%
-\def\markdownRendererLineBlockEndPrototype{\endgroup}%
-\def\markdownRendererInputVerbatimPrototype#1{%
- \par{\tt\input#1\relax{}}\par}%
-\def\markdownRendererInputFencedCodePrototype#1#2{%
- \markdownRendererInputVerbatim{#1}}%
-\def\markdownRendererHeadingOnePrototype#1{#1}%
-\def\markdownRendererHeadingTwoPrototype#1{#1}%
-\def\markdownRendererHeadingThreePrototype#1{#1}%
-\def\markdownRendererHeadingFourPrototype#1{#1}%
-\def\markdownRendererHeadingFivePrototype#1{#1}%
-\def\markdownRendererHeadingSixPrototype#1{#1}%
-\def\markdownRendererThematicBreakPrototype{}%
-\def\markdownRendererNotePrototype#1{#1}%
-\def\markdownRendererCitePrototype#1{}%
-\def\markdownRendererTextCitePrototype#1{}%
-\def\markdownRendererTickedBoxPrototype{[X]}%
-\def\markdownRendererHalfTickedBoxPrototype{[/]}%
-\def\markdownRendererUntickedBoxPrototype{[ ]}%
-\def\markdownRendererStrikeThroughPrototype#1{#1}%
-\def\markdownRendererSuperscriptPrototype#1{#1}%
-\def\markdownRendererSubscriptPrototype#1{#1}%
-\def\markdownRendererDisplayMathPrototype#1{$$#1$$}%
-\def\markdownRendererInlineMathPrototype#1{$#1$}%
-\ExplSyntaxOn
-\cs_gset:Npn
- \markdownRendererHeaderAttributeContextBeginPrototype
- {
- \group_begin:
- \color_group_begin:
- }
-\cs_gset:Npn
- \markdownRendererHeaderAttributeContextEndPrototype
- {
- \color_group_end:
- \group_end:
+\prg_generate_conditional_variant:Nnn
+ \prop_get:NnN
+ { NeN }
+ { TF }
+\cs_generate_variant:Nn
+ \regex_set:Nn
+ { NV }
+\cs_generate_variant:Nn
+ \prop_gput:Nnn
+ { NeV }
+\seq_new:N
+ \l__markdown_renderer_glob_results_seq
+\keys_define:nn
+ { markdown/options/renderers }
+ {
+ unknown .code:n = {
+ \__markdown_glob_seq:VnN
+ \l_keys_key_str
+ { g__markdown_renderers_seq }
+ \l__markdown_renderer_glob_results_seq
+ \seq_if_empty:NTF
+ \l__markdown_renderer_glob_results_seq
+ {
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer }
+ \l_keys_key_str
+ }
+ {
+ \tl_set:Nn
+ \l__markdown_renderer_definition_tl
+ { #1 }
+ \seq_map_inline:Nn
+ \l__markdown_renderer_glob_results_seq
+ {
+ \__markdown_renderer_tl_to_csname:nN
+ { ##1 }
+ \l_tmpa_tl
+ \prop_get:NnN
+ \g__markdown_renderer_arities_prop
+ { ##1 }
+ \l_tmpb_tl
+ \int_set:Nn
+ \l_tmpa_int
+ \l_tmpb_tl
+ \tl_set:NV
+ \l_tmpb_tl
+ \l__markdown_renderer_definition_tl
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { ##1 }
+ \l_tmpb_tl
+ \cs_generate_from_arg_count:cNVV
+ { \l_tmpa_tl }
+ \cs_set:Npn
+ \l_tmpa_int
+ \l_tmpb_tl
+ }
+ }
+ },
}
-\cs_gset_eq:NN
- \markdownRendererBracketedSpanAttributeContextBeginPrototype
- \markdownRendererHeaderAttributeContextBeginPrototype
-\cs_gset_eq:NN
- \markdownRendererBracketedSpanAttributeContextEndPrototype
- \markdownRendererHeaderAttributeContextEndPrototype
-\cs_gset_eq:NN
- \markdownRendererFencedDivAttributeContextBeginPrototype
- \markdownRendererHeaderAttributeContextBeginPrototype
-\cs_gset_eq:NN
- \markdownRendererFencedDivAttributeContextEndPrototype
- \markdownRendererHeaderAttributeContextEndPrototype
-\cs_gset_eq:NN
- \markdownRendererFencedCodeAttributeContextBeginPrototype
- \markdownRendererHeaderAttributeContextBeginPrototype
-\cs_gset_eq:NN
- \markdownRendererFencedCodeAttributeContextEndPrototype
- \markdownRendererHeaderAttributeContextEndPrototype
-\cs_gset:Npn
- \markdownRendererReplacementCharacterPrototype
+\msg_new:nnn
+ { markdown }
+ { undefined-renderer }
{
- % TODO: Replace with `\codepoint_generate:nn` in TeX Live 2023
- \sys_if_engine_pdftex:TF
- { ^^ef^^bf^^bd }
- { ^^^^fffd }
+ Renderer~#1~is~undefined.
}
-\ExplSyntaxOff
-\def\markdownRendererSectionBeginPrototype{}%
-\def\markdownRendererSectionEndPrototype{}%
-\ExplSyntaxOn
-\cs_new:Nn
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+\cs_generate_variant:Nn
+ \__markdown_glob_seq:nnN
+ { VnN }
+\cs_generate_variant:Nn
+ \cs_generate_from_arg_count:NNnn
+ { cNVV }
+\cs_generate_variant:Nn
+ \msg_error:nnn
+ { nnV }
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_plain_tex_tl
{
- \str_case:nn
- { #2 }
- {
- { md } { \markdownInput{#1} }
- { tex } { \markdownEscape{#1} \unskip }
- }
+ \__markdown_define_renderers:
}
-\cs_new:Nn
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+\keys_define:nn
+ { markdown/jekyllData }
+ { }
+\__markdown_with_various_cases:nn
+ { jekyllDataRenderers }
{
- \str_case:nn
- { #2 }
+ \keys_define:nn
+ { markdown/options }
{
- { md } { \markdownInput{#1} }
- { tex } { \markdownEscape{#1} }
+ #1 .code:n = {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { ##1 }
+ \tl_replace_all:NnV
+ \l_tmpa_tl
+ { / }
+ \c_backslash_str
+ \keys_set:nV
+ { markdown/options/jekyll-data-renderers }
+ \l_tmpa_tl
+ },
}
}
-\cs_gset:Npn
- \markdownRendererInputRawInlinePrototype#1#2
+\keys_define:nn
+ { markdown/options/jekyll-data-renderers }
{
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
- { #1 }
- { #2 }
+ unknown .code:n = {
+ \tl_set_eq:NN
+ \l_tmpa_tl
+ \l_keys_key_str
+ \tl_replace_all:NVn
+ \l_tmpa_tl
+ \c_backslash_str
+ { / }
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ {
+ .code:n = { #1 }
+ }
+ \keys_define:nV
+ { markdown/jekyllData }
+ \l_tmpa_tl
+ }
}
-\cs_gset:Npn
- \markdownRendererInputRawBlockPrototype#1#2
+\cs_generate_variant:Nn
+ \keys_define:nn
+ { nV }
+\cs_new:Nn \__markdown_define_renderer_prototypes:
{
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \seq_map_function:NN
+ \g__markdown_renderers_seq
+ \__markdown_define_renderer_prototype:n
+ }
+\cs_new:Nn \__markdown_define_renderer_prototype:n
+ {
+ \__markdown_renderer_prototype_tl_to_csname:nN
{ #1 }
- { #2 }
+ \l_tmpa_tl
+ \prop_get:NnN
+ \g__markdown_renderer_arities_prop
+ { #1 }
+ \l_tmpb_tl
+ \__markdown_define_renderer_prototype:ncV
+ { #1 }
+ { \l_tmpa_tl }
+ \l_tmpb_tl
}
-\ExplSyntaxOff
-\ExplSyntaxOn
-\seq_new:N \g__markdown_jekyll_data_datatypes_seq
-\tl_const:Nn \c__markdown_jekyll_data_sequence_tl { sequence }
-\tl_const:Nn \c__markdown_jekyll_data_mapping_tl { mapping }
-\tl_const:Nn \c__markdown_jekyll_data_scalar_tl { scalar }
-\seq_new:N \g__markdown_jekyll_data_wildcard_absolute_address_seq
-\cs_new:Nn \markdown_jekyll_data_push_address_segment:n
+\cs_new:Nn \__markdown_renderer_prototype_tl_to_csname:nN
{
- \seq_if_empty:NF
- \g__markdown_jekyll_data_datatypes_seq
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \str_uppercase:n { #1 } }
+ \tl_set:Nx
+ #2
{
- \seq_get_right:NN
- \g__markdown_jekyll_data_datatypes_seq
- \l_tmpa_tl
- \str_if_eq:NNTF
- \l_tmpa_tl
- \c__markdown_jekyll_data_sequence_tl
+ markdownRenderer
+ \tl_head:f { \l_tmpa_tl }
+ \tl_tail:n { #1 }
+ Prototype
+ }
+ }
+\tl_new:N
+ \l__markdown_renderer_prototype_definition_tl
+\cs_new:Nn \__markdown_define_renderer_prototype:nNn
+ {
+ \keys_define:nn
+ { markdown/options/renderer-prototypes }
+ {
+ #1 .code:n = {
+ \tl_set:Nn
+ \l__markdown_renderer_prototype_definition_tl
+ { ##1 }
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { #1 }
+ \l__markdown_renderer_prototype_definition_tl
+ \cs_generate_from_arg_count:NNnV
+ #2
+ \cs_set:Npn
+ { #3 }
+ \l__markdown_renderer_prototype_definition_tl
+ },
+ }
+ \cs_if_free:NT
+ #2
+ {
+ \cs_generate_from_arg_count:NNnn
+ #2
+ \cs_set:Npn
+ { #3 }
+ { }
+ }
+ }
+\cs_generate_variant:Nn
+ \__markdown_define_renderer_prototype:nNn
+ { ncV }
+\seq_new:N
+ \l__markdown_renderer_prototype_glob_results_seq
+\keys_define:nn
+ { markdown/options/renderer-prototypes }
+ {
+ unknown .code:n = {
+ \__markdown_glob_seq:VnN
+ \l_keys_key_str
+ { g__markdown_renderers_seq }
+ \l__markdown_renderer_prototype_glob_results_seq
+ \seq_if_empty:NTF
+ \l__markdown_renderer_prototype_glob_results_seq
{
- \seq_put_right:Nn
- \g__markdown_jekyll_data_wildcard_absolute_address_seq
- { * }
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer-prototype }
+ \l_keys_key_str
}
{
- \seq_put_right:Nn
- \g__markdown_jekyll_data_wildcard_absolute_address_seq
+ \tl_set:Nn
+ \l__markdown_renderer_prototype_definition_tl
{ #1 }
+ \seq_map_inline:Nn
+ \l__markdown_renderer_prototype_glob_results_seq
+ {
+ \__markdown_renderer_prototype_tl_to_csname:nN
+ { ##1 }
+ \l_tmpa_tl
+ \prop_get:NnN
+ \g__markdown_renderer_arities_prop
+ { ##1 }
+ \l_tmpb_tl
+ \int_set:Nn
+ \l_tmpa_int
+ \l_tmpb_tl
+ \tl_set:NV
+ \l_tmpb_tl
+ \l__markdown_renderer_prototype_definition_tl
+ \regex_replace_all:nnN
+ { \cP\#0 }
+ { ##1 }
+ \l_tmpb_tl
+ \cs_generate_from_arg_count:cNVV
+ { \l_tmpa_tl }
+ \cs_set:Npn
+ \l_tmpa_int
+ \l_tmpb_tl
+ }
}
+ },
+ }
+\msg_new:nnn
+ { markdown }
+ { undefined-renderer-prototype }
+ {
+ Renderer~prototype~#1~is~undefined.
+ }
+\__markdown_with_various_cases:nn
+ { rendererPrototypes }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #1 .code:n = {
+ \keys_set:nn
+ { markdown/options/renderer-prototypes }
+ { ##1 }
+ },
}
}
-\tl_new:N \g__markdown_jekyll_data_wildcard_absolute_address_tl
-\tl_new:N \g__markdown_jekyll_data_wildcard_relative_address_tl
-\cs_new:Nn \markdown_jekyll_data_concatenate_address:NN
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_plain_tex_tl
{
- \seq_pop_left:NN #1 \l_tmpa_tl
- \tl_set:Nx #2 { / \seq_use:Nn #1 { / } }
- \seq_put_left:NV #1 \l_tmpa_tl
+ \__markdown_define_renderer_prototypes:
}
-\cs_new:Nn \markdown_jekyll_data_update_address_tls:
+\ExplSyntaxOff
+\let\markdownMakeOther\relax
+\let\markdownReadAndConvert\relax
+\begingroup
+ \catcode`\|=0\catcode`\\=12%
+ |gdef|markdownBegin{%
+ |markdownReadAndConvert{\markdownEnd}%
+ {|markdownEnd}}%
+|endgroup
+\ExplSyntaxOn
+\keys_define:nn
+ { markdown/options }
{
- \markdown_jekyll_data_concatenate_address:NN
- \g__markdown_jekyll_data_wildcard_absolute_address_seq
- \g__markdown_jekyll_data_wildcard_absolute_address_tl
- \seq_get_right:NN
- \g__markdown_jekyll_data_wildcard_absolute_address_seq
- \g__markdown_jekyll_data_wildcard_relative_address_tl
+ code .code:n = { #1 },
}
-\cs_new:Nn \markdown_jekyll_data_push:nN
+\cs_if_free:NT
+ \markdownInfo
{
- \markdown_jekyll_data_push_address_segment:n
- { #1 }
- \seq_put_right:NV
- \g__markdown_jekyll_data_datatypes_seq
- #2
- \markdown_jekyll_data_update_address_tls:
+ \cs_new:Npn
+ \markdownInfo #1
+ {
+ \msg_info:nne
+ { markdown }
+ { generic-message }
+ { #1 }
+ }
}
-\cs_new:Nn \markdown_jekyll_data_pop:
+\cs_if_free:NT
+ \markdownWarning
{
- \seq_pop_right:NN
- \g__markdown_jekyll_data_wildcard_absolute_address_seq
- \l_tmpa_tl
- \seq_pop_right:NN
- \g__markdown_jekyll_data_datatypes_seq
- \l_tmpa_tl
- \markdown_jekyll_data_update_address_tls:
+ \cs_new:Npn
+ \markdownWarning #1
+ {
+ \msg_warning:nne
+ { markdown }
+ { generic-message }
+ { #1 }
+ }
}
-\cs_new:Nn \markdown_jekyll_data_set_keyval:nn
+\cs_if_free:NT
+ \markdownError
{
- \keys_set_known:nn
- { markdown/jekyllData }
- { { #1 } = { #2 } }
+ \cs_new:Npn
+ \markdownError #1 #2
+ {
+ \msg_error:nnee
+ { markdown }
+ { generic-message-with-help-text }
+ { #1 }
+ { #2 }
+ }
}
+\msg_new:nnn
+ { markdown }
+ { generic-message }
+ { #1 }
+\msg_new:nnnn
+ { markdown }
+ { generic-message-with-help-text }
+ { #1 }
+ { #2 }
\cs_generate_variant:Nn
- \markdown_jekyll_data_set_keyval:nn
- { Vn }
-\cs_new:Nn \markdown_jekyll_data_set_keyvals:nn
+ \msg_info:nnn
+ { nne }
+\cs_generate_variant:Nn
+ \msg_warning:nnn
+ { nne }
+\cs_generate_variant:Nn
+ \msg_error:nnnn
+ { nnee }
+\prop_new:N \g__markdown_plain_tex_loaded_themes_linenos_prop
+\cs_new:Nn
+ \__markdown_plain_tex_load_theme:nn
{
- \markdown_jekyll_data_push:nN
+ \prop_get:NnNTF
+ \g__markdown_plain_tex_loaded_themes_linenos_prop
{ #1 }
- \c__markdown_jekyll_data_scalar_tl
- \markdown_jekyll_data_set_keyval:Vn
- \g__markdown_jekyll_data_wildcard_absolute_address_tl
- { #2 }
- \markdown_jekyll_data_set_keyval:Vn
- \g__markdown_jekyll_data_wildcard_relative_address_tl
- { #2 }
- \markdown_jekyll_data_pop:
- }
-\def\markdownRendererJekyllDataSequenceBeginPrototype#1#2{
- \markdown_jekyll_data_push:nN
- { #1 }
- \c__markdown_jekyll_data_sequence_tl
-}
-\def\markdownRendererJekyllDataMappingBeginPrototype#1#2{
- \markdown_jekyll_data_push:nN
- { #1 }
- \c__markdown_jekyll_data_mapping_tl
-}
-\def\markdownRendererJekyllDataSequenceEndPrototype{
- \markdown_jekyll_data_pop:
-}
-\def\markdownRendererJekyllDataMappingEndPrototype{
- \markdown_jekyll_data_pop:
-}
-\def\markdownRendererJekyllDataBooleanPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
- { #1 }
- { #2 }
-}
-\def\markdownRendererJekyllDataEmptyPrototype#1{}
-\def\markdownRendererJekyllDataNumberPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
- { #1 }
- { #2 }
-}
-\def\markdownRendererJekyllDataStringPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
- { #1 }
- { #2 }
-}
-\ExplSyntaxOff
-\ExplSyntaxOn
+ \l_tmpa_tl
+ {
+ \msg_warning:nnnV
+ { markdown }
+ { repeatedly-loaded-plain-tex-theme }
+ { #1 }
+ \l_tmpa_tl
+ }
+ {
+ \msg_info:nnn
+ { markdown }
+ { loading-plain-tex-theme }
+ { #1 }
+ \prop_gput:Nnx
+ \g__markdown_plain_tex_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D }
+ \file_input:n
+ { markdown theme #2 }
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { loading-plain-tex-theme }
+ { Loading~plain~TeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { repeatedly-loaded-plain-tex-theme }
+ {
+ Plain~TeX~Markdown~theme~#1~was~previously~
+ loaded~on~line~#2,~not~loading~it~again
+ }
+\cs_generate_variant:Nn
+ \prop_gput:Nnn
+ { Nnx }
+\cs_gset_eq:NN
+ \__markdown_load_theme:nn
+ \__markdown_plain_tex_load_theme:nn
+\cs_generate_variant:Nn
+ \__markdown_load_theme:nn
+ { nV }
+\cs_new:Npn
+ \markdownLoadPlainTeXTheme
+ {
+ \tl_set:NV
+ \l_tmpa_tl
+ \g__markdown_current_theme_tl
+ \tl_reverse:N
+ \l_tmpa_tl
+ \tl_set:Ne
+ \l_tmpb_tl
+ {
+ \tl_tail:V
+ \l_tmpa_tl
+ }
+ \tl_reverse:N
+ \l_tmpb_tl
+ \str_set:NV
+ \l_tmpa_str
+ \l_tmpb_tl
+ \str_replace_all:Nnn
+ \l_tmpa_str
+ { / }
+ { _ }
+ \__markdown_plain_tex_load_theme:VV
+ \l_tmpb_tl
+ \l_tmpa_str
+ }
+\cs_generate_variant:Nn
+ \tl_set:Nn
+ { Ne }
+\cs_generate_variant:Nn
+ \__markdown_plain_tex_load_theme:nn
+ { VV }
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_plain_tex_tl
+ {
+ \ExplSyntaxOff
+ \__markdown_if_option:nF
+ { noDefaults }
+ {
+ \__markdown_setup:n
+ {theme = witiko/markdown/defaults}
+ }
+ \ExplSyntaxOn
+ }
\tl_new:N \g__markdown_formatted_lua_options_tl
\cs_new:Nn \__markdown_format_lua_options:
{
@@ -2550,42 +3114,9 @@
local md = require("markdown")
local convert = md.new(\markdownLuaOptions)
}%
-\ExplSyntaxOn
-\prg_new_conditional:Nnn
- \__markdown_if_option:n
- { TF, T, F }
- {
- \__markdown_get_option_type:nN
- { #1 }
- \l_tmpa_tl
- \str_if_eq:NNF
- \l_tmpa_tl
- \c__markdown_option_type_boolean_tl
- {
- \msg_error:nnxx
- { markdown }
- { expected-boolean-option }
- { #1 }
- { \l_tmpa_tl }
- }
- \__markdown_get_option_value:nN
- { #1 }
- \l_tmpa_tl
- \str_if_eq:NNTF
- \l_tmpa_tl
- \c__markdown_option_value_true_tl
- { \prg_return_true: }
- { \prg_return_false: }
- }
-\msg_new:nnn
- { markdown }
- { expected-boolean-option }
- {
- Option~#1~has~type~#2,~
- but~a~boolean~was~expected.
- }
-\let\markdownIfOption=\__markdown_if_option:nTF
-\ExplSyntaxOff
+\def\markdownCleanup{%
+ lfs.rmdir(cacheDir)
+}%
\csname newread\endcsname\markdownInputFileStream
\csname newwrite\endcsname\markdownOutputFileStream
\begingroup
@@ -2656,118 +3187,54 @@
^^M}@
|endgroup
\ExplSyntaxOn
-\int_compare:nT
- { \markdownMode = 3 }
+\cs_new:Npn
+ \markdownLuaExecute
+ #1
{
- \markdownInfo{Using~mode~3:~The~lt3luabridge~package}
- \file_input:n { lt3luabridge.tex }
- \cs_new:Npn
- \markdownLuaExecute
- { \luabridgeExecute }
+ \int_compare:nNnT
+ { \g_luabridge_method_int }
+ =
+ { \c_luabridge_method_shell_int }
+ {
+ \sys_if_shell_unrestricted:F
+ {
+ \sys_if_shell:TF
+ {
+ \msg_error:nn
+ { markdown }
+ { restricted-shell-access }
+ }
+ {
+ \msg_error:nn
+ { markdown }
+ { disabled-shell-access }
+ }
+ }
+ }
+ \luabridge_now:e
+ { #1 }
}
+\cs_generate_variant:Nn
+ \msg_new:nnnn
+ { nnnV }
+\tl_set:Nn
+ \l_tmpa_tl
+ {
+ You~may~need~to~run~TeX~with~the~--shell-escape~or~the~
+ --enable-write18~flag,~or~write~shell_escape=t~in~the~
+ texmf.cnf~file.
+ }
+\msg_new:nnnV
+ { markdown }
+ { restricted-shell-access }
+ { Shell~escape~is~restricted }
+ \l_tmpa_tl
+\msg_new:nnnV
+ { markdown }
+ { disabled-shell-access }
+ { Shell~escape~is~disabled }
+ \l_tmpa_tl
\ExplSyntaxOff
-\ifnum\markdownMode<2\relax
-\ifnum\markdownMode=0\relax
- \markdownWarning{Using mode 0: Shell escape via write18
- (deprecated, to be removed in Markdown 3.0.0)}%
-\else
- \markdownWarning{Using mode 1: Shell escape via os.execute
- (deprecated, to be removed in Markdown 3.0.0)}%
-\fi
-\ifx\pdfshellescape\undefined
- \ifx\shellescape\undefined
- \ifnum\markdownMode=0\relax
- \def\markdownExecuteShellEscape{1}%
- \else
- \def\markdownExecuteShellEscape{%
- \directlua{tex.sprint(status.shell_escape or "1")}}%
- \fi
- \else
- \let\markdownExecuteShellEscape\shellescape
- \fi
-\else
- \let\markdownExecuteShellEscape\pdfshellescape
-\fi
-\ifnum\markdownMode=0\relax
- \def\markdownExecuteDirect#1{\immediate\write18{#1}}%
-\else
- \def\markdownExecuteDirect#1{%
- \directlua{os.execute("\luaescapestring{#1}")}}%
-\fi
-\def\markdownExecute#1{%
- \ifnum\markdownExecuteShellEscape=1\relax
- \markdownExecuteDirect{#1}%
- \else
- \markdownError{I can not access the shell}{Either run the TeX
- compiler with the --shell-escape or the --enable-write18 flag,
- or set shell_escape=t in the texmf.cnf file}%
- \fi}%
-\begingroup
- \catcode`|=0%
- \catcode`\\=12%
- |gdef|markdownLuaExecute#1{%
- |immediate|openout|markdownOutputFileStream=%
- |markdownOptionHelperScriptFileName
- |markdownInfo{Writing a helper Lua script to the file
- "|markdownOptionHelperScriptFileName"}%
- |immediate|write|markdownOutputFileStream{%
- local ran_ok, error = pcall(function()
- local kpse
- (function()
- local should_initialize = package.loaded.kpse == nil
- or tex.initialize
- local ran_ok
- ran_ok, kpse = pcall(require, "kpse")
- if ran_ok and should_initialize then
- kpse.set_program_name("luatex")
- end
- end)()
- #1
- end)
- if not ran_ok then
- local file = io.open("%
- |markdownOptionOutputDir
- /|markdownOptionErrorTempFileName", "w")
- if file then
- file:write(error .. "\n")
- file:close()
- end
- print('\\markdownError{An error was encountered while executing
- Lua code}{For further clues, examine the file
- "|markdownOptionOutputDir
- /|markdownOptionErrorTempFileName"}')
- end}%
- |immediate|closeout|markdownOutputFileStream
- |markdownInfo{Executing a helper Lua script from the file
- "|markdownOptionHelperScriptFileName" and storing the result in the
- file "|markdownOptionOutputTempFileName"}%
- |markdownExecute{texlua "|markdownOptionOutputDir
- /|markdownOptionHelperScriptFileName" > %
- "|markdownOptionOutputDir
- /|markdownOptionOutputTempFileName"}%
- |input|markdownOptionOutputTempFileName|relax}%
-|endgroup
-\fi
-\ifnum\markdownMode=2\relax
- \markdownWarning{Using mode 2: Direct Lua access
- (deprecated, to be removed in Markdown 3.0.0)}%
-\begingroup
- \catcode`|=0%
- \catcode`\\=12%
- |gdef|markdownLuaExecute#1{%
- |directlua{%
- local function print(input)
- local output = {}
- for line in input:gmatch("[^\r\n]+") do
- table.insert(output, line)
- end
- tex.print(output)
- end
- #1
- }%
- }%
-|endgroup
-\fi
\begingroup
\catcode`|=0%
\catcode`\\=12%
@@ -2797,8 +3264,10 @@
[[Could not open file "&1" for reading]])
local input = assert(file:read("*a"))
assert(file:close())
- print(convert(input))}%
- |global|advance|markdownOptionFrozenCacheCounter by 1|relax
+ print(convert(input))
+ |markdownCleanup}%
+ |markdownIfOption{finalizeCache}{%
+ |global|advance|markdownOptionFrozenCacheCounter by 1|relax}{}%
}%
|endgroup
}%
diff --git a/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex
new file mode 100644
index 00000000000..dc8a90917f6
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex
@@ -0,0 +1,321 @@
+%%
+%% This is file `markdownthemewitiko_markdown_defaults.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% markdown.dtx (with options: `themes-witiko-markdown-defaults-tex')
+%%
+%% Copyright (C) 2016-2024 Vít Starý Novotný
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%% The Current Maintainer of this work is Vít Starý Novotný.
+%%
+%% Send bug reports, requests for additions and questions
+%% either to the GitHub issue tracker at
+%%
+%% https://github.com/Witiko/markdown/issues
+%%
+%% or to the e-mail address <witiko@mail.muni.cz>.
+%%
+%% MODIFICATION ADVICE:
+%%
+%% If you want to customize this file, it is best to make a copy of
+%% the source file(s) from which it was produced. Use a different
+%% name for your copy(ies) and modify the copy(ies); this will ensure
+%% that your modifications do not get overwritten when you install a
+%% new release of the standard system. You should also ensure that
+%% your modified source file does not generate any modified file with
+%% the same name as a standard file.
+%%
+%% You will also need to produce your own, suitably named, .ins file to
+%% control the generation of files from your source file; this file
+%% should contain your own preambles for the files it generates, not
+%% those in the standard .ins files.
+%%
+%% The names of the source files used are shown above.
+%%
+\def\markdownRendererInterblockSeparatorPrototype{\par}%
+\def\markdownRendererParagraphSeparatorPrototype{%
+ \markdownRendererInterblockSeparator}%
+\def\markdownRendererHardLineBreakPrototype{\hfil\break}%
+\def\markdownRendererSoftLineBreakPrototype{ }%
+\let\markdownRendererEllipsisPrototype\dots
+\def\markdownRendererNbspPrototype{~}%
+\def\markdownRendererLeftBracePrototype{\char`\{}%
+\def\markdownRendererRightBracePrototype{\char`\}}%
+\def\markdownRendererDollarSignPrototype{\char`$}%
+\def\markdownRendererPercentSignPrototype{\char`\%}%
+\def\markdownRendererAmpersandPrototype{\&}%
+\def\markdownRendererUnderscorePrototype{\char`_}%
+\def\markdownRendererHashPrototype{\char`\#}%
+\def\markdownRendererCircumflexPrototype{\char`^}%
+\def\markdownRendererBackslashPrototype{\char`\\}%
+\def\markdownRendererTildePrototype{\char`~}%
+\def\markdownRendererPipePrototype{|}%
+\def\markdownRendererCodeSpanPrototype#1{{\tt#1}}%
+\def\markdownRendererLinkPrototype#1#2#3#4{#2}%
+\def\markdownRendererContentBlockPrototype#1#2#3#4{%
+ \markdownInput{#3}}%
+\def\markdownRendererContentBlockOnlineImagePrototype{%
+ \markdownRendererImage}%
+\def\markdownRendererContentBlockCodePrototype#1#2#3#4#5{%
+ \markdownRendererInputFencedCode{#3}{#2}{#2}}%
+\def\markdownRendererImagePrototype#1#2#3#4{#2}%
+\def\markdownRendererUlBeginPrototype{}%
+\def\markdownRendererUlBeginTightPrototype{}%
+\def\markdownRendererUlItemPrototype{}%
+\def\markdownRendererUlItemEndPrototype{}%
+\def\markdownRendererUlEndPrototype{}%
+\def\markdownRendererUlEndTightPrototype{}%
+\def\markdownRendererOlBeginPrototype{}%
+\def\markdownRendererOlBeginTightPrototype{}%
+\def\markdownRendererFancyOlBeginPrototype#1#2{\markdownRendererOlBegin}%
+\def\markdownRendererFancyOlBeginTightPrototype#1#2{\markdownRendererOlBeginTight}%
+\def\markdownRendererOlItemPrototype{}%
+\def\markdownRendererOlItemWithNumberPrototype#1{}%
+\def\markdownRendererOlItemEndPrototype{}%
+\def\markdownRendererFancyOlItemPrototype{\markdownRendererOlItem}%
+\def\markdownRendererFancyOlItemWithNumberPrototype{\markdownRendererOlItemWithNumber}%
+\def\markdownRendererFancyOlItemEndPrototype{}%
+\def\markdownRendererOlEndPrototype{}%
+\def\markdownRendererOlEndTightPrototype{}%
+\def\markdownRendererFancyOlEndPrototype{\markdownRendererOlEnd}%
+\def\markdownRendererFancyOlEndTightPrototype{\markdownRendererOlEndTight}%
+\def\markdownRendererDlBeginPrototype{}%
+\def\markdownRendererDlBeginTightPrototype{}%
+\def\markdownRendererDlItemPrototype#1{#1}%
+\def\markdownRendererDlItemEndPrototype{}%
+\def\markdownRendererDlDefinitionBeginPrototype{}%
+\def\markdownRendererDlDefinitionEndPrototype{\par}%
+\def\markdownRendererDlEndPrototype{}%
+\def\markdownRendererDlEndTightPrototype{}%
+\def\markdownRendererEmphasisPrototype#1{{\it#1}}%
+\def\markdownRendererStrongEmphasisPrototype#1{{\bf#1}}%
+\def\markdownRendererBlockQuoteBeginPrototype{\begingroup\it}%
+\def\markdownRendererBlockQuoteEndPrototype{\endgroup\par}%
+\def\markdownRendererLineBlockBeginPrototype{\begingroup\parindent=0pt}%
+\def\markdownRendererLineBlockEndPrototype{\endgroup}%
+\def\markdownRendererInputVerbatimPrototype#1{%
+ \par{\tt\input#1\relax{}}\par}%
+\def\markdownRendererInputFencedCodePrototype#1#2#3{%
+ \markdownRendererInputVerbatim{#1}}%
+\def\markdownRendererHeadingOnePrototype#1{#1}%
+\def\markdownRendererHeadingTwoPrototype#1{#1}%
+\def\markdownRendererHeadingThreePrototype#1{#1}%
+\def\markdownRendererHeadingFourPrototype#1{#1}%
+\def\markdownRendererHeadingFivePrototype#1{#1}%
+\def\markdownRendererHeadingSixPrototype#1{#1}%
+\def\markdownRendererThematicBreakPrototype{}%
+\def\markdownRendererNotePrototype#1{#1}%
+\def\markdownRendererCitePrototype#1{}%
+\def\markdownRendererTextCitePrototype#1{}%
+\def\markdownRendererTickedBoxPrototype{[X]}%
+\def\markdownRendererHalfTickedBoxPrototype{[/]}%
+\def\markdownRendererUntickedBoxPrototype{[ ]}%
+\def\markdownRendererStrikeThroughPrototype#1{#1}%
+\def\markdownRendererSuperscriptPrototype#1{#1}%
+\def\markdownRendererSubscriptPrototype#1{#1}%
+\def\markdownRendererDisplayMathPrototype#1{$$#1$$}%
+\def\markdownRendererInlineMathPrototype#1{$#1$}%
+\ExplSyntaxOn
+\cs_gset:Npn
+ \markdownRendererHeaderAttributeContextBeginPrototype
+ {
+ \group_begin:
+ \color_group_begin:
+ }
+\cs_gset:Npn
+ \markdownRendererHeaderAttributeContextEndPrototype
+ {
+ \color_group_end:
+ \group_end:
+ }
+\cs_gset_eq:NN
+ \markdownRendererBracketedSpanAttributeContextBeginPrototype
+ \markdownRendererHeaderAttributeContextBeginPrototype
+\cs_gset_eq:NN
+ \markdownRendererBracketedSpanAttributeContextEndPrototype
+ \markdownRendererHeaderAttributeContextEndPrototype
+\cs_gset_eq:NN
+ \markdownRendererFencedDivAttributeContextBeginPrototype
+ \markdownRendererHeaderAttributeContextBeginPrototype
+\cs_gset_eq:NN
+ \markdownRendererFencedDivAttributeContextEndPrototype
+ \markdownRendererHeaderAttributeContextEndPrototype
+\cs_gset_eq:NN
+ \markdownRendererFencedCodeAttributeContextBeginPrototype
+ \markdownRendererHeaderAttributeContextBeginPrototype
+\cs_gset_eq:NN
+ \markdownRendererFencedCodeAttributeContextEndPrototype
+ \markdownRendererHeaderAttributeContextEndPrototype
+\cs_gset:Npn
+ \markdownRendererReplacementCharacterPrototype
+ { \codepoint_str_generate:n { fffd } }
+\ExplSyntaxOff
+\def\markdownRendererSectionBeginPrototype{}%
+\def\markdownRendererSectionEndPrototype{}%
+\ExplSyntaxOn
+\cs_new:Nn
+ \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ {
+ \str_case:nn
+ { #2 }
+ {
+ { md } { \markdownInput{#1} }
+ { tex } { \markdownEscape{#1} \unskip }
+ }
+ }
+\cs_new:Nn
+ \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ {
+ \str_case:nn
+ { #2 }
+ {
+ { md } { \markdownInput{#1} }
+ { tex } { \markdownEscape{#1} }
+ }
+ }
+\cs_gset:Npn
+ \markdownRendererInputRawInlinePrototype#1#2
+ {
+ \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ { #1 }
+ { #2 }
+ }
+\cs_gset:Npn
+ \markdownRendererInputRawBlockPrototype#1#2
+ {
+ \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ { #1 }
+ { #2 }
+ }
+\seq_new:N \g__markdown_jekyll_data_datatypes_seq
+\tl_const:Nn \c__markdown_jekyll_data_sequence_tl { sequence }
+\tl_const:Nn \c__markdown_jekyll_data_mapping_tl { mapping }
+\tl_const:Nn \c__markdown_jekyll_data_scalar_tl { scalar }
+\seq_new:N \g__markdown_jekyll_data_wildcard_absolute_address_seq
+\cs_new:Nn \markdown_jekyll_data_push_address_segment:n
+ {
+ \seq_if_empty:NF
+ \g__markdown_jekyll_data_datatypes_seq
+ {
+ \seq_get_right:NN
+ \g__markdown_jekyll_data_datatypes_seq
+ \l_tmpa_tl
+ \str_if_eq:NNTF
+ \l_tmpa_tl
+ \c__markdown_jekyll_data_sequence_tl
+ {
+ \seq_put_right:Nn
+ \g__markdown_jekyll_data_wildcard_absolute_address_seq
+ { * }
+ }
+ {
+ \seq_put_right:Nn
+ \g__markdown_jekyll_data_wildcard_absolute_address_seq
+ { #1 }
+ }
+ }
+ }
+\tl_new:N \g__markdown_jekyll_data_wildcard_absolute_address_tl
+\tl_new:N \g__markdown_jekyll_data_wildcard_relative_address_tl
+\cs_new:Nn \markdown_jekyll_data_concatenate_address:NN
+ {
+ \seq_pop_left:NN #1 \l_tmpa_tl
+ \tl_set:Nx #2 { / \seq_use:Nn #1 { / } }
+ \seq_put_left:NV #1 \l_tmpa_tl
+ }
+\cs_new:Nn \markdown_jekyll_data_update_address_tls:
+ {
+ \markdown_jekyll_data_concatenate_address:NN
+ \g__markdown_jekyll_data_wildcard_absolute_address_seq
+ \g__markdown_jekyll_data_wildcard_absolute_address_tl
+ \seq_get_right:NN
+ \g__markdown_jekyll_data_wildcard_absolute_address_seq
+ \g__markdown_jekyll_data_wildcard_relative_address_tl
+ }
+\cs_new:Nn \markdown_jekyll_data_push:nN
+ {
+ \markdown_jekyll_data_push_address_segment:n
+ { #1 }
+ \seq_put_right:NV
+ \g__markdown_jekyll_data_datatypes_seq
+ #2
+ \markdown_jekyll_data_update_address_tls:
+ }
+\cs_new:Nn \markdown_jekyll_data_pop:
+ {
+ \seq_pop_right:NN
+ \g__markdown_jekyll_data_wildcard_absolute_address_seq
+ \l_tmpa_tl
+ \seq_pop_right:NN
+ \g__markdown_jekyll_data_datatypes_seq
+ \l_tmpa_tl
+ \markdown_jekyll_data_update_address_tls:
+ }
+\cs_new:Nn \markdown_jekyll_data_set_keyval:nn
+ {
+ \keys_set_known:nn
+ { markdown/jekyllData }
+ { { #1 } = { #2 } }
+ }
+\cs_generate_variant:Nn
+ \markdown_jekyll_data_set_keyval:nn
+ { Vn }
+\cs_new:Nn \markdown_jekyll_data_set_keyvals:nn
+ {
+ \markdown_jekyll_data_push:nN
+ { #1 }
+ \c__markdown_jekyll_data_scalar_tl
+ \markdown_jekyll_data_set_keyval:Vn
+ \g__markdown_jekyll_data_wildcard_absolute_address_tl
+ { #2 }
+ \markdown_jekyll_data_set_keyval:Vn
+ \g__markdown_jekyll_data_wildcard_relative_address_tl
+ { #2 }
+ \markdown_jekyll_data_pop:
+ }
+\def\markdownRendererJekyllDataSequenceBeginPrototype#1#2{
+ \markdown_jekyll_data_push:nN
+ { #1 }
+ \c__markdown_jekyll_data_sequence_tl
+}
+\def\markdownRendererJekyllDataMappingBeginPrototype#1#2{
+ \markdown_jekyll_data_push:nN
+ { #1 }
+ \c__markdown_jekyll_data_mapping_tl
+}
+\def\markdownRendererJekyllDataSequenceEndPrototype{
+ \markdown_jekyll_data_pop:
+}
+\def\markdownRendererJekyllDataMappingEndPrototype{
+ \markdown_jekyll_data_pop:
+}
+\def\markdownRendererJekyllDataBooleanPrototype#1#2{
+ \markdown_jekyll_data_set_keyvals:nn
+ { #1 }
+ { #2 }
+}
+\def\markdownRendererJekyllDataEmptyPrototype#1{}
+\def\markdownRendererJekyllDataNumberPrototype#1#2{
+ \markdown_jekyll_data_set_keyvals:nn
+ { #1 }
+ { #2 }
+}
+\def\markdownRendererJekyllDataStringPrototype#1#2{
+ \markdown_jekyll_data_set_keyvals:nn
+ { #1 }
+ { #2 }
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `markdownthemewitiko_markdown_defaults.tex'.
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_tilde.sty b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex
index 83dcd4015bf..90d34446f00 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_tilde.sty
+++ b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex
@@ -1,12 +1,12 @@
%%
-%% This is file `markdownthemewitiko_tilde.sty',
+%% This is file `markdownthemewitiko_tilde.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% markdown.dtx (with options: `latex-themes-witiko-tilde')
+%% markdown.dtx (with options: `themes-witiko-tilde')
%%
-%% Copyright (C) 2016-2023 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,7 +16,7 @@
%% http://www.latex-project.org/lppl.txt
%%
%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Novotný.
+%% The Current Maintainer of this work is Vít Starý Novotný.
%%
%% Send bug reports, requests for additions and questions
%% either to the GitHub issue tracker at
@@ -42,8 +42,11 @@
%%
%% The names of the source files used are shown above.
%%
-\ProvidesPackage{markdownthemewitiko_tilde}[2021/03/22]%
-\renewcommand\markdownRendererTildePrototype{~}%
+\markdownSetup {
+ rendererPrototypes = {
+ tilde = {~},
+ },
+}
\endinput
%%
-%% End of file `markdownthemewitiko_tilde.sty'.
+%% End of file `markdownthemewitiko_tilde.tex'.
diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty
index 661ea377553..4f2bcd4bdba 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdown.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdown.sty
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `latex')
%%
-%% Copyright (C) 2016-2023 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,7 +16,7 @@
%% http://www.latex-project.org/lppl.txt
%%
%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Novotný.
+%% The Current Maintainer of this work is Vít Starý Novotný.
%%
%% Send bug reports, requests for additions and questions
%% either to the GitHub issue tracker at
@@ -43,649 +43,93 @@
%% The names of the source files used are shown above.
%%
\RequirePackage{expl3}
-\newcommand\markdownInfo[1]{\PackageInfo{markdown}{#1}}%
-\newcommand\markdownWarning[1]{\PackageWarning{markdown}{#1}}%
-\newcommand\markdownError[2]{\PackageError{markdown}{#1}{#2.}}%
-\input markdown/markdown
-\newenvironment{markdown}\relax\relax
-\newenvironment{markdown*}[1]\relax\relax
\ExplSyntaxOn
-\cs_new:Nn
- \__markdown_setup:n
- {
- \keys_set:nn
- { markdown/latex-options }
- { #1 }
- }
-\let\markdownSetup=\__markdown_setup:n
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn
- \__markdown_latex_setup_snippet:nn
- {
- \markdownIfSnippetExists
- { #1 }
- {
- \markdownWarning
- {Redefined~snippet~\markdownLaTeXThemeName#1}
- \csname markdownLaTeXSetupSnippet%
- \markdownLaTeXThemeName#1\endcsname={#2}
- }
- {
- \newtoks\next
- \next={#2}
- \expandafter\let\csname markdownLaTeXSetupSnippet%
- \markdownLaTeXThemeName#1\endcsname=\next
- }
- }
-\let\markdownSetupSnippet=\__markdown_latex_setup_snippet:nn
-\ExplSyntaxOff
-\newcommand\markdownIfSnippetExists[3]{%
- \@ifundefined
- {markdownLaTeXSetupSnippet\markdownLaTeXThemeName#1}%
- {#3}{#2}}%
-\ExplSyntaxOn
-\seq_new:N \g__markdown_latex_options_seq
-\prop_new:N \g__markdown_latex_option_types_prop
-\prop_new:N \g__markdown_default_latex_options_prop
\tl_const:Nn \c__markdown_option_layer_latex_tl { latex }
-\seq_gput_right:NV \g__markdown_option_layers_seq \c__markdown_option_layer_latex_tl
-\cs_new:Nn
- \__markdown_add_latex_option:nnn
- {
- \__markdown_add_option:Vnnn
- \c__markdown_option_layer_latex_tl
- { #1 }
- { #2 }
- { #3 }
- }
-\__markdown_add_latex_option:nnn
- { plain }
- { boolean }
- { false }
-\ExplSyntaxOff
-\newif\ifmarkdownLaTeXLoaded
- \markdownLaTeXLoadedfalse
-\AtEndOfPackage{\markdownLaTeXLoadedtrue}
-\ExplSyntaxOn
-\tl_new:N \markdownLaTeXThemePackageName
-\cs_new:Nn
- \__markdown_set_latex_theme:n
- {
- \str_if_in:nnF
- { #1 }
- { / }
- {
- \markdownError
- { Won't~load~theme~with~unqualified~name~#1 }
- { Theme~names~must~contain~at~least~one~forward~slash }
- }
- \str_if_in:nnT
- { #1 }
- { _ }
- {
- \markdownError
- { Won't~load~theme~with~an~underscore~in~its~name~#1 }
- { Theme~names~must~not~contain~underscores~in~their~names }
- }
- \tl_set:Nn \markdownLaTeXThemePackageName { #1 }
- \str_replace_all:Nnn
- \markdownLaTeXThemePackageName
- { / }
- { _ }
- \edef\markdownLaTeXThemePackageName{
- markdowntheme\markdownLaTeXThemePackageName}
- \expandafter\markdownLaTeXThemeLoad\expandafter{
- \markdownLaTeXThemePackageName}{#1/}
- }
-\keys_define:nn
- { markdown/latex-options }
- {
- import .code:n = {
- \tl_set:Nn
- \l_tmpa_tl
- { #1 }
- \tl_replace_all:NnV
- \l_tmpa_tl
- { / }
- \c_backslash_str
- \keys_set:nV
- { markdown/latex-options/import }
- \l_tmpa_tl
- },
- }
-\cs_generate_variant:Nn
- \tl_replace_all:Nnn
- { NnV }
-\keys_define:nn
- { markdown/latex-options }
- {
- theme .code:n = { \__markdown_set_latex_theme:n { #1 } },
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\@onlypreamble
- \__markdown_set_latex_theme:n
-\ExplSyntaxOff
-\ExplSyntaxOn
-\keys_define:nn
- { markdown/latex-options }
- {
- snippet .code:n = {
- \markdownIfSnippetExists{#1}
- {
- \expandafter\markdownSetup\expandafter{
- \the\csname markdownLaTeXSetupSnippet
- \markdownLaTeXThemeName#1\endcsname}
- }{
- \markdownError
- {Can't~invoke~setup~snippet~#1}
- {The~setup~snippet~is~undefined}
- }
- }
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\tl_new:N
- \l__markdown_latex_import_current_theme_tl
-\keys_define:nn
- { markdown/latex-options/import }
- {
- unknown .default:n = {},
- unknown .code:n = {
- \tl_set_eq:NN
- \l__markdown_latex_import_current_theme_tl
- \l_keys_key_str
- \tl_replace_all:NVn
- \l__markdown_latex_import_current_theme_tl
- \c_backslash_str
- { / }
- \__markdown_set_latex_theme:V
- \l__markdown_latex_import_current_theme_tl
- \clist_map_inline:nn
- { #1 }
- {
- \regex_extract_once:nnNTF
- { ^(.*?)\s+as\s+(.*?)$ }
- { ##1 }
- \l_tmpa_seq
- {
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpb_tl
- }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { ##1 }
- \tl_set:Nn
- \l_tmpb_tl
- { ##1 }
- }
- \tl_put_left:Nn
- \l_tmpa_tl
- { / }
- \tl_put_left:NV
- \l_tmpa_tl
- \l__markdown_latex_import_current_theme_tl
- \__markdown_latex_setup_snippet:Vx
- \l_tmpb_tl
- { snippet = { \l_tmpa_tl } }
- }
- },
- }
-\cs_generate_variant:Nn
- \tl_replace_all:Nnn
- { NVn }
-\cs_generate_variant:Nn
- \__markdown_set_latex_theme:n
- { V }
-\cs_generate_variant:Nn
- \__markdown_latex_setup_snippet:nn
- { Vx }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn \__markdown_latex_define_option_commands_and_keyvals:
- {
- \seq_map_inline:Nn
- \g__markdown_latex_options_seq
- {
- \__markdown_plain_tex_define_option_command:n
- { ##1 }
- }
- \seq_map_inline:Nn
- \g__markdown_option_layers_seq
- {
- \seq_map_inline:cn
- { g__markdown_ ##1 _options_seq }
- {
- \__markdown_with_various_cases:nn
- { ####1 }
- {
- \__markdown_latex_define_option_keyval:nnn
- { ##1 }
- { ####1 }
- { ########1 }
- }
- }
- }
- }
-\cs_new:Nn \__markdown_latex_define_option_keyval:nnn
- {
- \prop_get:cnN
- { g__markdown_ #1 _option_types_prop }
- { #2 }
- \l_tmpa_tl
- \keys_define:nn
- { markdown/latex-options }
- {
- #3 .code:n = {
- \__markdown_set_option_value:nn
- { #2 }
- { ##1 }
- },
- }
- \str_if_eq:VVT
- \l_tmpa_tl
- \c__markdown_option_type_boolean_tl
- {
- \keys_define:nn
- { markdown/latex-options }
- {
- #3 .default:n = { true },
- }
- }
- \str_if_eq:VVT
- \l_tmpa_tl
- \c__markdown_option_type_clist_tl
- {
- \tl_set:Nn
- \l_tmpa_tl
- { #3 }
- \tl_reverse:N
- \l_tmpa_tl
- \str_if_eq:enF
- {
- \tl_head:V
- \l_tmpa_tl
- }
- { s }
- {
- \msg_error:nnn
- { markdown }
- { malformed-name-for-clist-option }
- { #3 }
- }
- \tl_set:Nx
- \l_tmpa_tl
- {
- \tl_tail:V
- \l_tmpa_tl
- }
- \tl_reverse:N
- \l_tmpa_tl
- \tl_put_right:Nn
- \l_tmpa_tl
- {
- .code:n = {
- \__markdown_get_option_value:nN
- { #2 }
- \l_tmpa_tl
- \clist_set:NV
- \l_tmpa_clist
- { \l_tmpa_tl, { ##1 } }
- \__markdown_set_option_value:nV
- { #2 }
- \l_tmpa_clist
- }
- }
- \keys_define:nV
- { markdown/latex-options }
- \l_tmpa_tl
- }
- }
\cs_generate_variant:Nn
- \clist_set:Nn
+ \tl_const:Nn
{ NV }
-\cs_generate_variant:Nn
- \keys_define:nn
- { nV }
-\cs_generate_variant:Nn
- \__markdown_set_option_value:nn
- { nV }
-\prg_generate_conditional_variant:Nnn
- \str_if_eq:nn
- { en }
- { F }
-\msg_new:nnn
- { markdown }
- { malformed-name-for-clist-option }
+\tl_if_exist:NF
+ \c__markdown_top_layer_tl
{
- Clist~option~name~#1~does~not~end~with~-s.
+ \tl_const:NV
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_latex_tl
}
-\__markdown_latex_define_option_commands_and_keyvals:
\ExplSyntaxOff
+\input markdown/markdown
+\newenvironment{markdown}\relax\relax
+\newenvironment{markdown*}[1]\relax\relax
\DeclareOption{finalizecache}{\markdownSetup{finalizeCache}}
\DeclareOption{frozencache}{\markdownSetup{frozenCache}}
\ExplSyntaxOn
-\cs_new:Nn \__markdown_latex_define_renderers:
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_latex_tl
{
- \seq_map_function:NN
- \g__markdown_renderers_seq
- \__markdown_latex_define_renderer:n
+ \__markdown_define_option_commands_and_keyvals:
+ \__markdown_define_renderers:
+ \__markdown_define_renderer_prototypes:
}
-\cs_new:Nn \__markdown_latex_define_renderer:n
- {
- \__markdown_renderer_tl_to_csname:nN
- { #1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { #1 }
- \l_tmpb_tl
- \__markdown_latex_define_renderer:ncV
- { #1 }
- { \l_tmpa_tl }
- \l_tmpb_tl
+\ExplSyntaxOff
+\newif\ifmarkdownLaTeXLoaded
+ \markdownLaTeXLoadedfalse
+\AtEndOfPackage{
+ \markdownLaTeXLoadedtrue
+ \markdownIfOption{noDefaults}{}{
+ \markdownSetup{theme=witiko/markdown/defaults}
}
-\cs_new:Nn \__markdown_renderer_tl_to_csname:nN
+}
+\def\markdownVersionSpace{ }%
+\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
+ \markdownVersion\markdownVersionSpace markdown renderer]%
+\let\markdownInputPlainTeX\markdownInput
+\renewcommand\markdownInput[2][]{%
+ \begingroup
+ \markdownSetup{#1}%
+ \markdownInputPlainTeX{#2}%
+ \endgroup}%
+\ExplSyntaxOn
+\renewenvironment
+ { markdown }
{
- \tl_set:Nn
- \l_tmpa_tl
- { \str_uppercase:n { #1 } }
- \tl_set:Nx
- #2
+ \group_begin:
+ \char_set_catcode_active:n { 13 }
+ \char_set_catcode_letter:n { 35 }
+ \peek_regex_replace_once:nnF
+ { \ *\[([^]]*)\][^\r]* }
{
- markdownRenderer
- \tl_head:f { \l_tmpa_tl }
- \tl_tail:n { #1 }
+ \c { group_end: }
+ \c { tl_set_rescan:Nnn } \c { l_tmpa_tl } { } { \1 }
+ \c { __markdown_setup:V } \c { l_tmpa_tl }
+ \c { markdownReadAndConvert@markdown } { }
}
- }
-\cs_new:Nn \__markdown_latex_define_renderer:nNn
- {
- \__markdown_with_various_cases:nn
- { #1 }
{
- \keys_define:nn
- { markdown/latex-options/renderers }
- {
- ##1 .code:n = {
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ####1 }
- },
- }
+ \group_end:
+ \markdownReadAndConvert@markdown { }
}
}
-\cs_generate_variant:Nn
- \__markdown_latex_define_renderer:nNn
- { ncV }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\tl_new:N
- \l__markdown_renderer_definition_tl
-\keys_define:nn
- { markdown/latex-options/renderers }
+ { \markdownEnd }
+\renewenvironment
+ { markdown* }
+ [ 1 ]
{
- unknown .code:n = {
- \regex_match:nVTF
- { \* }
- \l_keys_key_str
- {
- \tl_set:Nn
- \l__markdown_renderer_definition_tl
- { #1 }
- \tl_set:NV
- \l_tmpa_tl
- \l_keys_key_str
- \regex_replace_all:nnN
- { \* }
- { .* }
- \l_tmpa_tl
- \regex_set:NV
- \l_tmpa_regex
- \l_tmpa_tl
- \int_zero:N
- \l_tmpa_int
- \seq_map_inline:Nn
- \g__markdown_renderers_seq
- {
- \__markdown_with_various_cases:nn
- { ##1 }
- {
- \regex_match:NnT
- \l_tmpa_regex
- { ####1 }
- {
- \__markdown_renderer_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpb_tl
- \l__markdown_renderer_definition_tl
- \int_incr:N
- \l_tmpa_int
- \__markdown_with_various_cases_break:
- }
- }
- }
- \int_compare:nNnT
- { \l_tmpa_int } = { 0 }
- {
- \msg_error:nnV
- { markdown }
- { nonmatched-renderer-wildcard }
- \l_keys_key_str
- }
- }
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer }
- \l_keys_key_str
- }
- },
- }
-\msg_new:nnn
- { markdown }
- { undefined-renderer }
- {
- Renderer~#1~is~undefined.
- }
-\msg_new:nnn
- { markdown }
- { nonmatched-renderer-wildcard }
- {
- Wildcard~#1~matches~no~renderers.
- }
-\cs_generate_variant:Nn
- \regex_set:Nn
- { NV }
-\cs_generate_variant:Nn
- \cs_generate_from_arg_count:NNnn
- { cNVV }
-\cs_generate_variant:Nn
- \msg_error:nnn
- { nnV }
-\prg_generate_conditional_variant:Nnn
- \regex_match:nn
- { nV }
- { TF }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn \__markdown_latex_define_renderer_prototypes:
- {
- \seq_map_function:NN
- \g__markdown_renderers_seq
- \__markdown_latex_define_renderer_prototype:n
- }
-\cs_new:Nn \__markdown_latex_define_renderer_prototype:n
- {
- \__markdown_renderer_prototype_tl_to_csname:nN
- { #1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
+ \msg_warning:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
{ #1 }
- \l_tmpb_tl
- \__markdown_latex_define_renderer_prototype:ncV
- { #1 }
- { \l_tmpa_tl }
- \l_tmpb_tl
- }
-\cs_new:Nn \__markdown_latex_define_renderer_prototype:nNn
- {
- \__markdown_with_various_cases:nn
+ \__markdown_setup:n
{ #1 }
- {
- \keys_define:nn
- { markdown/latex-options/renderer-prototypes }
- {
- ##1 .code:n = {
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ####1 }
- },
- }
- }
- }
-\cs_generate_variant:Nn
- \__markdown_latex_define_renderer_prototype:nNn
- { ncV }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\tl_new:N
- \l__markdown_renderer_prototype_definition_tl
-\keys_define:nn
- { markdown/latex-options/renderer-prototypes }
- {
- unknown .code:n = {
- \regex_match:nVTF
- { \* }
- \l_keys_key_str
- {
- \tl_set:Nn
- \l__markdown_renderer_prototype_definition_tl
- { #1 }
- \tl_set:NV
- \l_tmpa_tl
- \l_keys_key_str
- \regex_replace_all:nnN
- { \* }
- { .* }
- \l_tmpa_tl
- \regex_set:NV
- \l_tmpa_regex
- \l_tmpa_tl
- \int_zero:N
- \l_tmpa_int
- \seq_map_inline:Nn
- \g__markdown_renderers_seq
- {
- \__markdown_with_various_cases:nn
- { ##1 }
- {
- \regex_match:NnT
- \l_tmpa_regex
- { ####1 }
- {
- \__markdown_renderer_prototype_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpb_tl
- \l__markdown_renderer_prototype_definition_tl
- \int_incr:N
- \l_tmpa_int
- \__markdown_with_various_cases_break:
- }
- }
- }
- \int_compare:nNnT
- { \l_tmpa_int } = { 0 }
- {
- \msg_error:nnV
- { markdown }
- { nonmatched-renderer-prototype-wildcard }
- \l_keys_key_str
- }
- }
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer-prototype }
- \l_keys_key_str
- }
- },
+ \markdownReadAndConvert@markdown *
}
+ { \markdownEnd }
\msg_new:nnn
{ markdown }
- { undefined-renderer-prototype }
+ { latex-markdown-star-deprecated }
{
- Renderer~prototype~#1~is~undefined.
+ The~markdown*~LaTeX~environment~has~been~deprecated~and~will~
+ be~removed~in~the~next~major~version~of~the~Markdown~package.
}
-\msg_new:nnn
- { markdown }
- { nonmatched-renderer-prototype-wildcard }
- {
- Wildcard~#1~matches~no~renderer~prototypes.
- }
-\cs_generate_variant:Nn
- \regex_set:Nn
- { NV }
-\cs_generate_variant:Nn
- \cs_generate_from_arg_count:NNnn
- { cNVV }
-\cs_generate_variant:Nn
- \msg_error:nnn
- { nnV }
-\prg_generate_conditional_variant:Nnn
- \regex_match:nn
- { nV }
- { TF }
\ExplSyntaxOff
-\def\markdownVersionSpace{ }%
-\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
- \markdownVersion\markdownVersionSpace markdown renderer]%
-\ExplSyntaxOn
-\__markdown_latex_define_renderers:
-\__markdown_latex_define_renderer_prototypes:
-\ExplSyntaxOff
-\let\markdownInputPlainTeX\markdownInput
-\renewcommand\markdownInput[2][]{%
- \begingroup
- \markdownSetup{#1}%
- \markdownInputPlainTeX{#2}%
- \endgroup}%
-\renewenvironment{markdown}{%
- \markdownReadAndConvert@markdown{}}{%
- \markdownEnd}%
-\renewenvironment{markdown*}[1]{%
- \markdownSetup{#1}%
- \markdownReadAndConvert@markdown*}{%
- \markdownEnd}%
\begingroup
\catcode`\|=0\catcode`\<=1\catcode`\>=2%
\catcode`\\=12|catcode`|{=12|catcode`|}=12%
@@ -693,991 +137,96 @@
|markdownReadAndConvert<\end{markdown#1}>%
<|end<markdown#1>>>%
|endgroup
-\ExplSyntaxOn
-\newcommand\markdownLaTeXThemeName{}
-\seq_new:N \g__markdown_latex_themes_seq
-\seq_gput_right:NV
- \g__markdown_latex_themes_seq
- \markdownLaTeXThemeName
-\newcommand\markdownLaTeXThemeLoad[2]{
- \def\@tempa{%
- \def\markdownLaTeXThemeName{#2}
- \seq_gput_right:NV
- \g__markdown_latex_themes_seq
- \markdownLaTeXThemeName
- \RequirePackage{#1}
- \seq_pop_right:NN
- \g__markdown_latex_themes_seq
- \l_tmpa_tl
- \seq_get_right:NN
- \g__markdown_latex_themes_seq
- \l_tmpa_tl
- \exp_args:NNV
- \def
- \markdownLaTeXThemeName
- \l_tmpa_tl}
- \ifmarkdownLaTeXLoaded
- \@tempa
- \else
- \exp_args:No
- \AtEndOfPackage
- { \@tempa }
- \fi}
-\ExplSyntaxOff
\DeclareOption*{%
\expandafter\markdownSetup\expandafter{\CurrentOption}}%
\ProcessOptions\relax
\ExplSyntaxOn
-\keys_define:nn
- { markdown/latex-options }
- {
- renderers .code:n = {
- \keys_set:nn
- { markdown/latex-options/renderers }
- { #1 }
- },
- }
-\__markdown_with_various_cases:nn
- { rendererPrototypes }
- {
- \keys_define:nn
- { markdown/latex-options }
- {
- #1 .code:n = {
- \keys_set:nn
- { markdown/latex-options/renderer-prototypes }
- { ##1 }
- },
- }
- }
-\keys_define:nn
- { markdown/latex-options }
- {
- code .code:n = { #1 },
- }
-\__markdown_with_various_cases:nn
- { jekyllDataRenderers }
+\cs_gset:Nn
+ \__markdown_load_theme:nn
{
- \keys_define:nn
- { markdown/latex-options }
- {
- #1 .code:n = {
- \tl_set:Nn
- \l_tmpa_tl
- { ##1 }
- \tl_replace_all:NnV
- \l_tmpa_tl
- { / }
- \c_backslash_str
- \keys_set:nV
- { markdown/latex-options/jekyll-data-renderers }
- \l_tmpa_tl
- },
- }
- }
-\keys_define:nn
- { markdown/latex-options/jekyll-data-renderers }
- {
- unknown .code:n = {
- \tl_set_eq:NN
- \l_tmpa_tl
- \l_keys_key_str
- \tl_replace_all:NVn
- \l_tmpa_tl
- \c_backslash_str
- { / }
- \tl_put_right:Nn
- \l_tmpa_tl
- {
- .code:n = { #1 }
- }
- \keys_define:nV
- { markdown/jekyllData }
- \l_tmpa_tl
- }
- }
-\cs_generate_variant:Nn
- \keys_define:nn
- { nV }
-\ExplSyntaxOff
-\markdownIfOption{plain}{\iffalse}{\iftrue}
-\@ifclassloaded{beamer}{}{%
- \markdownIfOption{tightLists}{\RequirePackage{paralist}}{}%
- \markdownIfOption{fancyLists}{\RequirePackage{paralist}}{}%
-}
-\ExplSyntaxOn
-\@ifpackageloaded{paralist}{
- \tl_new:N
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- \tl_new:N
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label_number:nn
- {
- \str_case:nn
- { #1 }
- {
- { Decimal } { #2 }
- { LowerRoman } { \int_to_roman:n { #2 } }
- { UpperRoman } { \int_to_Roman:n { #2 } }
- { LowerAlpha } { \int_to_alph:n { #2 } }
- { UpperAlpha } { \int_to_alph:n { #2 } }
- }
- }
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label_delimiter:n
- {
- \str_case:nn
- { #1 }
- {
- { Default } { . }
- { OneParen } { ) }
- { Period } { . }
- }
- }
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label:nnn
- {
- \__markdown_latex_fancy_list_item_label_number:nn
- { #1 }
- { #3 }
- \__markdown_latex_fancy_list_item_label_delimiter:n
- { #2 }
- }
- \cs_new:Nn
- \__markdown_latex_paralist_style:nn
- {
- \str_case:nn
- { #1 }
- {
- { Decimal } { 1 }
- { LowerRoman } { i }
- { UpperRoman } { I }
- { LowerAlpha } { a }
- { UpperAlpha } { A }
- }
- \__markdown_latex_fancy_list_item_label_delimiter:n
- { #2 }
- }
- \markdownSetup{rendererPrototypes={
- ulBeginTight = {%
- \group_begin:
- \pltopsep=\topsep
- \plpartopsep=\partopsep
- \begin{compactitem}
- },
- ulEndTight = {
- \end{compactitem}
- \group_end:
- },
- fancyOlBegin = {
- \group_begin:
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- { #1 }
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- { #2 }
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{enumerate}[ }
- \tl_put_right:Nx
- \l_tmpa_tl
- { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
- \l_tmpa_tl
- { ] }
- \l_tmpa_tl
- },
- fancyOlEnd = {
- \end{enumerate}
- \group_end:
- },
- olBeginTight = {%
- \group_begin:
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- \begin{compactenum}
- },
- olEndTight = {
- \end{compactenum}
- \group_end:
- },
- fancyOlBeginTight = {
- \group_begin:
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- { #1 }
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- { #2 }
- \tl_set:Nn
- \l_tmpa_tl
- {
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- \begin{compactenum}[
- }
- \tl_put_right:Nx
- \l_tmpa_tl
- { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
- \l_tmpa_tl
- { ] }
- \l_tmpa_tl
- },
- fancyOlEndTight = {
- \end{compactenum}
- \group_end:
- },
- fancyOlItemWithNumber = {
- \item
- [
- \__markdown_latex_fancy_list_item_label:VVn
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- { #1 }
- ]
- },
- dlBeginTight = {
- \group_begin:
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- \begin{compactdesc}
- },
- dlEndTight = {
- \end{compactdesc}
- \group_end:
- }}}
- \cs_generate_variant:Nn
- \__markdown_latex_fancy_list_item_label:nnn
- { VVn }
-}{
- \markdownSetup{rendererPrototypes={
- ulBeginTight = {\markdownRendererUlBegin},
- ulEndTight = {\markdownRendererUlEnd},
- fancyOlBegin = {\markdownRendererOlBegin},
- fancyOlEnd = {\markdownRendererOlEnd},
- olBeginTight = {\markdownRendererOlBegin},
- olEndTight = {\markdownRendererOlEnd},
- fancyOlBeginTight = {\markdownRendererOlBegin},
- fancyOlEndTight = {\markdownRendererOlEnd},
- dlBeginTight = {\markdownRendererDlBegin},
- dlEndTight = {\markdownRendererDlEnd}}}
-}
-\ExplSyntaxOff
-\RequirePackage{amsmath}
-\@ifpackageloaded{unicode-math}{
- \markdownSetup{rendererPrototypes={
- untickedBox = {$\mdlgwhtsquare$},
- }}
-}{
- \RequirePackage{amssymb}
- \markdownSetup{rendererPrototypes={
- untickedBox = {$\square$},
- }}
-}
-\RequirePackage{csvsimple}
-\RequirePackage{fancyvrb}
-\RequirePackage{graphicx}
-\markdownSetup{rendererPrototypes={
- hardLineBreak = {\\},
- leftBrace = {\textbraceleft},
- rightBrace = {\textbraceright},
- dollarSign = {\textdollar},
- underscore = {\textunderscore},
- circumflex = {\textasciicircum},
- backslash = {\textbackslash},
- tilde = {\textasciitilde},
- pipe = {\textbar},
- codeSpan = {%
- \ifmmode
- \text{#1}%
- \else
- \texttt{#1}%
- \fi
- }}}
-\ExplSyntaxOn
-\markdownSetup{
- rendererPrototypes = {
- contentBlock = {
- \str_case:nnF
- { #1 }
- {
- { csv }
- {
- \begin{table}
- \begin{center}
- \csvautotabular{#3}
- \end{center}
- \tl_if_empty:nF
- { #4 }
- { \caption{#4} }
- \end{table}
- }
- { tex } { \markdownEscape{#3} }
- }
- { \markdownInput{#3} }
- },
- },
-}
-\ExplSyntaxOff
-\markdownSetup{rendererPrototypes={
- image = {%
- \begin{figure}%
- \begin{center}%
- \includegraphics{#3}%
- \end{center}%
- \ifx\empty#4\empty\else
- \caption{#4}%
- \fi
- \end{figure}},
- ulBegin = {\begin{itemize}},
- ulEnd = {\end{itemize}},
- olBegin = {\begin{enumerate}},
- olItem = {\item{}},
- olItemWithNumber = {\item[#1.]},
- olEnd = {\end{enumerate}},
- dlBegin = {\begin{description}},
- dlItem = {\item[#1]},
- dlEnd = {\end{description}},
- emphasis = {\emph{#1}},
- tickedBox = {$\boxtimes$},
- halfTickedBox = {$\boxdot$},
- headerAttributeContextBegin = {%
- \markdownSetup{
- rendererPrototypes = {
- attributeIdentifier = {%
- \begingroup
- \def\next####1{%
- \def####1########1{%
- \endgroup
- ####1{########1}%
- \label{##1}%
- }%
- }%
- \next\markdownRendererHeadingOne
- \next\markdownRendererHeadingTwo
- \next\markdownRendererHeadingThree
- \next\markdownRendererHeadingFour
- \next\markdownRendererHeadingFive
- \next\markdownRendererHeadingSix
- },
- },
- }%
- },
- headerAttributeContextEnd = {},
- superscript = {\textsuperscript{#1}},
- subscript = {\textsubscript{#1}},
- displayMath = {\begin{displaymath}#1\end{displaymath}},
- inlineMath = {\begin{math}#1\end{math}},
- blockQuoteBegin = {\begin{quotation}},
- blockQuoteEnd = {\end{quotation}},
- inputVerbatim = {\VerbatimInput{#1}},
- thematicBreak = {\noindent\rule[0.5ex]{\linewidth}{1pt}},
- note = {\footnote{#1}}}}
-\RequirePackage{ltxcmds}
-\ExplSyntaxOn
-\cs_gset:Npn
- \markdownRendererInputFencedCodePrototype#1#2
- {
- \tl_if_empty:nTF
- { #2 }
- { \markdownRendererInputVerbatim{#1} }
- {
- \regex_extract_once:nnN
- { \w* }
- { #2 }
- \l_tmpa_seq
- \seq_pop_left:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \ltx@ifpackageloaded
- { minted }
+ \ifmarkdownLaTeXLoaded
+ \ifx\@onlypreamble\@notprerr
+ \file_if_exist:nTF
+ { markdown theme #2.sty }
{
- \catcode`\#=6\relax
- \exp_args:NV
- \inputminted
- \l_tmpa_tl
+ \msg_error:nnn
+ { markdown }
+ { latex-theme-after-preamble }
{ #1 }
- \catcode`\#=12\relax
}
{
- \ltx@ifpackageloaded
- { listings }
- { \lstinputlisting[language=\l_tmpa_tl]{#1} }
- { \markdownRendererInputFencedCode{#1}{} }
+ \__markdown_plain_tex_load_theme:nn
+ { #1 }
+ { #2 }
}
- }
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\def\markdownLATEXStrongEmphasis#1{%
- \str_if_in:NnTF
- \f@series
- { b }
- { \textnormal{#1} }
- { \textbf{#1} }
-}
-\ExplSyntaxOff
-\markdownSetup{rendererPrototypes={strongEmphasis={%
- \protect\markdownLATEXStrongEmphasis{#1}}}}
-\@ifundefined{chapter}{%
- \markdownSetup{rendererPrototypes = {
- headingOne = {\section{#1}},
- headingTwo = {\subsection{#1}},
- headingThree = {\subsubsection{#1}},
- headingFour = {\paragraph{#1}\leavevmode},
- headingFive = {\subparagraph{#1}\leavevmode}}}
-}{%
- \markdownSetup{rendererPrototypes = {
- headingOne = {\chapter{#1}},
- headingTwo = {\section{#1}},
- headingThree = {\subsection{#1}},
- headingFour = {\subsubsection{#1}},
- headingFive = {\paragraph{#1}\leavevmode},
- headingSix = {\subparagraph{#1}\leavevmode}}}
-}%
-\markdownSetup{
- rendererPrototypes = {
- ulItem = {%
- \futurelet\markdownLaTeXCheckbox\markdownLaTeXUlItem
- },
- },
-}
-\def\markdownLaTeXUlItem{%
- \ifx\markdownLaTeXCheckbox\markdownRendererTickedBox
- \item[\markdownLaTeXCheckbox]%
- \expandafter\@gobble
- \else
- \ifx\markdownLaTeXCheckbox\markdownRendererHalfTickedBox
- \item[\markdownLaTeXCheckbox]%
- \expandafter\expandafter\expandafter\@gobble
- \else
- \ifx\markdownLaTeXCheckbox\markdownRendererUntickedBox
- \item[\markdownLaTeXCheckbox]%
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\@gobble
\else
- \item{}%
- \fi
- \fi
- \fi
-}
-\@ifundefined{HCode}{}{
- \markdownSetup{
- rendererPrototypes = {
- inlineHtmlTag = {%
- \ifvmode
- \IgnorePar
- \EndP
- \fi
- \HCode{#1}%
- },
- inputBlockHtmlElement = {%
- \ifvmode
- \IgnorePar
- \fi
- \EndP
- \special{t4ht*<#1}%
- \par
- \ShowPar
- },
- },
- }
-}
-\newcount\markdownLaTeXCitationsCounter
-
-\RequirePackage{gobble}
-\def\markdownLaTeXBasicCitations#1#2#3#4#5#6{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifx\relax#4\relax
- \ifx\relax#5\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \cite{#1#2#6}% Without prenotes and postnotes, just accumulate cites
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \@gobblethree
- \fi
- \else% Before a postnote (#5), dump the accumulator
- \ifx\relax#1\relax\else
- \cite{#1}%
- \fi
- \cite[#5]{#6}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXBasicCitations
- \fi
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \@gobblethree
- \fi
- \else% Before a prenote (#4), dump the accumulator
- \ifx\relax#1\relax\else
- \cite{#1}%
- \fi
- \ifnum\markdownLaTeXCitationsCounter>1\relax
- \space % Insert a space before the prenote in later citations
- \fi
- #4~\expandafter\cite\ifx\relax#5\relax{#6}\else[#5]{#6}\fi
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXBasicCitations
- \fi
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter
- \@gobblethree
- \fi\markdownLaTeXBasicCitations{#1#2#6},}
-\let\markdownLaTeXBasicTextCitations\markdownLaTeXBasicCitations
-
-\def\markdownLaTeXNatbibCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifx\relax#3\relax
- \ifx\relax#4\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \citep{#1,#5}% Without prenotes and postnotes, just accumulate cites
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% Before a postnote (#4), dump the accumulator
- \ifx\relax#1\relax\else
- \citep{#1}%
- \fi
- \citep[][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXNatbibCitations
- \fi
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% Before a prenote (#3), dump the accumulator
- \ifx\relax#1\relax\relax\else
- \citep{#1}%
- \fi
- \citep[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXNatbibCitations
- \fi
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter
- \@gobbletwo
- \fi\markdownLaTeXNatbibCitations{#1,#5}}
-\def\markdownLaTeXNatbibTextCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifx\relax#3\relax
- \ifx\relax#4\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \citet{#1,#5}% Without prenotes and postnotes, just accumulate cites
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% After a prenote or a postnote, dump the accumulator
- \ifx\relax#1\relax\else
- \citet{#1}%
- \fi
- , \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
- ,
- \else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
- ,
- \fi
+ \file_if_exist:nTF
+ { markdown theme #2.sty }
+ {
+ \msg_info:nnn
+ { markdown }
+ { loading-latex-theme }
+ { #1 }
+ \RequirePackage
+ { markdown theme #2 }
+ }
+ {
+ \__markdown_plain_tex_load_theme:nn
+ { #1 }
+ { #2 }
+ }
\fi
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXNatbibTextCitations
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% After a prenote or a postnote, dump the accumulator
- \ifx\relax#1\relax\relax\else
- \citet{#1}%
- \fi
- , \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
- ,
\else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
- ,
- \fi
- \fi
- \expandafter\expandafter\expandafter
- \markdownLaTeXNatbibTextCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter
- \@gobbletwo
- \fi\markdownLaTeXNatbibTextCitations{#1,#5}}
-
-\def\markdownLaTeXBibLaTeXCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \autocites#1[#3][#4]{#5}%
- \expandafter\@gobbletwo
- \fi\markdownLaTeXBibLaTeXCitations{#1[#3][#4]{#5}}}
-\def\markdownLaTeXBibLaTeXTextCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \textcites#1[#3][#4]{#5}%
- \expandafter\@gobbletwo
- \fi\markdownLaTeXBibLaTeXTextCitations{#1[#3][#4]{#5}}}
-
-\markdownSetup{rendererPrototypes = {
- cite = {%
- \markdownLaTeXCitationsCounter=1%
- \def\markdownLaTeXCitationsTotal{#1}%
- \@ifundefined{autocites}{%
- \@ifundefined{citep}{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBasicCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXNatbibCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBibLaTeXCitations
- \expandafter{\expandafter}%
- }},
- textCite = {%
- \markdownLaTeXCitationsCounter=1%
- \def\markdownLaTeXCitationsTotal{#1}%
- \@ifundefined{autocites}{%
- \@ifundefined{citep}{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBasicTextCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXNatbibTextCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBibLaTeXTextCitations
- \expandafter{\expandafter}%
- }}}}
-\RequirePackage{url}
-\RequirePackage{expl3}
-\ExplSyntaxOn
-\def\markdownRendererLinkPrototype#1#2#3#4{
- \tl_set:Nn \l_tmpa_tl { #1 }
- \tl_set:Nn \l_tmpb_tl { #2 }
- \bool_set:Nn
- \l_tmpa_bool
- {
- \tl_if_eq_p:NN
- \l_tmpa_tl
- \l_tmpb_tl
- }
- \tl_set:Nn \l_tmpa_tl { #4 }
- \bool_set:Nn
- \l_tmpb_bool
- {
- \tl_if_empty_p:N
- \l_tmpa_tl
- }
- \bool_if:nTF
- {
- \l_tmpa_bool && \l_tmpb_bool
- }
- {
- \markdownLaTeXRendererAutolink { #2 } { #3 }
- }{
- \markdownLaTeXRendererDirectOrIndirectLink { #1 } { #2 } { #3 } { #4 }
- }
-}
-\def\markdownLaTeXRendererAutolink#1#2{%
- \tl_set:Nn
- \l_tmpa_tl
- { #2 }
- \tl_trim_spaces:N
- \l_tmpa_tl
- \tl_set:Nx
- \l_tmpb_tl
- {
- \tl_range:Nnn
- \l_tmpa_tl
- { 1 }
- { 1 }
- }
- \str_if_eq:NNTF
- \l_tmpb_tl
- \c_hash_str
- {
- \tl_set:Nx
- \l_tmpb_tl
+ \msg_info:nnn
+ { markdown }
+ { theme-loading-postponed }
+ { #1 }
+ \AtEndOfPackage
{
- \tl_range:Nnn
- \l_tmpa_tl
- { 2 }
- { -1 }
+ \__markdown_load_theme:nn
+ { #1 }
+ { #2 }
}
- \exp_args:NV
- \ref
- \l_tmpb_tl
- }{
- \url { #2 }
- }
-}
-\ExplSyntaxOff
-\def\markdownLaTeXRendererDirectOrIndirectLink#1#2#3#4{%
- #1\footnote{\ifx\empty#4\empty\else#4: \fi\url{#3}}}
-\newcount\markdownLaTeXRowCounter
-\newcount\markdownLaTeXRowTotal
-\newcount\markdownLaTeXColumnCounter
-\newcount\markdownLaTeXColumnTotal
-\newtoks\markdownLaTeXTable
-\newtoks\markdownLaTeXTableAlignment
-\newtoks\markdownLaTeXTableEnd
-\AtBeginDocument{%
- \@ifpackageloaded{booktabs}{%
- \def\markdownLaTeXTopRule{\toprule}%
- \def\markdownLaTeXMidRule{\midrule}%
- \def\markdownLaTeXBottomRule{\bottomrule}%
- }{%
- \def\markdownLaTeXTopRule{\hline}%
- \def\markdownLaTeXMidRule{\hline}%
- \def\markdownLaTeXBottomRule{\hline}%
- }%
-}
-\markdownSetup{rendererPrototypes={
- table = {%
- \markdownLaTeXTable={}%
- \markdownLaTeXTableAlignment={}%
- \markdownLaTeXTableEnd={%
- \markdownLaTeXBottomRule
- \end{tabular}}%
- \ifx\empty#1\empty\else
- \addto@hook\markdownLaTeXTable{%
- \begin{table}
- \centering}%
- \addto@hook\markdownLaTeXTableEnd{%
- \caption{#1}
- \end{table}}%
\fi
- \addto@hook\markdownLaTeXTable{\begin{tabular}}%
- \markdownLaTeXRowCounter=0%
- \markdownLaTeXRowTotal=#2%
- \markdownLaTeXColumnTotal=#3%
- \markdownLaTeXRenderTableRow
- }
-}}
-\def\markdownLaTeXRenderTableRow#1{%
- \markdownLaTeXColumnCounter=0%
- \ifnum\markdownLaTeXRowCounter=0\relax
- \markdownLaTeXReadAlignments#1%
- \markdownLaTeXTable=\expandafter\expandafter\expandafter{%
- \expandafter\the\expandafter\markdownLaTeXTable\expandafter{%
- \the\markdownLaTeXTableAlignment}}%
- \addto@hook\markdownLaTeXTable{\markdownLaTeXTopRule}%
- \else
- \markdownLaTeXRenderTableCell#1%
- \fi
- \ifnum\markdownLaTeXRowCounter=1\relax
- \addto@hook\markdownLaTeXTable\markdownLaTeXMidRule
- \fi
- \advance\markdownLaTeXRowCounter by 1\relax
- \ifnum\markdownLaTeXRowCounter>\markdownLaTeXRowTotal\relax
- \the\markdownLaTeXTable
- \the\markdownLaTeXTableEnd
- \expandafter\@gobble
- \fi\markdownLaTeXRenderTableRow}
-\def\markdownLaTeXReadAlignments#1{%
- \advance\markdownLaTeXColumnCounter by 1\relax
- \if#1d%
- \addto@hook\markdownLaTeXTableAlignment{l}%
- \else
- \addto@hook\markdownLaTeXTableAlignment{#1}%
- \fi
- \ifnum\markdownLaTeXColumnCounter<\markdownLaTeXColumnTotal\relax\else
- \expandafter\@gobble
- \fi\markdownLaTeXReadAlignments}
-\def\markdownLaTeXRenderTableCell#1{%
- \advance\markdownLaTeXColumnCounter by 1\relax
- \ifnum\markdownLaTeXColumnCounter<\markdownLaTeXColumnTotal\relax
- \addto@hook\markdownLaTeXTable{#1&}%
- \else
- \addto@hook\markdownLaTeXTable{#1\\}%
- \expandafter\@gobble
- \fi\markdownLaTeXRenderTableCell}
-
-\markdownIfOption{lineBlocks}{%
- \RequirePackage{verse}
- \markdownSetup{rendererPrototypes={
- lineBlockBegin = {%
- \begingroup
- \def\markdownRendererHardLineBreak{\\}%
- \begin{verse}%
- },
- lineBlockEnd = {%
- \end{verse}%
- \endgroup
- },
- }}
-}{}
-
-\ExplSyntaxOn
-\keys_define:nn
- { markdown/jekyllData }
- {
- author .code:n = { \author{#1} },
- date .code:n = { \date{#1} },
- title .code:n = { \title{#1} },
- }
-\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
-\markdownSetup{
- rendererPrototypes = {
- jekyllDataEnd = {
- \IfFormatAtLeastTF
- { 2020-10-01 }
- { \AddToHook{begindocument/end}{\maketitle} }
- {
- \ifx\@onlypreamble\@notprerr
- % We are in the document
- \maketitle
- \else
- % We are in the preamble
- \RequirePackage{etoolbox}
- \AfterEndPreamble{\maketitle}
- \fi
- }
- },
- },
-}
-\ExplSyntaxOff
-\markdownIfOption{strikeThrough}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
- },
- }
- }
-}{}
-\markdownIfOption{strikeThrough}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
- },
- }
- }
-}{}
-\ExplSyntaxOn
-\__markdown_if_option:nT
- { linkAttributes }
- {
- \RequirePackage{graphicx}
- \markdownSetup{
- rendererPrototypes = {
- imageAttributeContextBegin = {
- \group_begin:
- \markdownSetup{
- rendererPrototypes = {
- attributeKeyValue = {
- \setkeys
- { Gin }
- { { ##1 } = { ##2 } }
- },
- },
- }
- },
- imageAttributeContextEnd = {
- \group_end:
- },
- },
- }
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_gset:Npn
- \markdownRendererInputRawInlinePrototype#1#2
- {
- \str_case:nnF
- { #2 }
- {
- { latex }
- {
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
- { #1 }
- { tex }
- }
- }
- {
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
- { #1 }
- { #2 }
- }
}
-\cs_gset:Npn
- \markdownRendererInputRawBlockPrototype#1#2
+\msg_new:nnn
+ { markdown }
+ { theme-loading-postponed }
{
- \str_case:nnF
- { #2 }
- {
- { latex }
- {
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
- { #1 }
- { tex }
- }
- }
- {
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
- { #1 }
- { #2 }
- }
+ Postponing~loading~Markdown~theme~#1~until~
+ Markdown~package~has~finished~loading
}
+\msg_new:nnn
+ { markdown }
+ { loading-latex-theme }
+ { Loading~LaTeX~Markdown~theme~#1 }
+\cs_generate_variant:Nn
+ \msg_new:nnnn
+ { nnVV }
+\tl_set:Nn
+ \l_tmpa_tl
+ { Cannot~load~LaTeX~Markdown~theme~#1~after~ }
+\tl_put_right:NV
+ \l_tmpa_tl
+ \c_backslash_str
+\tl_put_right:Nn
+ \l_tmpa_tl
+ { begin{document} }
+\tl_set:Nn
+ \l_tmpb_tl
+ { Load~Markdown~theme~#1~before~ }
+\tl_put_right:NV
+ \l_tmpb_tl
+ \c_backslash_str
+\tl_put_right:Nn
+ \l_tmpb_tl
+ { begin{document} }
+\msg_new:nnVV
+ { markdown }
+ { latex-theme-after-preamble }
+ \l_tmpa_tl
+ \l_tmpb_tl
\ExplSyntaxOff
-\fi % Closes `\markdownIfOption{Plain}{\iffalse}{iftrue}`
\newcommand\markdownMakeOther{%
\count0=128\relax
\loop
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty
index 54aa163371a..a6ebbd6f1d9 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty
@@ -4,9 +4,9 @@
%%
%% The original source files were:
%%
-%% markdown.dtx (with options: `latex-themes-witiko-dot')
+%% markdown.dtx (with options: `themes-witiko-dot')
%%
-%% Copyright (C) 2016-2023 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,7 +16,7 @@
%% http://www.latex-project.org/lppl.txt
%%
%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Novotný.
+%% The Current Maintainer of this work is Vít Starý Novotný.
%%
%% Send bug reports, requests for additions and questions
%% either to the GitHub issue tracker at
@@ -47,7 +47,7 @@
\RequirePackage{ifthen,grffile}
\let\markdown@witiko@dot@oldRendererInputFencedCodePrototype
\markdownRendererInputFencedCodePrototype
-\renewcommand\markdownRendererInputFencedCodePrototype[2]{%
+\renewcommand\markdownRendererInputFencedCodePrototype[3]{%
\def\next##1 ##2\relax{%
\ifthenelse{\equal{##1}{dot}}{%
\markdownIfOption{frozenCache}{}{%
@@ -59,7 +59,7 @@
fi}}%
\markdownRendererImage{Graphviz image}{#1.pdf}{#1.pdf}{##2}%
}{%
- \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}%
+ \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}{#3}%
}%
}%
\next#2 \relax}%
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
index 57d27069ab0..a962d1d8cd0 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
@@ -4,9 +4,9 @@
%%
%% The original source files were:
%%
-%% markdown.dtx (with options: `latex-themes-witiko-graphicx-http')
+%% markdown.dtx (with options: `themes-witiko-graphicx-http')
%%
-%% Copyright (C) 2016-2023 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,7 +16,7 @@
%% http://www.latex-project.org/lppl.txt
%%
%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Novotný.
+%% The Current Maintainer of this work is Vít Starý Novotný.
%%
%% Send bug reports, requests for additions and questions
%% either to the GitHub issue tracker at
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
new file mode 100644
index 00000000000..99de31845a7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
@@ -0,0 +1,933 @@
+%%
+%% This is file `markdownthemewitiko_markdown_defaults.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% markdown.dtx (with options: `themes-witiko-markdown-defaults-latex')
+%%
+%% Copyright (C) 2016-2024 Vít Starý Novotný
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%% The Current Maintainer of this work is Vít Starý Novotný.
+%%
+%% Send bug reports, requests for additions and questions
+%% either to the GitHub issue tracker at
+%%
+%% https://github.com/Witiko/markdown/issues
+%%
+%% or to the e-mail address <witiko@mail.muni.cz>.
+%%
+%% MODIFICATION ADVICE:
+%%
+%% If you want to customize this file, it is best to make a copy of
+%% the source file(s) from which it was produced. Use a different
+%% name for your copy(ies) and modify the copy(ies); this will ensure
+%% that your modifications do not get overwritten when you install a
+%% new release of the standard system. You should also ensure that
+%% your modified source file does not generate any modified file with
+%% the same name as a standard file.
+%%
+%% You will also need to produce your own, suitably named, .ins file to
+%% control the generation of files from your source file; this file
+%% should contain your own preambles for the files it generates, not
+%% those in the standard .ins files.
+%%
+%% The names of the source files used are shown above.
+%%
+\ProvidesPackage{markdownthemewitiko_markdown_defaults}[2024/01/03]%
+\markdownLoadPlainTeXTheme
+\markdownIfOption{plain}{\iffalse}{\iftrue}
+\@ifclassloaded{beamer}{}{%
+ \markdownIfOption{tightLists}{\RequirePackage{paralist}}{}%
+ \markdownIfOption{fancyLists}{\RequirePackage{paralist}}{}%
+}
+\ExplSyntaxOn
+\@ifpackageloaded{paralist}{
+ \tl_new:N
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
+ \tl_new:N
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
+ \cs_new:Nn
+ \__markdown_latex_fancy_list_item_label_number:nn
+ {
+ \str_case:nn
+ { #1 }
+ {
+ { Decimal } { #2 }
+ { LowerRoman } { \int_to_roman:n { #2 } }
+ { UpperRoman } { \int_to_Roman:n { #2 } }
+ { LowerAlpha } { \int_to_alph:n { #2 } }
+ { UpperAlpha } { \int_to_Alph:n { #2 } }
+ }
+ }
+ \cs_new:Nn
+ \__markdown_latex_fancy_list_item_label_delimiter:n
+ {
+ \str_case:nn
+ { #1 }
+ {
+ { Default } { . }
+ { OneParen } { ) }
+ { Period } { . }
+ }
+ }
+ \cs_new:Nn
+ \__markdown_latex_fancy_list_item_label:nnn
+ {
+ \__markdown_latex_fancy_list_item_label_number:nn
+ { #1 }
+ { #3 }
+ \__markdown_latex_fancy_list_item_label_delimiter:n
+ { #2 }
+ }
+ \cs_new:Nn
+ \__markdown_latex_paralist_style:nn
+ {
+ \str_case:nn
+ { #1 }
+ {
+ { Decimal } { 1 }
+ { LowerRoman } { i }
+ { UpperRoman } { I }
+ { LowerAlpha } { a }
+ { UpperAlpha } { A }
+ }
+ \__markdown_latex_fancy_list_item_label_delimiter:n
+ { #2 }
+ }
+ \markdownSetup{rendererPrototypes={
+ ulBeginTight = {%
+ \group_begin:
+ \pltopsep=\topsep
+ \plpartopsep=\partopsep
+ \begin{compactitem}
+ },
+ ulEndTight = {
+ \end{compactitem}
+ \group_end:
+ },
+ fancyOlBegin = {
+ \group_begin:
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
+ { #1 }
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
+ { #2 }
+ \__markdown_if_option:nTF
+ { startNumber }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \begin{enumerate} }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \begin{enumerate}[ }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { ] }
+ }
+ \tl_use:N
+ \l_tmpa_tl
+ },
+ fancyOlEnd = {
+ \end{enumerate}
+ \group_end:
+ },
+ olBeginTight = {%
+ \group_begin:
+ \plpartopsep=\partopsep
+ \pltopsep=\topsep
+ \begin{compactenum}
+ },
+ olEndTight = {
+ \end{compactenum}
+ \group_end:
+ },
+ fancyOlBeginTight = {
+ \group_begin:
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
+ { #1 }
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
+ { #2 }
+ \tl_set:Nn
+ \l_tmpa_tl
+ {
+ \plpartopsep=\partopsep
+ \pltopsep=\topsep
+ }
+ \__markdown_if_option:nTF
+ { startNumber }
+ {
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { \begin{compactenum} }
+ }
+ {
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { \begin{compactenum}[ }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { ] }
+ }
+ \tl_use:N
+ \l_tmpa_tl
+ },
+ fancyOlEndTight = {
+ \end{compactenum}
+ \group_end:
+ },
+ fancyOlItemWithNumber = {
+ \item
+ [
+ \__markdown_latex_fancy_list_item_label:VVn
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
+ { #1 }
+ ]
+ },
+ dlBeginTight = {
+ \group_begin:
+ \plpartopsep=\partopsep
+ \pltopsep=\topsep
+ \begin{compactdesc}
+ },
+ dlEndTight = {
+ \end{compactdesc}
+ \group_end:
+ }}}
+ \cs_generate_variant:Nn
+ \__markdown_latex_fancy_list_item_label:nnn
+ { VVn }
+}{
+ \markdownSetup{rendererPrototypes={
+ ulBeginTight = {\markdownRendererUlBegin},
+ ulEndTight = {\markdownRendererUlEnd},
+ fancyOlBegin = {\markdownRendererOlBegin},
+ fancyOlEnd = {\markdownRendererOlEnd},
+ olBeginTight = {\markdownRendererOlBegin},
+ olEndTight = {\markdownRendererOlEnd},
+ fancyOlBeginTight = {\markdownRendererOlBegin},
+ fancyOlEndTight = {\markdownRendererOlEnd},
+ dlBeginTight = {\markdownRendererDlBegin},
+ dlEndTight = {\markdownRendererDlEnd}}}
+}
+\ExplSyntaxOff
+\RequirePackage{amsmath}
+\@ifpackageloaded{unicode-math}{
+ \markdownSetup{rendererPrototypes={
+ untickedBox = {$\mdlgwhtsquare$},
+ }}
+}{
+ \RequirePackage{amssymb}
+ \markdownSetup{rendererPrototypes={
+ untickedBox = {$\square$},
+ }}
+}
+\RequirePackage{csvsimple}
+\RequirePackage{fancyvrb}
+\RequirePackage{graphicx}
+\markdownSetup{rendererPrototypes={
+ hardLineBreak = {\\},
+ leftBrace = {\textbraceleft},
+ rightBrace = {\textbraceright},
+ dollarSign = {\textdollar},
+ underscore = {\textunderscore},
+ circumflex = {\textasciicircum},
+ backslash = {\textbackslash},
+ tilde = {\textasciitilde},
+ pipe = {\textbar},
+ codeSpan = {%
+ \ifmmode
+ \text{#1}%
+ \else
+ \texttt{#1}%
+ \fi
+ }}}
+\ExplSyntaxOn
+\markdownSetup{
+ rendererPrototypes = {
+ contentBlock = {
+ \str_case:nnF
+ { #1 }
+ {
+ { csv }
+ {
+ \begin{table}
+ \begin{center}
+ \csvautotabular{#3}
+ \end{center}
+ \tl_if_empty:nF
+ { #4 }
+ { \caption{#4} }
+ \end{table}
+ }
+ { tex } { \markdownEscape{#3} }
+ }
+ { \markdownInput{#3} }
+ },
+ },
+}
+\ExplSyntaxOff
+\markdownSetup{rendererPrototypes={
+ image = {%
+ \begin{figure}%
+ \begin{center}%
+ \includegraphics[alt={#1}]{#3}%
+ \end{center}%
+ \ifx\empty#4\empty\else
+ \caption{#4}%
+ \fi
+ \end{figure}},
+ ulBegin = {\begin{itemize}},
+ ulEnd = {\end{itemize}},
+ olBegin = {\begin{enumerate}},
+ olItem = {\item{}},
+ olItemWithNumber = {\item[#1.]},
+ olEnd = {\end{enumerate}},
+ dlBegin = {\begin{description}},
+ dlItem = {\item[#1]},
+ dlEnd = {\end{description}},
+ emphasis = {\emph{#1}},
+ tickedBox = {$\boxtimes$},
+ halfTickedBox = {$\boxdot$}}}
+\ExplSyntaxOn
+\seq_new:N \l__markdown_header_identifiers_seq
+\markdownSetup{
+ rendererPrototypes = {
+ headerAttributeContextBegin = {
+ \seq_clear:N \l__markdown_header_identifiers_seq
+ \markdownSetup
+ {
+ renderers = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l__markdown_header_identifiers_seq
+ { ##1 }
+ },
+ },
+ }
+ },
+ headerAttributeContextEnd = {
+ \seq_map_inline:Nn
+ \l__markdown_header_identifiers_seq
+ { \label { ##1 } }
+ },
+ },
+}
+\ExplSyntaxOff
+\markdownSetup{rendererPrototypes={
+ superscript = {\textsuperscript{#1}},
+ subscript = {\textsubscript{#1}},
+ blockQuoteBegin = {\begin{quotation}},
+ blockQuoteEnd = {\end{quotation}},
+ inputVerbatim = {\VerbatimInput{#1}},
+ thematicBreak = {\noindent\rule[0.5ex]{\linewidth}{1pt}},
+ note = {\footnote{#1}}}}
+\RequirePackage{ltxcmds}
+\ExplSyntaxOn
+\cs_gset:Npn
+ \markdownRendererInputFencedCodePrototype#1#2#3
+ {
+ \tl_if_empty:nTF
+ { #2 }
+ { \markdownRendererInputVerbatim{#1} }
+ {
+ \regex_extract_once:nnN
+ { \w* }
+ { #2 }
+ \l_tmpa_seq
+ \seq_pop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \ltx@ifpackageloaded
+ { minted }
+ {
+ \catcode`\#=6\relax
+ \exp_args:NV
+ \inputminted
+ \l_tmpa_tl
+ { #1 }
+ \catcode`\#=12\relax
+ }
+ {
+ \ltx@ifpackageloaded
+ { listings }
+ { \lstinputlisting[language=\l_tmpa_tl]{#1} }
+ { \markdownRendererInputFencedCode{#1}{}{} }
+ }
+ }
+ }
+\def\markdownLATEXStrongEmphasis#1{%
+ \str_if_in:NnTF
+ \f@series
+ { b }
+ { \textnormal{#1} }
+ { \textbf{#1} }
+}
+\ExplSyntaxOff
+\markdownSetup{rendererPrototypes={strongEmphasis={%
+ \protect\markdownLATEXStrongEmphasis{#1}}}}
+\@ifundefined{chapter}{%
+ \markdownSetup{rendererPrototypes = {
+ headingOne = {\section{#1}},
+ headingTwo = {\subsection{#1}},
+ headingThree = {\subsubsection{#1}},
+ headingFour = {\paragraph{#1}},
+ headingFive = {\subparagraph{#1}}}}
+}{%
+ \markdownSetup{rendererPrototypes = {
+ headingOne = {\chapter{#1}},
+ headingTwo = {\section{#1}},
+ headingThree = {\subsection{#1}},
+ headingFour = {\subsubsection{#1}},
+ headingFive = {\paragraph{#1}},
+ headingSix = {\subparagraph{#1}}}}
+}%
+\markdownSetup{
+ rendererPrototypes = {
+ ulItem = {%
+ \futurelet\markdownLaTeXCheckbox\markdownLaTeXUlItem
+ },
+ },
+}
+\def\markdownLaTeXUlItem{%
+ \ifx\markdownLaTeXCheckbox\markdownRendererTickedBox
+ \item[\markdownLaTeXCheckbox]%
+ \expandafter\@gobble
+ \else
+ \ifx\markdownLaTeXCheckbox\markdownRendererHalfTickedBox
+ \item[\markdownLaTeXCheckbox]%
+ \expandafter\expandafter\expandafter\@gobble
+ \else
+ \ifx\markdownLaTeXCheckbox\markdownRendererUntickedBox
+ \item[\markdownLaTeXCheckbox]%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\@gobble
+ \else
+ \item{}%
+ \fi
+ \fi
+ \fi
+}
+\@ifundefined{HCode}{}{
+ \markdownSetup{
+ rendererPrototypes = {
+ inlineHtmlTag = {%
+ \ifvmode
+ \IgnorePar
+ \EndP
+ \fi
+ \HCode{#1}%
+ },
+ inputBlockHtmlElement = {%
+ \ifvmode
+ \IgnorePar
+ \fi
+ \EndP
+ \special{t4ht*<#1}%
+ \par
+ \ShowPar
+ },
+ },
+ }
+}
+\newcount\markdownLaTeXCitationsCounter
+
+\RequirePackage{gobble}
+\def\markdownLaTeXBasicCitations#1#2#3#4#5#6{%
+ \advance\markdownLaTeXCitationsCounter by 1\relax
+ \ifx\relax#4\relax
+ \ifx\relax#5\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \cite{#1#2#6}% Without prenotes and postnotes, just accumulate cites
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \@gobblethree
+ \fi
+ \else% Before a postnote (#5), dump the accumulator
+ \ifx\relax#1\relax\else
+ \cite{#1}%
+ \fi
+ \cite[#5]{#6}%
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \else
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \markdownLaTeXBasicCitations
+ \fi
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter}%
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter}%
+ \expandafter\expandafter\expandafter
+ \@gobblethree
+ \fi
+ \else% Before a prenote (#4), dump the accumulator
+ \ifx\relax#1\relax\else
+ \cite{#1}%
+ \fi
+ \ifnum\markdownLaTeXCitationsCounter>1\relax
+ \space % Insert a space before the prenote in later citations
+ \fi
+ #4~\expandafter\cite\ifx\relax#5\relax{#6}\else[#5]{#6}\fi
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \else
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \markdownLaTeXBasicCitations
+ \fi
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ \expandafter
+ \@gobblethree
+ \fi\markdownLaTeXBasicCitations{#1#2#6},}
+\let\markdownLaTeXBasicTextCitations\markdownLaTeXBasicCitations
+
+\def\markdownLaTeXNatbibCitations#1#2#3#4#5{%
+ \advance\markdownLaTeXCitationsCounter by 1\relax
+ \ifx\relax#3\relax
+ \ifx\relax#4\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \citep{#1,#5}% Without prenotes and postnotes, just accumulate cites
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \@gobbletwo
+ \fi
+ \else% Before a postnote (#4), dump the accumulator
+ \ifx\relax#1\relax\else
+ \citep{#1}%
+ \fi
+ \citep[][#4]{#5}%
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \else
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \markdownLaTeXNatbibCitations
+ \fi
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter}%
+ \expandafter\expandafter\expandafter
+ \@gobbletwo
+ \fi
+ \else% Before a prenote (#3), dump the accumulator
+ \ifx\relax#1\relax\relax\else
+ \citep{#1}%
+ \fi
+ \citep[#3][#4]{#5}%
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \else
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \markdownLaTeXNatbibCitations
+ \fi
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ \expandafter
+ \@gobbletwo
+ \fi\markdownLaTeXNatbibCitations{#1,#5}}
+\def\markdownLaTeXNatbibTextCitations#1#2#3#4#5{%
+ \advance\markdownLaTeXCitationsCounter by 1\relax
+ \ifx\relax#3\relax
+ \ifx\relax#4\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \citet{#1,#5}% Without prenotes and postnotes, just accumulate cites
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \@gobbletwo
+ \fi
+ \else% After a prenote or a postnote, dump the accumulator
+ \ifx\relax#1\relax\else
+ \citet{#1}%
+ \fi
+ , \citet[#3][#4]{#5}%
+ \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
+ ,
+ \else
+ \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
+ ,
+ \fi
+ \fi
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter
+ \markdownLaTeXNatbibTextCitations
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\expandafter}%
+ \expandafter\expandafter\expandafter
+ \@gobbletwo
+ \fi
+ \else% After a prenote or a postnote, dump the accumulator
+ \ifx\relax#1\relax\relax\else
+ \citet{#1}%
+ \fi
+ , \citet[#3][#4]{#5}%
+ \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
+ ,
+ \else
+ \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
+ ,
+ \fi
+ \fi
+ \expandafter\expandafter\expandafter
+ \markdownLaTeXNatbibTextCitations
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ \expandafter
+ \@gobbletwo
+ \fi\markdownLaTeXNatbibTextCitations{#1,#5}}
+
+\def\markdownLaTeXBibLaTeXCitations#1#2#3#4#5{%
+ \advance\markdownLaTeXCitationsCounter by 1\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \autocites#1[#3][#4]{#5}%
+ \expandafter\@gobbletwo
+ \fi\markdownLaTeXBibLaTeXCitations{#1[#3][#4]{#5}}}
+\def\markdownLaTeXBibLaTeXTextCitations#1#2#3#4#5{%
+ \advance\markdownLaTeXCitationsCounter by 1\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \textcites#1[#3][#4]{#5}%
+ \expandafter\@gobbletwo
+ \fi\markdownLaTeXBibLaTeXTextCitations{#1[#3][#4]{#5}}}
+
+\markdownSetup{rendererPrototypes = {
+ cite = {%
+ \markdownLaTeXCitationsCounter=1%
+ \def\markdownLaTeXCitationsTotal{#1}%
+ \@ifundefined{autocites}{%
+ \@ifundefined{citep}{%
+ \expandafter\expandafter\expandafter
+ \markdownLaTeXBasicCitations
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ }{%
+ \expandafter\expandafter\expandafter
+ \markdownLaTeXNatbibCitations
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ }%
+ }{%
+ \expandafter\expandafter\expandafter
+ \markdownLaTeXBibLaTeXCitations
+ \expandafter{\expandafter}%
+ }},
+ textCite = {%
+ \markdownLaTeXCitationsCounter=1%
+ \def\markdownLaTeXCitationsTotal{#1}%
+ \@ifundefined{autocites}{%
+ \@ifundefined{citep}{%
+ \expandafter\expandafter\expandafter
+ \markdownLaTeXBasicTextCitations
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ }{%
+ \expandafter\expandafter\expandafter
+ \markdownLaTeXNatbibTextCitations
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter}%
+ }%
+ }{%
+ \expandafter\expandafter\expandafter
+ \markdownLaTeXBibLaTeXTextCitations
+ \expandafter{\expandafter}%
+ }}}}
+\RequirePackage{url}
+\RequirePackage{expl3}
+\ExplSyntaxOn
+\def\markdownRendererLinkPrototype#1#2#3#4{
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \tl_set:Nn \l_tmpb_tl { #2 }
+ \bool_set:Nn
+ \l_tmpa_bool
+ {
+ \tl_if_eq_p:NN
+ \l_tmpa_tl
+ \l_tmpb_tl
+ }
+ \tl_set:Nn \l_tmpa_tl { #4 }
+ \bool_set:Nn
+ \l_tmpb_bool
+ {
+ \tl_if_empty_p:N
+ \l_tmpa_tl
+ }
+ \bool_if:nTF
+ {
+ \l_tmpa_bool && \l_tmpb_bool
+ }
+ {
+ \markdownLaTeXRendererAutolink { #2 } { #3 }
+ }{
+ \markdownLaTeXRendererDirectOrIndirectLink { #1 } { #2 } { #3 } { #4 }
+ }
+}
+\def\markdownLaTeXRendererAutolink#1#2{%
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #2 }
+ \tl_trim_spaces:N
+ \l_tmpa_tl
+ \tl_set:Nx
+ \l_tmpb_tl
+ {
+ \tl_range:Nnn
+ \l_tmpa_tl
+ { 1 }
+ { 1 }
+ }
+ \str_if_eq:NNTF
+ \l_tmpb_tl
+ \c_hash_str
+ {
+ \tl_set:Nx
+ \l_tmpb_tl
+ {
+ \tl_range:Nnn
+ \l_tmpa_tl
+ { 2 }
+ { -1 }
+ }
+ \exp_args:NV
+ \ref
+ \l_tmpb_tl
+ }{
+ \url { #2 }
+ }
+}
+\ExplSyntaxOff
+\def\markdownLaTeXRendererDirectOrIndirectLink#1#2#3#4{%
+ #1\footnote{\ifx\empty#4\empty\else#4: \fi\url{#3}}}
+\newcount\markdownLaTeXRowCounter
+\newcount\markdownLaTeXRowTotal
+\newcount\markdownLaTeXColumnCounter
+\newcount\markdownLaTeXColumnTotal
+\newtoks\markdownLaTeXTable
+\newtoks\markdownLaTeXTableAlignment
+\newtoks\markdownLaTeXTableEnd
+\AtBeginDocument{%
+ \@ifpackageloaded{booktabs}{%
+ \def\markdownLaTeXTopRule{\toprule}%
+ \def\markdownLaTeXMidRule{\midrule}%
+ \def\markdownLaTeXBottomRule{\bottomrule}%
+ }{%
+ \def\markdownLaTeXTopRule{\hline}%
+ \def\markdownLaTeXMidRule{\hline}%
+ \def\markdownLaTeXBottomRule{\hline}%
+ }%
+}
+\markdownSetup{rendererPrototypes={
+ table = {%
+ \markdownLaTeXTable={}%
+ \markdownLaTeXTableAlignment={}%
+ \markdownLaTeXTableEnd={%
+ \markdownLaTeXBottomRule
+ \end{tabular}}%
+ \ifx\empty#1\empty\else
+ \addto@hook\markdownLaTeXTable{%
+ \begin{table}
+ \centering}%
+ \addto@hook\markdownLaTeXTableEnd{%
+ \caption{#1}
+ \end{table}}%
+ \fi
+ \addto@hook\markdownLaTeXTable{\begin{tabular}}%
+ \markdownLaTeXRowCounter=0%
+ \markdownLaTeXRowTotal=#2%
+ \markdownLaTeXColumnTotal=#3%
+ \markdownLaTeXRenderTableRow
+ }
+}}
+\def\markdownLaTeXRenderTableRow#1{%
+ \markdownLaTeXColumnCounter=0%
+ \ifnum\markdownLaTeXRowCounter=0\relax
+ \markdownLaTeXReadAlignments#1%
+ \markdownLaTeXTable=\expandafter\expandafter\expandafter{%
+ \expandafter\the\expandafter\markdownLaTeXTable\expandafter{%
+ \the\markdownLaTeXTableAlignment}}%
+ \addto@hook\markdownLaTeXTable{\markdownLaTeXTopRule}%
+ \else
+ \markdownLaTeXRenderTableCell#1%
+ \fi
+ \ifnum\markdownLaTeXRowCounter=1\relax
+ \addto@hook\markdownLaTeXTable\markdownLaTeXMidRule
+ \fi
+ \advance\markdownLaTeXRowCounter by 1\relax
+ \ifnum\markdownLaTeXRowCounter>\markdownLaTeXRowTotal\relax
+ \the\markdownLaTeXTable
+ \the\markdownLaTeXTableEnd
+ \expandafter\@gobble
+ \fi\markdownLaTeXRenderTableRow}
+\def\markdownLaTeXReadAlignments#1{%
+ \advance\markdownLaTeXColumnCounter by 1\relax
+ \if#1d%
+ \addto@hook\markdownLaTeXTableAlignment{l}%
+ \else
+ \addto@hook\markdownLaTeXTableAlignment{#1}%
+ \fi
+ \ifnum\markdownLaTeXColumnCounter<\markdownLaTeXColumnTotal\relax\else
+ \expandafter\@gobble
+ \fi\markdownLaTeXReadAlignments}
+\def\markdownLaTeXRenderTableCell#1{%
+ \advance\markdownLaTeXColumnCounter by 1\relax
+ \ifnum\markdownLaTeXColumnCounter<\markdownLaTeXColumnTotal\relax
+ \addto@hook\markdownLaTeXTable{#1&}%
+ \else
+ \addto@hook\markdownLaTeXTable{#1\\}%
+ \expandafter\@gobble
+ \fi\markdownLaTeXRenderTableCell}
+
+\markdownIfOption{lineBlocks}{%
+ \RequirePackage{verse}
+ \markdownSetup{rendererPrototypes={
+ lineBlockBegin = {%
+ \begingroup
+ \def\markdownRendererHardLineBreak{\\}%
+ \begin{verse}%
+ },
+ lineBlockEnd = {%
+ \end{verse}%
+ \endgroup
+ },
+ }}
+}{}
+
+\ExplSyntaxOn
+\keys_define:nn
+ { markdown/jekyllData }
+ {
+ author .code:n = { \author{#1} },
+ date .code:n = { \date{#1} },
+ title .code:n = { \title{#1} },
+ }
+\markdownSetup{
+ rendererPrototypes = {
+ jekyllDataEnd = {
+ \AddToHook{begindocument/end}{\maketitle}
+ },
+ },
+}
+\ExplSyntaxOff
+\markdownIfOption{strikeThrough}{%
+ \RequirePackage{soulutf8}%
+ \markdownSetup{
+ rendererPrototypes = {
+ strikeThrough = {%
+ \st{#1}%
+ },
+ }
+ }
+}{}
+\markdownIfOption{mark}{%
+ \RequirePackage{soulutf8}%
+ \markdownSetup{
+ rendererPrototypes = {
+ mark = {%
+ \hl{#1}%
+ },
+ }
+ }
+}{}
+\ExplSyntaxOn
+\__markdown_if_option:nT
+ { linkAttributes }
+ {
+ \RequirePackage{graphicx}
+ \markdownSetup{
+ rendererPrototypes = {
+ imageAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup{
+ rendererPrototypes = {
+ attributeKeyValue = {
+ \setkeys
+ { Gin }
+ { { ##1 } = { ##2 } }
+ },
+ },
+ }
+ },
+ imageAttributeContextEnd = {
+ \group_end:
+ },
+ },
+ }
+ }
+\cs_gset:Npn
+ \markdownRendererInputRawInlinePrototype#1#2
+ {
+ \str_case:nnF
+ { #2 }
+ {
+ { latex }
+ {
+ \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ { #1 }
+ { tex }
+ }
+ }
+ {
+ \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ { #1 }
+ { #2 }
+ }
+ }
+\cs_gset:Npn
+ \markdownRendererInputRawBlockPrototype#1#2
+ {
+ \str_case:nnF
+ { #2 }
+ {
+ { latex }
+ {
+ \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ { #1 }
+ { tex }
+ }
+ }
+ {
+ \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ { #1 }
+ { #2 }
+ }
+ }
+\ExplSyntaxOff
+\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}`
+\endinput
+%%
+%% End of file `markdownthemewitiko_markdown_defaults.sty'.
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua b/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
index 074ad79446e..36cef293ed9 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
@@ -633,8 +633,10 @@ function Parser:parseseq(line, lines, indent)
error("did not find expected alphabetic or numeric character")
elseif rest then
-- Array entry with a value
+ local nextline = lines[1]
+ local indent2 = countindent(nextline)
tremove(lines, 1)
- tinsert(seq, self:parsescalar(rest, lines))
+ tinsert(seq, self:parsescalar(rest, lines, indent2))
end
end
return seq
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
index 225428abe03..fce3c1fe827 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
@@ -20,7 +20,7 @@
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--
--- Copyright (C) 2016-2023 Vít Novotný
+-- Copyright (C) 2016-2024 Vít Starý Novotný
--
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -33,7 +33,7 @@
-- version 2005/12/01 or later.
--
-- This work has the LPPL maintenance status `maintained'.
--- The Current Maintainer of this work is Vít Novotný.
+-- The Current Maintainer of this work is Vít Starý Novotný.
--
-- Send bug reports, requests for additions and questions
-- either to the GitHub issue tracker at
@@ -58,50 +58,28 @@
-- those in the standard .ins files.
--
local metadata = {
- version = "2.23.0-0-g0b22f91",
+ version = "3.4.1-0-g457226ae",
comment = "A module for the conversion from markdown to plain TeX",
- author = "John MacFarlane, Hans Hagen, Vít Novotný",
+ author = "John MacFarlane, Hans Hagen, Vít Starý Novotný",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
- "2016-2023 Vít Novotný"},
+ "2016-2023 Vít Starý Novotný"},
license = "LPPL 1.3c"
}
if not modules then modules = { } end
modules['markdown'] = metadata
local lpeg = require("lpeg")
-local unicode
-(function()
- local ran_ok
- ran_ok, unicode = pcall(require, "unicode")
- if not ran_ok then
- unicode = {utf8 = {char=utf8.char}}
- end
-end)()
+local unicode = require("unicode")
local md5 = require("md5");
(function()
local should_initialize = package.loaded.kpse == nil
or tex.initialize ~= nil
- local ran_ok
- ran_ok, kpse = pcall(require, "kpse")
- if ran_ok and should_initialize then
+ kpse = require("kpse")
+ if should_initialize then
kpse.set_program_name("luatex")
end
- if not ran_ok then
- kpse = {lookup = function(f, _) return f end}
- end
-end)()
-local uni_case
-(function()
- local ran_ok
- ran_ok, uni_case = pcall(require, "lua-uni-case")
- if not ran_ok then
- if unicode.utf8.lower then
- uni_case = {casefold = unicode.utf8.lower}
- else
- uni_case = {casefold = string.lower}
- end
- end
end)()
+local uni_algos = require("lua-uni-algos")
local M = {metadata = metadata}
local walkable_syntax = {
Block = {
@@ -110,8 +88,11 @@ local walkable_syntax = {
"ThematicBreak",
"BulletList",
"OrderedList",
- "Heading",
"DisplayHtml",
+ "Heading",
+ },
+ BlockOrParagraph = {
+ "Block",
"Paragraph",
"Plain",
},
@@ -119,11 +100,8 @@ local walkable_syntax = {
"Str",
"Space",
"Endline",
- "UlOrStarLine",
- "Strong",
- "Emph",
- "Link",
- "Image",
+ "EndlineBreak",
+ "LinkAndEmph",
"Code",
"AutoLinkUrl",
"AutoLinkEmail",
@@ -136,49 +114,56 @@ local walkable_syntax = {
},
}
local defaultOptions = {}
+defaultOptions.eagerCache = false
+defaultOptions.singletonCache = true
+local singletonCache = {
+ convert = nil,
+ options = nil,
+}
defaultOptions.cacheDir = "."
defaultOptions.contentBlocksLanguageMap = "markdown-languages.json"
defaultOptions.debugExtensionsFileName = "debug-extensions.json"
defaultOptions.frozenCacheFileName = "frozenCache.tex"
+defaultOptions.autoIdentifiers = false
defaultOptions.blankBeforeBlockquote = false
defaultOptions.blankBeforeCodeFence = false
defaultOptions.blankBeforeDivFence = false
defaultOptions.blankBeforeHeading = false
+defaultOptions.blankBeforeList = false
defaultOptions.bracketedSpans = false
-defaultOptions.breakableBlockquotes = false
+defaultOptions.breakableBlockquotes = true
defaultOptions.citationNbsps = true
defaultOptions.citations = false
defaultOptions.codeSpans = true
defaultOptions.contentBlocks = false
+defaultOptions.contentLevel = "block"
defaultOptions.debugExtensions = false
defaultOptions.definitionLists = false
-defaultOptions.eagerCache = true
defaultOptions.expectJekyllData = false
metadata.user_extension_api_version = 2
-metadata.grammar_version = 2
+metadata.grammar_version = 4
defaultOptions.extensions = {}
defaultOptions.fancyLists = false
-defaultOptions.fencedCode = false
+defaultOptions.fencedCode = true
defaultOptions.fencedCodeAttributes = false
defaultOptions.fencedDivs = false
defaultOptions.finalizeCache = false
defaultOptions.frozenCacheCounter = 0
-defaultOptions.hardLineBreaks = false
+defaultOptions.gfmAutoIdentifiers = false
defaultOptions.hashEnumerators = false
defaultOptions.headerAttributes = false
-defaultOptions.html = false
+defaultOptions.html = true
defaultOptions.hybrid = false
defaultOptions.inlineCodeAttributes = false
-defaultOptions.inlineFootnotes = false
defaultOptions.inlineNotes = false
defaultOptions.jekyllData = false
defaultOptions.linkAttributes = false
defaultOptions.lineBlocks = false
-defaultOptions.footnotes = false
+defaultOptions.mark = false
defaultOptions.notes = false
defaultOptions.pipeTables = false
-defaultOptions.preserveTabs = false
-defaultOptions.rawAttribute = true
+defaultOptions.preserveTabs = true
+defaultOptions.rawAttribute = false
defaultOptions.relativeReferences = false
defaultOptions.shiftHeadings = 0
defaultOptions.slice = "^ $"
@@ -188,6 +173,7 @@ defaultOptions.strikeThrough = false
defaultOptions.stripIndent = false
defaultOptions.subscripts = false
defaultOptions.superscripts = false
+defaultOptions.tableAttributes = false
defaultOptions.tableCaptions = false
defaultOptions.taskLists = false
defaultOptions.texComments = false
@@ -198,9 +184,9 @@ defaultOptions.tightLists = true
defaultOptions.underscores = true
local upper, format, length =
string.upper, string.format, string.len
-local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, any =
+local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, Cp, any =
lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cg, lpeg.Cb,
- lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.P(1)
+ lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.Cp, lpeg.P(1)
local util = {}
function util.err(msg, exit_code)
io.stderr:write("markdown.lua: " .. msg .. "\n")
@@ -348,13 +334,13 @@ local character_entities = {
["Tab"] = 9,
["NewLine"] = 10,
["excl"] = 33,
- ["quot"] = 34,
["QUOT"] = 34,
+ ["quot"] = 34,
["num"] = 35,
["dollar"] = 36,
["percnt"] = 37,
- ["amp"] = 38,
["AMP"] = 38,
+ ["amp"] = 38,
["apos"] = 39,
["lpar"] = 40,
["rpar"] = 41,
@@ -366,31 +352,36 @@ local character_entities = {
["sol"] = 47,
["colon"] = 58,
["semi"] = 59,
- ["lt"] = 60,
["LT"] = 60,
+ ["lt"] = 60,
+ ["nvlt"] = {60, 8402},
+ ["bne"] = {61, 8421},
["equals"] = 61,
- ["gt"] = 62,
["GT"] = 62,
+ ["gt"] = 62,
+ ["nvgt"] = {62, 8402},
["quest"] = 63,
["commat"] = 64,
- ["lsqb"] = 91,
["lbrack"] = 91,
+ ["lsqb"] = 91,
["bsol"] = 92,
- ["rsqb"] = 93,
["rbrack"] = 93,
+ ["rsqb"] = 93,
["Hat"] = 94,
+ ["UnderBar"] = 95,
["lowbar"] = 95,
- ["grave"] = 96,
["DiacriticalGrave"] = 96,
- ["lcub"] = 123,
+ ["grave"] = 96,
+ ["fjlig"] = {102, 106},
["lbrace"] = 123,
+ ["lcub"] = 123,
+ ["VerticalLine"] = 124,
["verbar"] = 124,
["vert"] = 124,
- ["VerticalLine"] = 124,
- ["rcub"] = 125,
["rbrace"] = 125,
- ["nbsp"] = 160,
+ ["rcub"] = 125,
["NonBreakingSpace"] = 160,
+ ["nbsp"] = 160,
["iexcl"] = 161,
["cent"] = 162,
["pound"] = 163,
@@ -399,36 +390,35 @@ local character_entities = {
["brvbar"] = 166,
["sect"] = 167,
["Dot"] = 168,
- ["die"] = 168,
["DoubleDot"] = 168,
+ ["die"] = 168,
["uml"] = 168,
- ["copy"] = 169,
["COPY"] = 169,
+ ["copy"] = 169,
["ordf"] = 170,
["laquo"] = 171,
["not"] = 172,
["shy"] = 173,
- ["reg"] = 174,
- ["circledR"] = 174,
["REG"] = 174,
+ ["circledR"] = 174,
+ ["reg"] = 174,
["macr"] = 175,
- ["OverBar"] = 175,
["strns"] = 175,
["deg"] = 176,
+ ["PlusMinus"] = 177,
["plusmn"] = 177,
["pm"] = 177,
- ["PlusMinus"] = 177,
["sup2"] = 178,
["sup3"] = 179,
- ["acute"] = 180,
["DiacriticalAcute"] = 180,
+ ["acute"] = 180,
["micro"] = 181,
["para"] = 182,
- ["middot"] = 183,
- ["centerdot"] = 183,
["CenterDot"] = 183,
- ["cedil"] = 184,
+ ["centerdot"] = 183,
+ ["middot"] = 183,
["Cedilla"] = 184,
+ ["cedil"] = 184,
["sup1"] = 185,
["ordm"] = 186,
["raquo"] = 187,
@@ -443,6 +433,7 @@ local character_entities = {
["Atilde"] = 195,
["Auml"] = 196,
["Aring"] = 197,
+ ["angst"] = 197,
["AElig"] = 198,
["Ccedil"] = 199,
["Egrave"] = 200,
@@ -492,8 +483,8 @@ local character_entities = {
["ocirc"] = 244,
["otilde"] = 245,
["ouml"] = 246,
- ["divide"] = 247,
["div"] = 247,
+ ["divide"] = 247,
["oslash"] = 248,
["ugrave"] = 249,
["uacute"] = 250,
@@ -628,20 +619,19 @@ local character_entities = {
["gacute"] = 501,
["jmath"] = 567,
["circ"] = 710,
- ["caron"] = 711,
["Hacek"] = 711,
- ["breve"] = 728,
+ ["caron"] = 711,
["Breve"] = 728,
- ["dot"] = 729,
+ ["breve"] = 728,
["DiacriticalDot"] = 729,
+ ["dot"] = 729,
["ring"] = 730,
["ogon"] = 731,
- ["tilde"] = 732,
["DiacriticalTilde"] = 732,
- ["dblac"] = 733,
+ ["tilde"] = 732,
["DiacriticalDoubleAcute"] = 733,
+ ["dblac"] = 733,
["DownBreve"] = 785,
- ["UnderBar"] = 818,
["Alpha"] = 913,
["Beta"] = 914,
["Gamma"] = 915,
@@ -666,12 +656,12 @@ local character_entities = {
["Chi"] = 935,
["Psi"] = 936,
["Omega"] = 937,
+ ["ohm"] = 937,
["alpha"] = 945,
["beta"] = 946,
["gamma"] = 947,
["delta"] = 948,
- ["epsiv"] = 949,
- ["varepsilon"] = 949,
+ ["epsi"] = 949,
["epsilon"] = 949,
["zeta"] = 950,
["eta"] = 951,
@@ -685,38 +675,39 @@ local character_entities = {
["omicron"] = 959,
["pi"] = 960,
["rho"] = 961,
+ ["sigmaf"] = 962,
["sigmav"] = 962,
["varsigma"] = 962,
- ["sigmaf"] = 962,
["sigma"] = 963,
["tau"] = 964,
["upsi"] = 965,
["upsilon"] = 965,
["phi"] = 966,
- ["phiv"] = 966,
- ["varphi"] = 966,
["chi"] = 967,
["psi"] = 968,
["omega"] = 969,
+ ["thetasym"] = 977,
["thetav"] = 977,
["vartheta"] = 977,
- ["thetasym"] = 977,
["Upsi"] = 978,
["upsih"] = 978,
+ ["phiv"] = 981,
["straightphi"] = 981,
+ ["varphi"] = 981,
["piv"] = 982,
["varpi"] = 982,
["Gammad"] = 988,
- ["gammad"] = 989,
["digamma"] = 989,
+ ["gammad"] = 989,
["kappav"] = 1008,
["varkappa"] = 1008,
["rhov"] = 1009,
["varrho"] = 1009,
- ["epsi"] = 1013,
+ ["epsiv"] = 1013,
["straightepsilon"] = 1013,
- ["bepsi"] = 1014,
+ ["varepsilon"] = 1013,
["backepsilon"] = 1014,
+ ["bepsi"] = 1014,
["IOcy"] = 1025,
["DJcy"] = 1026,
["GJcy"] = 1027,
@@ -815,40 +806,40 @@ local character_entities = {
["emsp14"] = 8197,
["numsp"] = 8199,
["puncsp"] = 8200,
- ["thinsp"] = 8201,
["ThinSpace"] = 8201,
- ["hairsp"] = 8202,
+ ["thinsp"] = 8201,
["VeryThinSpace"] = 8202,
- ["ZeroWidthSpace"] = 8203,
- ["NegativeVeryThinSpace"] = 8203,
- ["NegativeThinSpace"] = 8203,
+ ["hairsp"] = 8202,
["NegativeMediumSpace"] = 8203,
["NegativeThickSpace"] = 8203,
+ ["NegativeThinSpace"] = 8203,
+ ["NegativeVeryThinSpace"] = 8203,
+ ["ZeroWidthSpace"] = 8203,
["zwnj"] = 8204,
["zwj"] = 8205,
["lrm"] = 8206,
["rlm"] = 8207,
- ["hyphen"] = 8208,
["dash"] = 8208,
+ ["hyphen"] = 8208,
["ndash"] = 8211,
["mdash"] = 8212,
["horbar"] = 8213,
["Verbar"] = 8214,
["Vert"] = 8214,
- ["lsquo"] = 8216,
["OpenCurlyQuote"] = 8216,
+ ["lsquo"] = 8216,
+ ["CloseCurlyQuote"] = 8217,
["rsquo"] = 8217,
["rsquor"] = 8217,
- ["CloseCurlyQuote"] = 8217,
["lsquor"] = 8218,
["sbquo"] = 8218,
- ["ldquo"] = 8220,
["OpenCurlyDoubleQuote"] = 8220,
+ ["ldquo"] = 8220,
+ ["CloseCurlyDoubleQuote"] = 8221,
["rdquo"] = 8221,
["rdquor"] = 8221,
- ["CloseCurlyDoubleQuote"] = 8221,
- ["ldquor"] = 8222,
["bdquo"] = 8222,
+ ["ldquor"] = 8222,
["dagger"] = 8224,
["Dagger"] = 8225,
["ddagger"] = 8225,
@@ -862,10 +853,11 @@ local character_entities = {
["prime"] = 8242,
["Prime"] = 8243,
["tprime"] = 8244,
- ["bprime"] = 8245,
["backprime"] = 8245,
+ ["bprime"] = 8245,
["lsaquo"] = 8249,
["rsaquo"] = 8250,
+ ["OverBar"] = 8254,
["oline"] = 8254,
["caret"] = 8257,
["hybull"] = 8259,
@@ -873,6 +865,7 @@ local character_entities = {
["bsemi"] = 8271,
["qprime"] = 8279,
["MediumSpace"] = 8287,
+ ["ThickSpace"] = {8287, 8202},
["NoBreak"] = 8288,
["ApplyFunction"] = 8289,
["af"] = 8289,
@@ -881,34 +874,34 @@ local character_entities = {
["InvisibleComma"] = 8291,
["ic"] = 8291,
["euro"] = 8364,
- ["tdot"] = 8411,
["TripleDot"] = 8411,
+ ["tdot"] = 8411,
["DotDot"] = 8412,
["Copf"] = 8450,
["complexes"] = 8450,
["incare"] = 8453,
["gscr"] = 8458,
- ["hamilt"] = 8459,
["HilbertSpace"] = 8459,
["Hscr"] = 8459,
+ ["hamilt"] = 8459,
["Hfr"] = 8460,
["Poincareplane"] = 8460,
- ["quaternions"] = 8461,
["Hopf"] = 8461,
+ ["quaternions"] = 8461,
["planckh"] = 8462,
- ["planck"] = 8463,
["hbar"] = 8463,
- ["plankv"] = 8463,
["hslash"] = 8463,
+ ["planck"] = 8463,
+ ["plankv"] = 8463,
["Iscr"] = 8464,
["imagline"] = 8464,
- ["image"] = 8465,
+ ["Ifr"] = 8465,
["Im"] = 8465,
+ ["image"] = 8465,
["imagpart"] = 8465,
- ["Ifr"] = 8465,
+ ["Laplacetrf"] = 8466,
["Lscr"] = 8466,
["lagran"] = 8466,
- ["Laplacetrf"] = 8466,
["ell"] = 8467,
["Nopf"] = 8469,
["naturals"] = 8469,
@@ -918,40 +911,38 @@ local character_entities = {
["wp"] = 8472,
["Popf"] = 8473,
["primes"] = 8473,
- ["rationals"] = 8474,
["Qopf"] = 8474,
+ ["rationals"] = 8474,
["Rscr"] = 8475,
["realine"] = 8475,
- ["real"] = 8476,
["Re"] = 8476,
- ["realpart"] = 8476,
["Rfr"] = 8476,
- ["reals"] = 8477,
+ ["real"] = 8476,
+ ["realpart"] = 8476,
["Ropf"] = 8477,
+ ["reals"] = 8477,
["rx"] = 8478,
- ["trade"] = 8482,
["TRADE"] = 8482,
- ["integers"] = 8484,
+ ["trade"] = 8482,
["Zopf"] = 8484,
- ["ohm"] = 8486,
+ ["integers"] = 8484,
["mho"] = 8487,
["Zfr"] = 8488,
["zeetrf"] = 8488,
["iiota"] = 8489,
- ["angst"] = 8491,
- ["bernou"] = 8492,
["Bernoullis"] = 8492,
["Bscr"] = 8492,
- ["Cfr"] = 8493,
+ ["bernou"] = 8492,
["Cayleys"] = 8493,
+ ["Cfr"] = 8493,
["escr"] = 8495,
["Escr"] = 8496,
["expectation"] = 8496,
- ["Fscr"] = 8497,
["Fouriertrf"] = 8497,
- ["phmmat"] = 8499,
+ ["Fscr"] = 8497,
["Mellintrf"] = 8499,
["Mscr"] = 8499,
+ ["phmmat"] = 8499,
["order"] = 8500,
["orderof"] = 8500,
["oscr"] = 8500,
@@ -965,8 +956,8 @@ local character_entities = {
["DifferentialD"] = 8518,
["dd"] = 8518,
["ExponentialE"] = 8519,
- ["exponentiale"] = 8519,
["ee"] = 8519,
+ ["exponentiale"] = 8519,
["ImaginaryI"] = 8520,
["ii"] = 8520,
["frac13"] = 8531,
@@ -981,46 +972,47 @@ local character_entities = {
["frac38"] = 8540,
["frac58"] = 8541,
["frac78"] = 8542,
+ ["LeftArrow"] = 8592,
+ ["ShortLeftArrow"] = 8592,
["larr"] = 8592,
["leftarrow"] = 8592,
- ["LeftArrow"] = 8592,
["slarr"] = 8592,
- ["ShortLeftArrow"] = 8592,
+ ["ShortUpArrow"] = 8593,
+ ["UpArrow"] = 8593,
["uarr"] = 8593,
["uparrow"] = 8593,
- ["UpArrow"] = 8593,
- ["ShortUpArrow"] = 8593,
+ ["RightArrow"] = 8594,
+ ["ShortRightArrow"] = 8594,
["rarr"] = 8594,
["rightarrow"] = 8594,
- ["RightArrow"] = 8594,
["srarr"] = 8594,
- ["ShortRightArrow"] = 8594,
- ["darr"] = 8595,
- ["downarrow"] = 8595,
["DownArrow"] = 8595,
["ShortDownArrow"] = 8595,
+ ["darr"] = 8595,
+ ["downarrow"] = 8595,
+ ["LeftRightArrow"] = 8596,
["harr"] = 8596,
["leftrightarrow"] = 8596,
- ["LeftRightArrow"] = 8596,
- ["varr"] = 8597,
- ["updownarrow"] = 8597,
["UpDownArrow"] = 8597,
- ["nwarr"] = 8598,
+ ["updownarrow"] = 8597,
+ ["varr"] = 8597,
["UpperLeftArrow"] = 8598,
+ ["nwarr"] = 8598,
["nwarrow"] = 8598,
- ["nearr"] = 8599,
["UpperRightArrow"] = 8599,
+ ["nearr"] = 8599,
["nearrow"] = 8599,
+ ["LowerRightArrow"] = 8600,
["searr"] = 8600,
["searrow"] = 8600,
- ["LowerRightArrow"] = 8600,
+ ["LowerLeftArrow"] = 8601,
["swarr"] = 8601,
["swarrow"] = 8601,
- ["LowerLeftArrow"] = 8601,
["nlarr"] = 8602,
["nleftarrow"] = 8602,
["nrarr"] = 8603,
["nrightarrow"] = 8603,
+ ["nrarrw"] = {8605, 824},
["rarrw"] = 8605,
["rightsquigarrow"] = 8605,
["Larr"] = 8606,
@@ -1037,27 +1029,27 @@ local character_entities = {
["mapstoleft"] = 8612,
["UpTeeArrow"] = 8613,
["mapstoup"] = 8613,
- ["map"] = 8614,
["RightTeeArrow"] = 8614,
+ ["map"] = 8614,
["mapsto"] = 8614,
["DownTeeArrow"] = 8615,
["mapstodown"] = 8615,
- ["larrhk"] = 8617,
["hookleftarrow"] = 8617,
- ["rarrhk"] = 8618,
+ ["larrhk"] = 8617,
["hookrightarrow"] = 8618,
+ ["rarrhk"] = 8618,
["larrlp"] = 8619,
["looparrowleft"] = 8619,
- ["rarrlp"] = 8620,
["looparrowright"] = 8620,
+ ["rarrlp"] = 8620,
["harrw"] = 8621,
["leftrightsquigarrow"] = 8621,
["nharr"] = 8622,
["nleftrightarrow"] = 8622,
- ["lsh"] = 8624,
["Lsh"] = 8624,
- ["rsh"] = 8625,
+ ["lsh"] = 8624,
["Rsh"] = 8625,
+ ["rsh"] = 8625,
["ldsh"] = 8626,
["rdsh"] = 8627,
["crarr"] = 8629,
@@ -1065,456 +1057,505 @@ local character_entities = {
["curvearrowleft"] = 8630,
["curarr"] = 8631,
["curvearrowright"] = 8631,
- ["olarr"] = 8634,
["circlearrowleft"] = 8634,
- ["orarr"] = 8635,
+ ["olarr"] = 8634,
["circlearrowright"] = 8635,
- ["lharu"] = 8636,
+ ["orarr"] = 8635,
["LeftVector"] = 8636,
["leftharpoonup"] = 8636,
- ["lhard"] = 8637,
- ["leftharpoondown"] = 8637,
+ ["lharu"] = 8636,
["DownLeftVector"] = 8637,
+ ["leftharpoondown"] = 8637,
+ ["lhard"] = 8637,
+ ["RightUpVector"] = 8638,
["uharr"] = 8638,
["upharpoonright"] = 8638,
- ["RightUpVector"] = 8638,
+ ["LeftUpVector"] = 8639,
["uharl"] = 8639,
["upharpoonleft"] = 8639,
- ["LeftUpVector"] = 8639,
- ["rharu"] = 8640,
["RightVector"] = 8640,
+ ["rharu"] = 8640,
["rightharpoonup"] = 8640,
+ ["DownRightVector"] = 8641,
["rhard"] = 8641,
["rightharpoondown"] = 8641,
- ["DownRightVector"] = 8641,
- ["dharr"] = 8642,
["RightDownVector"] = 8642,
+ ["dharr"] = 8642,
["downharpoonright"] = 8642,
- ["dharl"] = 8643,
["LeftDownVector"] = 8643,
+ ["dharl"] = 8643,
["downharpoonleft"] = 8643,
- ["rlarr"] = 8644,
- ["rightleftarrows"] = 8644,
["RightArrowLeftArrow"] = 8644,
- ["udarr"] = 8645,
+ ["rightleftarrows"] = 8644,
+ ["rlarr"] = 8644,
["UpArrowDownArrow"] = 8645,
- ["lrarr"] = 8646,
- ["leftrightarrows"] = 8646,
+ ["udarr"] = 8645,
["LeftArrowRightArrow"] = 8646,
- ["llarr"] = 8647,
+ ["leftrightarrows"] = 8646,
+ ["lrarr"] = 8646,
["leftleftarrows"] = 8647,
- ["uuarr"] = 8648,
+ ["llarr"] = 8647,
["upuparrows"] = 8648,
- ["rrarr"] = 8649,
+ ["uuarr"] = 8648,
["rightrightarrows"] = 8649,
+ ["rrarr"] = 8649,
["ddarr"] = 8650,
["downdownarrows"] = 8650,
- ["lrhar"] = 8651,
["ReverseEquilibrium"] = 8651,
["leftrightharpoons"] = 8651,
- ["rlhar"] = 8652,
- ["rightleftharpoons"] = 8652,
+ ["lrhar"] = 8651,
["Equilibrium"] = 8652,
- ["nlArr"] = 8653,
+ ["rightleftharpoons"] = 8652,
+ ["rlhar"] = 8652,
["nLeftarrow"] = 8653,
- ["nhArr"] = 8654,
+ ["nlArr"] = 8653,
["nLeftrightarrow"] = 8654,
- ["nrArr"] = 8655,
+ ["nhArr"] = 8654,
["nRightarrow"] = 8655,
- ["lArr"] = 8656,
- ["Leftarrow"] = 8656,
+ ["nrArr"] = 8655,
["DoubleLeftArrow"] = 8656,
- ["uArr"] = 8657,
- ["Uparrow"] = 8657,
+ ["Leftarrow"] = 8656,
+ ["lArr"] = 8656,
["DoubleUpArrow"] = 8657,
- ["rArr"] = 8658,
- ["Rightarrow"] = 8658,
- ["Implies"] = 8658,
+ ["Uparrow"] = 8657,
+ ["uArr"] = 8657,
["DoubleRightArrow"] = 8658,
- ["dArr"] = 8659,
- ["Downarrow"] = 8659,
+ ["Implies"] = 8658,
+ ["Rightarrow"] = 8658,
+ ["rArr"] = 8658,
["DoubleDownArrow"] = 8659,
- ["hArr"] = 8660,
- ["Leftrightarrow"] = 8660,
+ ["Downarrow"] = 8659,
+ ["dArr"] = 8659,
["DoubleLeftRightArrow"] = 8660,
+ ["Leftrightarrow"] = 8660,
+ ["hArr"] = 8660,
["iff"] = 8660,
- ["vArr"] = 8661,
- ["Updownarrow"] = 8661,
["DoubleUpDownArrow"] = 8661,
+ ["Updownarrow"] = 8661,
+ ["vArr"] = 8661,
["nwArr"] = 8662,
["neArr"] = 8663,
["seArr"] = 8664,
["swArr"] = 8665,
- ["lAarr"] = 8666,
["Lleftarrow"] = 8666,
- ["rAarr"] = 8667,
+ ["lAarr"] = 8666,
["Rrightarrow"] = 8667,
+ ["rAarr"] = 8667,
["zigrarr"] = 8669,
- ["larrb"] = 8676,
["LeftArrowBar"] = 8676,
- ["rarrb"] = 8677,
+ ["larrb"] = 8676,
["RightArrowBar"] = 8677,
- ["duarr"] = 8693,
+ ["rarrb"] = 8677,
["DownArrowUpArrow"] = 8693,
+ ["duarr"] = 8693,
["loarr"] = 8701,
["roarr"] = 8702,
["hoarr"] = 8703,
- ["forall"] = 8704,
["ForAll"] = 8704,
+ ["forall"] = 8704,
["comp"] = 8705,
["complement"] = 8705,
- ["part"] = 8706,
["PartialD"] = 8706,
- ["exist"] = 8707,
+ ["npart"] = {8706, 824},
+ ["part"] = 8706,
["Exists"] = 8707,
- ["nexist"] = 8708,
+ ["exist"] = 8707,
["NotExists"] = 8708,
+ ["nexist"] = 8708,
["nexists"] = 8708,
["empty"] = 8709,
["emptyset"] = 8709,
["emptyv"] = 8709,
["varnothing"] = 8709,
- ["nabla"] = 8711,
["Del"] = 8711,
- ["isin"] = 8712,
- ["isinv"] = 8712,
+ ["nabla"] = 8711,
["Element"] = 8712,
["in"] = 8712,
- ["notin"] = 8713,
+ ["isin"] = 8712,
+ ["isinv"] = 8712,
["NotElement"] = 8713,
+ ["notin"] = 8713,
["notinva"] = 8713,
- ["niv"] = 8715,
["ReverseElement"] = 8715,
- ["ni"] = 8715,
["SuchThat"] = 8715,
+ ["ni"] = 8715,
+ ["niv"] = 8715,
+ ["NotReverseElement"] = 8716,
["notni"] = 8716,
["notniva"] = 8716,
- ["NotReverseElement"] = 8716,
- ["prod"] = 8719,
["Product"] = 8719,
- ["coprod"] = 8720,
+ ["prod"] = 8719,
["Coproduct"] = 8720,
- ["sum"] = 8721,
+ ["coprod"] = 8720,
["Sum"] = 8721,
+ ["sum"] = 8721,
["minus"] = 8722,
+ ["MinusPlus"] = 8723,
["mnplus"] = 8723,
["mp"] = 8723,
- ["MinusPlus"] = 8723,
- ["plusdo"] = 8724,
["dotplus"] = 8724,
- ["setmn"] = 8726,
- ["setminus"] = 8726,
+ ["plusdo"] = 8724,
["Backslash"] = 8726,
- ["ssetmn"] = 8726,
+ ["setminus"] = 8726,
+ ["setmn"] = 8726,
["smallsetminus"] = 8726,
+ ["ssetmn"] = 8726,
["lowast"] = 8727,
- ["compfn"] = 8728,
["SmallCircle"] = 8728,
- ["radic"] = 8730,
+ ["compfn"] = 8728,
["Sqrt"] = 8730,
+ ["radic"] = 8730,
+ ["Proportional"] = 8733,
["prop"] = 8733,
["propto"] = 8733,
- ["Proportional"] = 8733,
- ["vprop"] = 8733,
["varpropto"] = 8733,
+ ["vprop"] = 8733,
["infin"] = 8734,
["angrt"] = 8735,
["ang"] = 8736,
["angle"] = 8736,
+ ["nang"] = {8736, 8402},
["angmsd"] = 8737,
["measuredangle"] = 8737,
["angsph"] = 8738,
- ["mid"] = 8739,
["VerticalBar"] = 8739,
- ["smid"] = 8739,
+ ["mid"] = 8739,
["shortmid"] = 8739,
- ["nmid"] = 8740,
+ ["smid"] = 8739,
["NotVerticalBar"] = 8740,
- ["nsmid"] = 8740,
+ ["nmid"] = 8740,
["nshortmid"] = 8740,
+ ["nsmid"] = 8740,
+ ["DoubleVerticalBar"] = 8741,
["par"] = 8741,
["parallel"] = 8741,
- ["DoubleVerticalBar"] = 8741,
- ["spar"] = 8741,
["shortparallel"] = 8741,
+ ["spar"] = 8741,
+ ["NotDoubleVerticalBar"] = 8742,
["npar"] = 8742,
["nparallel"] = 8742,
- ["NotDoubleVerticalBar"] = 8742,
- ["nspar"] = 8742,
["nshortparallel"] = 8742,
+ ["nspar"] = 8742,
["and"] = 8743,
["wedge"] = 8743,
["or"] = 8744,
["vee"] = 8744,
["cap"] = 8745,
+ ["caps"] = {8745, 65024},
["cup"] = 8746,
- ["int"] = 8747,
+ ["cups"] = {8746, 65024},
["Integral"] = 8747,
+ ["int"] = 8747,
["Int"] = 8748,
- ["tint"] = 8749,
["iiint"] = 8749,
+ ["tint"] = 8749,
+ ["ContourIntegral"] = 8750,
["conint"] = 8750,
["oint"] = 8750,
- ["ContourIntegral"] = 8750,
["Conint"] = 8751,
["DoubleContourIntegral"] = 8751,
["Cconint"] = 8752,
["cwint"] = 8753,
- ["cwconint"] = 8754,
["ClockwiseContourIntegral"] = 8754,
- ["awconint"] = 8755,
+ ["cwconint"] = 8754,
["CounterClockwiseContourIntegral"] = 8755,
+ ["awconint"] = 8755,
+ ["Therefore"] = 8756,
["there4"] = 8756,
["therefore"] = 8756,
- ["Therefore"] = 8756,
+ ["Because"] = 8757,
["becaus"] = 8757,
["because"] = 8757,
- ["Because"] = 8757,
["ratio"] = 8758,
["Colon"] = 8759,
["Proportion"] = 8759,
- ["minusd"] = 8760,
["dotminus"] = 8760,
+ ["minusd"] = 8760,
["mDDot"] = 8762,
["homtht"] = 8763,
- ["sim"] = 8764,
["Tilde"] = 8764,
- ["thksim"] = 8764,
+ ["nvsim"] = {8764, 8402},
+ ["sim"] = 8764,
["thicksim"] = 8764,
- ["bsim"] = 8765,
+ ["thksim"] = 8764,
["backsim"] = 8765,
+ ["bsim"] = 8765,
+ ["race"] = {8765, 817},
["ac"] = 8766,
+ ["acE"] = {8766, 819},
["mstpos"] = 8766,
["acd"] = 8767,
- ["wreath"] = 8768,
["VerticalTilde"] = 8768,
["wr"] = 8768,
- ["nsim"] = 8769,
+ ["wreath"] = 8768,
["NotTilde"] = 8769,
- ["esim"] = 8770,
+ ["nsim"] = 8769,
["EqualTilde"] = 8770,
+ ["NotEqualTilde"] = {8770, 824},
["eqsim"] = 8770,
- ["sime"] = 8771,
+ ["esim"] = 8770,
+ ["nesim"] = {8770, 824},
["TildeEqual"] = 8771,
+ ["sime"] = 8771,
["simeq"] = 8771,
+ ["NotTildeEqual"] = 8772,
["nsime"] = 8772,
["nsimeq"] = 8772,
- ["NotTildeEqual"] = 8772,
- ["cong"] = 8773,
["TildeFullEqual"] = 8773,
+ ["cong"] = 8773,
["simne"] = 8774,
- ["ncong"] = 8775,
["NotTildeFullEqual"] = 8775,
- ["asymp"] = 8776,
- ["ap"] = 8776,
+ ["ncong"] = 8775,
["TildeTilde"] = 8776,
+ ["ap"] = 8776,
["approx"] = 8776,
- ["thkap"] = 8776,
+ ["asymp"] = 8776,
["thickapprox"] = 8776,
- ["nap"] = 8777,
+ ["thkap"] = 8776,
["NotTildeTilde"] = 8777,
+ ["nap"] = 8777,
["napprox"] = 8777,
["ape"] = 8778,
["approxeq"] = 8778,
["apid"] = 8779,
- ["bcong"] = 8780,
+ ["napid"] = {8779, 824},
["backcong"] = 8780,
- ["asympeq"] = 8781,
+ ["bcong"] = 8780,
["CupCap"] = 8781,
- ["bump"] = 8782,
- ["HumpDownHump"] = 8782,
+ ["asympeq"] = 8781,
+ ["nvap"] = {8781, 8402},
["Bumpeq"] = 8782,
- ["bumpe"] = 8783,
+ ["HumpDownHump"] = 8782,
+ ["NotHumpDownHump"] = {8782, 824},
+ ["bump"] = 8782,
+ ["nbump"] = {8782, 824},
["HumpEqual"] = 8783,
+ ["NotHumpEqual"] = {8783, 824},
+ ["bumpe"] = 8783,
["bumpeq"] = 8783,
- ["esdot"] = 8784,
+ ["nbumpe"] = {8783, 824},
["DotEqual"] = 8784,
["doteq"] = 8784,
- ["eDot"] = 8785,
+ ["esdot"] = 8784,
+ ["nedot"] = {8784, 824},
["doteqdot"] = 8785,
+ ["eDot"] = 8785,
["efDot"] = 8786,
["fallingdotseq"] = 8786,
["erDot"] = 8787,
["risingdotseq"] = 8787,
+ ["Assign"] = 8788,
["colone"] = 8788,
["coloneq"] = 8788,
- ["Assign"] = 8788,
["ecolon"] = 8789,
["eqcolon"] = 8789,
["ecir"] = 8790,
["eqcirc"] = 8790,
- ["cire"] = 8791,
["circeq"] = 8791,
+ ["cire"] = 8791,
["wedgeq"] = 8793,
["veeeq"] = 8794,
- ["trie"] = 8796,
["triangleq"] = 8796,
+ ["trie"] = 8796,
["equest"] = 8799,
["questeq"] = 8799,
- ["ne"] = 8800,
["NotEqual"] = 8800,
- ["equiv"] = 8801,
+ ["ne"] = 8800,
["Congruent"] = 8801,
- ["nequiv"] = 8802,
+ ["bnequiv"] = {8801, 8421},
+ ["equiv"] = 8801,
["NotCongruent"] = 8802,
+ ["nequiv"] = 8802,
["le"] = 8804,
["leq"] = 8804,
- ["ge"] = 8805,
+ ["nvle"] = {8804, 8402},
["GreaterEqual"] = 8805,
+ ["ge"] = 8805,
["geq"] = 8805,
- ["lE"] = 8806,
+ ["nvge"] = {8805, 8402},
["LessFullEqual"] = 8806,
+ ["lE"] = 8806,
["leqq"] = 8806,
- ["gE"] = 8807,
+ ["nlE"] = {8806, 824},
+ ["nleqq"] = {8806, 824},
["GreaterFullEqual"] = 8807,
+ ["NotGreaterFullEqual"] = {8807, 824},
+ ["gE"] = 8807,
["geqq"] = 8807,
+ ["ngE"] = {8807, 824},
+ ["ngeqq"] = {8807, 824},
["lnE"] = 8808,
["lneqq"] = 8808,
+ ["lvertneqq"] = {8808, 65024},
+ ["lvnE"] = {8808, 65024},
["gnE"] = 8809,
["gneqq"] = 8809,
+ ["gvertneqq"] = {8809, 65024},
+ ["gvnE"] = {8809, 65024},
["Lt"] = 8810,
["NestedLessLess"] = 8810,
+ ["NotLessLess"] = {8810, 824},
["ll"] = 8810,
+ ["nLt"] = {8810, 8402},
+ ["nLtv"] = {8810, 824},
["Gt"] = 8811,
["NestedGreaterGreater"] = 8811,
+ ["NotGreaterGreater"] = {8811, 824},
["gg"] = 8811,
- ["twixt"] = 8812,
+ ["nGt"] = {8811, 8402},
+ ["nGtv"] = {8811, 824},
["between"] = 8812,
+ ["twixt"] = 8812,
["NotCupCap"] = 8813,
- ["nlt"] = 8814,
["NotLess"] = 8814,
["nless"] = 8814,
- ["ngt"] = 8815,
+ ["nlt"] = 8814,
["NotGreater"] = 8815,
+ ["ngt"] = 8815,
["ngtr"] = 8815,
- ["nle"] = 8816,
["NotLessEqual"] = 8816,
+ ["nle"] = 8816,
["nleq"] = 8816,
- ["nge"] = 8817,
["NotGreaterEqual"] = 8817,
+ ["nge"] = 8817,
["ngeq"] = 8817,
- ["lsim"] = 8818,
["LessTilde"] = 8818,
["lesssim"] = 8818,
+ ["lsim"] = 8818,
+ ["GreaterTilde"] = 8819,
["gsim"] = 8819,
["gtrsim"] = 8819,
- ["GreaterTilde"] = 8819,
- ["nlsim"] = 8820,
["NotLessTilde"] = 8820,
- ["ngsim"] = 8821,
+ ["nlsim"] = 8820,
["NotGreaterTilde"] = 8821,
- ["lg"] = 8822,
- ["lessgtr"] = 8822,
+ ["ngsim"] = 8821,
["LessGreater"] = 8822,
+ ["lessgtr"] = 8822,
+ ["lg"] = 8822,
+ ["GreaterLess"] = 8823,
["gl"] = 8823,
["gtrless"] = 8823,
- ["GreaterLess"] = 8823,
- ["ntlg"] = 8824,
["NotLessGreater"] = 8824,
- ["ntgl"] = 8825,
+ ["ntlg"] = 8824,
["NotGreaterLess"] = 8825,
- ["pr"] = 8826,
+ ["ntgl"] = 8825,
["Precedes"] = 8826,
+ ["pr"] = 8826,
["prec"] = 8826,
- ["sc"] = 8827,
["Succeeds"] = 8827,
+ ["sc"] = 8827,
["succ"] = 8827,
- ["prcue"] = 8828,
["PrecedesSlantEqual"] = 8828,
+ ["prcue"] = 8828,
["preccurlyeq"] = 8828,
- ["sccue"] = 8829,
["SucceedsSlantEqual"] = 8829,
+ ["sccue"] = 8829,
["succcurlyeq"] = 8829,
- ["prsim"] = 8830,
- ["precsim"] = 8830,
["PrecedesTilde"] = 8830,
+ ["precsim"] = 8830,
+ ["prsim"] = 8830,
+ ["NotSucceedsTilde"] = {8831, 824},
+ ["SucceedsTilde"] = 8831,
["scsim"] = 8831,
["succsim"] = 8831,
- ["SucceedsTilde"] = 8831,
+ ["NotPrecedes"] = 8832,
["npr"] = 8832,
["nprec"] = 8832,
- ["NotPrecedes"] = 8832,
+ ["NotSucceeds"] = 8833,
["nsc"] = 8833,
["nsucc"] = 8833,
- ["NotSucceeds"] = 8833,
+ ["NotSubset"] = {8834, 8402},
+ ["nsubset"] = {8834, 8402},
["sub"] = 8834,
["subset"] = 8834,
+ ["vnsub"] = {8834, 8402},
+ ["NotSuperset"] = {8835, 8402},
+ ["Superset"] = 8835,
+ ["nsupset"] = {8835, 8402},
["sup"] = 8835,
["supset"] = 8835,
- ["Superset"] = 8835,
+ ["vnsup"] = {8835, 8402},
["nsub"] = 8836,
["nsup"] = 8837,
- ["sube"] = 8838,
["SubsetEqual"] = 8838,
+ ["sube"] = 8838,
["subseteq"] = 8838,
+ ["SupersetEqual"] = 8839,
["supe"] = 8839,
["supseteq"] = 8839,
- ["SupersetEqual"] = 8839,
+ ["NotSubsetEqual"] = 8840,
["nsube"] = 8840,
["nsubseteq"] = 8840,
- ["NotSubsetEqual"] = 8840,
+ ["NotSupersetEqual"] = 8841,
["nsupe"] = 8841,
["nsupseteq"] = 8841,
- ["NotSupersetEqual"] = 8841,
["subne"] = 8842,
["subsetneq"] = 8842,
+ ["varsubsetneq"] = {8842, 65024},
+ ["vsubne"] = {8842, 65024},
["supne"] = 8843,
["supsetneq"] = 8843,
+ ["varsupsetneq"] = {8843, 65024},
+ ["vsupne"] = {8843, 65024},
["cupdot"] = 8845,
- ["uplus"] = 8846,
["UnionPlus"] = 8846,
- ["sqsub"] = 8847,
+ ["uplus"] = 8846,
+ ["NotSquareSubset"] = {8847, 824},
["SquareSubset"] = 8847,
+ ["sqsub"] = 8847,
["sqsubset"] = 8847,
- ["sqsup"] = 8848,
+ ["NotSquareSuperset"] = {8848, 824},
["SquareSuperset"] = 8848,
+ ["sqsup"] = 8848,
["sqsupset"] = 8848,
- ["sqsube"] = 8849,
["SquareSubsetEqual"] = 8849,
+ ["sqsube"] = 8849,
["sqsubseteq"] = 8849,
- ["sqsupe"] = 8850,
["SquareSupersetEqual"] = 8850,
+ ["sqsupe"] = 8850,
["sqsupseteq"] = 8850,
- ["sqcap"] = 8851,
["SquareIntersection"] = 8851,
- ["sqcup"] = 8852,
+ ["sqcap"] = 8851,
+ ["sqcaps"] = {8851, 65024},
["SquareUnion"] = 8852,
- ["oplus"] = 8853,
+ ["sqcup"] = 8852,
+ ["sqcups"] = {8852, 65024},
["CirclePlus"] = 8853,
- ["ominus"] = 8854,
+ ["oplus"] = 8853,
["CircleMinus"] = 8854,
- ["otimes"] = 8855,
+ ["ominus"] = 8854,
["CircleTimes"] = 8855,
+ ["otimes"] = 8855,
["osol"] = 8856,
- ["odot"] = 8857,
["CircleDot"] = 8857,
- ["ocir"] = 8858,
+ ["odot"] = 8857,
["circledcirc"] = 8858,
- ["oast"] = 8859,
+ ["ocir"] = 8858,
["circledast"] = 8859,
- ["odash"] = 8861,
+ ["oast"] = 8859,
["circleddash"] = 8861,
- ["plusb"] = 8862,
+ ["odash"] = 8861,
["boxplus"] = 8862,
- ["minusb"] = 8863,
+ ["plusb"] = 8862,
["boxminus"] = 8863,
- ["timesb"] = 8864,
+ ["minusb"] = 8863,
["boxtimes"] = 8864,
- ["sdotb"] = 8865,
+ ["timesb"] = 8864,
["dotsquare"] = 8865,
- ["vdash"] = 8866,
+ ["sdotb"] = 8865,
["RightTee"] = 8866,
- ["dashv"] = 8867,
+ ["vdash"] = 8866,
["LeftTee"] = 8867,
- ["top"] = 8868,
+ ["dashv"] = 8867,
["DownTee"] = 8868,
- ["bottom"] = 8869,
+ ["top"] = 8868,
+ ["UpTee"] = 8869,
["bot"] = 8869,
+ ["bottom"] = 8869,
["perp"] = 8869,
- ["UpTee"] = 8869,
["models"] = 8871,
- ["vDash"] = 8872,
["DoubleRightTee"] = 8872,
+ ["vDash"] = 8872,
["Vdash"] = 8873,
["Vvdash"] = 8874,
["VDash"] = 8875,
@@ -1523,22 +1564,24 @@ local character_entities = {
["nVdash"] = 8878,
["nVDash"] = 8879,
["prurel"] = 8880,
- ["vltri"] = 8882,
- ["vartriangleleft"] = 8882,
["LeftTriangle"] = 8882,
- ["vrtri"] = 8883,
- ["vartriangleright"] = 8883,
+ ["vartriangleleft"] = 8882,
+ ["vltri"] = 8882,
["RightTriangle"] = 8883,
+ ["vartriangleright"] = 8883,
+ ["vrtri"] = 8883,
+ ["LeftTriangleEqual"] = 8884,
["ltrie"] = 8884,
+ ["nvltrie"] = {8884, 8402},
["trianglelefteq"] = 8884,
- ["LeftTriangleEqual"] = 8884,
+ ["RightTriangleEqual"] = 8885,
+ ["nvrtrie"] = {8885, 8402},
["rtrie"] = 8885,
["trianglerighteq"] = 8885,
- ["RightTriangleEqual"] = 8885,
["origof"] = 8886,
["imof"] = 8887,
- ["mumap"] = 8888,
["multimap"] = 8888,
+ ["mumap"] = 8888,
["hercon"] = 8889,
["intcal"] = 8890,
["intercal"] = 8890,
@@ -1546,39 +1589,39 @@ local character_entities = {
["barvee"] = 8893,
["angrtvb"] = 8894,
["lrtri"] = 8895,
- ["xwedge"] = 8896,
["Wedge"] = 8896,
["bigwedge"] = 8896,
- ["xvee"] = 8897,
+ ["xwedge"] = 8896,
["Vee"] = 8897,
["bigvee"] = 8897,
- ["xcap"] = 8898,
+ ["xvee"] = 8897,
["Intersection"] = 8898,
["bigcap"] = 8898,
- ["xcup"] = 8899,
+ ["xcap"] = 8898,
["Union"] = 8899,
["bigcup"] = 8899,
+ ["xcup"] = 8899,
+ ["Diamond"] = 8900,
["diam"] = 8900,
["diamond"] = 8900,
- ["Diamond"] = 8900,
["sdot"] = 8901,
- ["sstarf"] = 8902,
["Star"] = 8902,
- ["divonx"] = 8903,
+ ["sstarf"] = 8902,
["divideontimes"] = 8903,
+ ["divonx"] = 8903,
["bowtie"] = 8904,
["ltimes"] = 8905,
["rtimes"] = 8906,
- ["lthree"] = 8907,
["leftthreetimes"] = 8907,
- ["rthree"] = 8908,
+ ["lthree"] = 8907,
["rightthreetimes"] = 8908,
- ["bsime"] = 8909,
+ ["rthree"] = 8908,
["backsimeq"] = 8909,
- ["cuvee"] = 8910,
+ ["bsime"] = 8909,
["curlyvee"] = 8910,
- ["cuwed"] = 8911,
+ ["cuvee"] = 8910,
["curlywedge"] = 8911,
+ ["cuwed"] = 8911,
["Sub"] = 8912,
["Subset"] = 8912,
["Sup"] = 8913,
@@ -1588,49 +1631,53 @@ local character_entities = {
["fork"] = 8916,
["pitchfork"] = 8916,
["epar"] = 8917,
- ["ltdot"] = 8918,
["lessdot"] = 8918,
+ ["ltdot"] = 8918,
["gtdot"] = 8919,
["gtrdot"] = 8919,
["Ll"] = 8920,
+ ["nLl"] = {8920, 824},
["Gg"] = 8921,
["ggg"] = 8921,
- ["leg"] = 8922,
+ ["nGg"] = {8921, 824},
["LessEqualGreater"] = 8922,
+ ["leg"] = 8922,
+ ["lesg"] = {8922, 65024},
["lesseqgtr"] = 8922,
+ ["GreaterEqualLess"] = 8923,
["gel"] = 8923,
+ ["gesl"] = {8923, 65024},
["gtreqless"] = 8923,
- ["GreaterEqualLess"] = 8923,
["cuepr"] = 8926,
["curlyeqprec"] = 8926,
["cuesc"] = 8927,
["curlyeqsucc"] = 8927,
- ["nprcue"] = 8928,
["NotPrecedesSlantEqual"] = 8928,
- ["nsccue"] = 8929,
+ ["nprcue"] = 8928,
["NotSucceedsSlantEqual"] = 8929,
- ["nsqsube"] = 8930,
+ ["nsccue"] = 8929,
["NotSquareSubsetEqual"] = 8930,
- ["nsqsupe"] = 8931,
+ ["nsqsube"] = 8930,
["NotSquareSupersetEqual"] = 8931,
+ ["nsqsupe"] = 8931,
["lnsim"] = 8934,
["gnsim"] = 8935,
- ["prnsim"] = 8936,
["precnsim"] = 8936,
+ ["prnsim"] = 8936,
["scnsim"] = 8937,
["succnsim"] = 8937,
+ ["NotLeftTriangle"] = 8938,
["nltri"] = 8938,
["ntriangleleft"] = 8938,
- ["NotLeftTriangle"] = 8938,
+ ["NotRightTriangle"] = 8939,
["nrtri"] = 8939,
["ntriangleright"] = 8939,
- ["NotRightTriangle"] = 8939,
+ ["NotLeftTriangleEqual"] = 8940,
["nltrie"] = 8940,
["ntrianglelefteq"] = 8940,
- ["NotLeftTriangleEqual"] = 8940,
+ ["NotRightTriangleEqual"] = 8941,
["nrtrie"] = 8941,
["ntrianglerighteq"] = 8941,
- ["NotRightTriangleEqual"] = 8941,
["vellip"] = 8942,
["ctdot"] = 8943,
["utdot"] = 8944,
@@ -1639,9 +1686,11 @@ local character_entities = {
["isinsv"] = 8947,
["isins"] = 8948,
["isindot"] = 8949,
+ ["notindot"] = {8949, 824},
["notinvc"] = 8950,
["notinvb"] = 8951,
["isinE"] = 8953,
+ ["notinE"] = {8953, 824},
["nisd"] = 8954,
["xnis"] = 8955,
["nis"] = 8956,
@@ -1651,14 +1700,14 @@ local character_entities = {
["barwedge"] = 8965,
["Barwed"] = 8966,
["doublebarwedge"] = 8966,
- ["lceil"] = 8968,
["LeftCeiling"] = 8968,
- ["rceil"] = 8969,
+ ["lceil"] = 8968,
["RightCeiling"] = 8969,
- ["lfloor"] = 8970,
+ ["rceil"] = 8969,
["LeftFloor"] = 8970,
- ["rfloor"] = 8971,
+ ["lfloor"] = 8970,
["RightFloor"] = 8971,
+ ["rfloor"] = 8971,
["drcrop"] = 8972,
["dlcrop"] = 8973,
["urcrop"] = 8974,
@@ -1690,10 +1739,10 @@ local character_entities = {
["lmoustache"] = 9136,
["rmoust"] = 9137,
["rmoustache"] = 9137,
- ["tbrk"] = 9140,
["OverBracket"] = 9140,
- ["bbrk"] = 9141,
+ ["tbrk"] = 9140,
["UnderBracket"] = 9141,
+ ["bbrk"] = 9141,
["bbrktbrk"] = 9142,
["OverParenthesis"] = 9180,
["UnderParenthesis"] = 9181,
@@ -1702,10 +1751,10 @@ local character_entities = {
["trpezium"] = 9186,
["elinters"] = 9191,
["blank"] = 9251,
- ["oS"] = 9416,
["circledS"] = 9416,
- ["boxh"] = 9472,
+ ["oS"] = 9416,
["HorizontalLine"] = 9472,
+ ["boxh"] = 9472,
["boxv"] = 9474,
["boxdr"] = 9484,
["boxdl"] = 9488,
@@ -1751,50 +1800,50 @@ local character_entities = {
["blk14"] = 9617,
["blk12"] = 9618,
["blk34"] = 9619,
+ ["Square"] = 9633,
["squ"] = 9633,
["square"] = 9633,
- ["Square"] = 9633,
- ["squf"] = 9642,
- ["squarf"] = 9642,
- ["blacksquare"] = 9642,
["FilledVerySmallSquare"] = 9642,
+ ["blacksquare"] = 9642,
+ ["squarf"] = 9642,
+ ["squf"] = 9642,
["EmptyVerySmallSquare"] = 9643,
["rect"] = 9645,
["marker"] = 9646,
["fltns"] = 9649,
- ["xutri"] = 9651,
["bigtriangleup"] = 9651,
- ["utrif"] = 9652,
+ ["xutri"] = 9651,
["blacktriangle"] = 9652,
- ["utri"] = 9653,
+ ["utrif"] = 9652,
["triangle"] = 9653,
- ["rtrif"] = 9656,
+ ["utri"] = 9653,
["blacktriangleright"] = 9656,
+ ["rtrif"] = 9656,
["rtri"] = 9657,
["triangleright"] = 9657,
- ["xdtri"] = 9661,
["bigtriangledown"] = 9661,
- ["dtrif"] = 9662,
+ ["xdtri"] = 9661,
["blacktriangledown"] = 9662,
+ ["dtrif"] = 9662,
["dtri"] = 9663,
["triangledown"] = 9663,
- ["ltrif"] = 9666,
["blacktriangleleft"] = 9666,
+ ["ltrif"] = 9666,
["ltri"] = 9667,
["triangleleft"] = 9667,
["loz"] = 9674,
["lozenge"] = 9674,
["cir"] = 9675,
["tridot"] = 9708,
- ["xcirc"] = 9711,
["bigcirc"] = 9711,
+ ["xcirc"] = 9711,
["ultri"] = 9720,
["urtri"] = 9721,
["lltri"] = 9722,
["EmptySmallSquare"] = 9723,
["FilledSmallSquare"] = 9724,
- ["starf"] = 9733,
["bigstar"] = 9733,
+ ["starf"] = 9733,
["star"] = 9734,
["phone"] = 9742,
["female"] = 9792,
@@ -1805,8 +1854,8 @@ local character_entities = {
["clubsuit"] = 9827,
["hearts"] = 9829,
["heartsuit"] = 9829,
- ["diams"] = 9830,
["diamondsuit"] = 9830,
+ ["diams"] = 9830,
["sung"] = 9834,
["flat"] = 9837,
["natur"] = 9838,
@@ -1821,51 +1870,53 @@ local character_entities = {
["VerticalSeparator"] = 10072,
["lbbrk"] = 10098,
["rbbrk"] = 10099,
- ["lobrk"] = 10214,
+ ["bsolhsub"] = 10184,
+ ["suphsol"] = 10185,
["LeftDoubleBracket"] = 10214,
- ["robrk"] = 10215,
+ ["lobrk"] = 10214,
["RightDoubleBracket"] = 10215,
- ["lang"] = 10216,
+ ["robrk"] = 10215,
["LeftAngleBracket"] = 10216,
+ ["lang"] = 10216,
["langle"] = 10216,
- ["rang"] = 10217,
["RightAngleBracket"] = 10217,
+ ["rang"] = 10217,
["rangle"] = 10217,
["Lang"] = 10218,
["Rang"] = 10219,
["loang"] = 10220,
["roang"] = 10221,
- ["xlarr"] = 10229,
- ["longleftarrow"] = 10229,
["LongLeftArrow"] = 10229,
- ["xrarr"] = 10230,
- ["longrightarrow"] = 10230,
+ ["longleftarrow"] = 10229,
+ ["xlarr"] = 10229,
["LongRightArrow"] = 10230,
- ["xharr"] = 10231,
- ["longleftrightarrow"] = 10231,
+ ["longrightarrow"] = 10230,
+ ["xrarr"] = 10230,
["LongLeftRightArrow"] = 10231,
- ["xlArr"] = 10232,
- ["Longleftarrow"] = 10232,
+ ["longleftrightarrow"] = 10231,
+ ["xharr"] = 10231,
["DoubleLongLeftArrow"] = 10232,
- ["xrArr"] = 10233,
- ["Longrightarrow"] = 10233,
+ ["Longleftarrow"] = 10232,
+ ["xlArr"] = 10232,
["DoubleLongRightArrow"] = 10233,
- ["xhArr"] = 10234,
- ["Longleftrightarrow"] = 10234,
+ ["Longrightarrow"] = 10233,
+ ["xrArr"] = 10233,
["DoubleLongLeftRightArrow"] = 10234,
- ["xmap"] = 10236,
+ ["Longleftrightarrow"] = 10234,
+ ["xhArr"] = 10234,
["longmapsto"] = 10236,
+ ["xmap"] = 10236,
["dzigrarr"] = 10239,
["nvlArr"] = 10498,
["nvrArr"] = 10499,
["nvHarr"] = 10500,
["Map"] = 10501,
["lbarr"] = 10508,
- ["rbarr"] = 10509,
["bkarow"] = 10509,
+ ["rbarr"] = 10509,
["lBarr"] = 10510,
- ["rBarr"] = 10511,
["dbkarow"] = 10511,
+ ["rBarr"] = 10511,
["RBarr"] = 10512,
["drbkarow"] = 10512,
["DDotrahd"] = 10513,
@@ -1882,16 +1933,17 @@ local character_entities = {
["rarrbfs"] = 10528,
["nwarhk"] = 10531,
["nearhk"] = 10532,
- ["searhk"] = 10533,
["hksearow"] = 10533,
- ["swarhk"] = 10534,
+ ["searhk"] = 10533,
["hkswarow"] = 10534,
+ ["swarhk"] = 10534,
["nwnear"] = 10535,
["nesear"] = 10536,
["toea"] = 10536,
["seswar"] = 10537,
["tosa"] = 10537,
["swnwar"] = 10538,
+ ["nrarrc"] = {10547, 824},
["rarrc"] = 10547,
["cudarrr"] = 10549,
["ldca"] = 10550,
@@ -1937,10 +1989,10 @@ local character_entities = {
["llhard"] = 10603,
["rharul"] = 10604,
["lrhard"] = 10605,
- ["udhar"] = 10606,
["UpEquilibrium"] = 10606,
- ["duhar"] = 10607,
+ ["udhar"] = 10606,
["ReverseUpEquilibrium"] = 10607,
+ ["duhar"] = 10607,
["RoundImplies"] = 10608,
["erarr"] = 10609,
["simrarr"] = 10610,
@@ -2007,30 +2059,31 @@ local character_entities = {
["trisb"] = 10701,
["rtriltri"] = 10702,
["LeftTriangleBar"] = 10703,
+ ["NotLeftTriangleBar"] = {10703, 824},
+ ["NotRightTriangleBar"] = {10704, 824},
["RightTriangleBar"] = 10704,
- ["race"] = 10714,
["iinfin"] = 10716,
["infintie"] = 10717,
["nvinfin"] = 10718,
["eparsl"] = 10723,
["smeparsl"] = 10724,
["eqvparsl"] = 10725,
- ["lozf"] = 10731,
["blacklozenge"] = 10731,
+ ["lozf"] = 10731,
["RuleDelayed"] = 10740,
["dsol"] = 10742,
- ["xodot"] = 10752,
["bigodot"] = 10752,
- ["xoplus"] = 10753,
+ ["xodot"] = 10752,
["bigoplus"] = 10753,
- ["xotime"] = 10754,
+ ["xoplus"] = 10753,
["bigotimes"] = 10754,
- ["xuplus"] = 10756,
+ ["xotime"] = 10754,
["biguplus"] = 10756,
- ["xsqcup"] = 10758,
+ ["xuplus"] = 10756,
["bigsqcup"] = 10758,
- ["qint"] = 10764,
+ ["xsqcup"] = 10758,
["iiiint"] = 10764,
+ ["qint"] = 10764,
["fpartint"] = 10765,
["cirfnint"] = 10768,
["awint"] = 10769,
@@ -2062,8 +2115,8 @@ local character_entities = {
["triplus"] = 10809,
["triminus"] = 10810,
["tritime"] = 10811,
- ["iprod"] = 10812,
["intprod"] = 10812,
+ ["iprod"] = 10812,
["amalg"] = 10815,
["capdot"] = 10816,
["ncup"] = 10818,
@@ -2093,27 +2146,35 @@ local character_entities = {
["sdote"] = 10854,
["simdot"] = 10858,
["congdot"] = 10861,
+ ["ncongdot"] = {10861, 824},
["easter"] = 10862,
["apacir"] = 10863,
["apE"] = 10864,
+ ["napE"] = {10864, 824},
["eplus"] = 10865,
["pluse"] = 10866,
["Esim"] = 10867,
["Colone"] = 10868,
["Equal"] = 10869,
- ["eDDot"] = 10871,
["ddotseq"] = 10871,
+ ["eDDot"] = 10871,
["equivDD"] = 10872,
["ltcir"] = 10873,
["gtcir"] = 10874,
["ltquest"] = 10875,
["gtquest"] = 10876,
- ["les"] = 10877,
["LessSlantEqual"] = 10877,
+ ["NotLessSlantEqual"] = {10877, 824},
["leqslant"] = 10877,
- ["ges"] = 10878,
+ ["les"] = 10877,
+ ["nleqslant"] = {10877, 824},
+ ["nles"] = {10877, 824},
["GreaterSlantEqual"] = 10878,
+ ["NotGreaterSlantEqual"] = {10878, 824},
["geqslant"] = 10878,
+ ["ges"] = 10878,
+ ["ngeqslant"] = {10878, 824},
+ ["nges"] = {10878, 824},
["lesdot"] = 10879,
["gesdot"] = 10880,
["lesdoto"] = 10881,
@@ -2157,7 +2218,9 @@ local character_entities = {
["simlE"] = 10911,
["simgE"] = 10912,
["LessLess"] = 10913,
+ ["NotNestedLessLess"] = {10913, 824},
["GreaterGreater"] = 10914,
+ ["NotNestedGreaterGreater"] = {10914, 824},
["glj"] = 10916,
["gla"] = 10917,
["ltcc"] = 10918,
@@ -2167,26 +2230,34 @@ local character_entities = {
["smt"] = 10922,
["lat"] = 10923,
["smte"] = 10924,
+ ["smtes"] = {10924, 65024},
["late"] = 10925,
+ ["lates"] = {10925, 65024},
["bumpE"] = 10926,
+ ["NotPrecedesEqual"] = {10927, 824},
+ ["PrecedesEqual"] = 10927,
+ ["npre"] = {10927, 824},
+ ["npreceq"] = {10927, 824},
["pre"] = 10927,
["preceq"] = 10927,
- ["PrecedesEqual"] = 10927,
+ ["NotSucceedsEqual"] = {10928, 824},
+ ["SucceedsEqual"] = 10928,
+ ["nsce"] = {10928, 824},
+ ["nsucceq"] = {10928, 824},
["sce"] = 10928,
["succeq"] = 10928,
- ["SucceedsEqual"] = 10928,
["prE"] = 10931,
["scE"] = 10932,
- ["prnE"] = 10933,
["precneqq"] = 10933,
+ ["prnE"] = 10933,
["scnE"] = 10934,
["succneqq"] = 10934,
["prap"] = 10935,
["precapprox"] = 10935,
["scap"] = 10936,
["succapprox"] = 10936,
- ["prnap"] = 10937,
["precnapprox"] = 10937,
+ ["prnap"] = 10937,
["scnap"] = 10938,
["succnapprox"] = 10938,
["Pr"] = 10939,
@@ -2199,16 +2270,24 @@ local character_entities = {
["supmult"] = 10946,
["subedot"] = 10947,
["supedot"] = 10948,
+ ["nsubE"] = {10949, 824},
+ ["nsubseteqq"] = {10949, 824},
["subE"] = 10949,
["subseteqq"] = 10949,
+ ["nsupE"] = {10950, 824},
+ ["nsupseteqq"] = {10950, 824},
["supE"] = 10950,
["supseteqq"] = 10950,
["subsim"] = 10951,
["supsim"] = 10952,
["subnE"] = 10955,
["subsetneqq"] = 10955,
+ ["varsubsetneqq"] = {10955, 65024},
+ ["vsubnE"] = {10955, 65024},
["supnE"] = 10956,
["supsetneqq"] = 10956,
+ ["varsupsetneqq"] = {10956, 65024},
+ ["vsupnE"] = {10956, 65024},
["csub"] = 10959,
["csup"] = 10960,
["csube"] = 10961,
@@ -2237,6 +2316,7 @@ local character_entities = {
["topcir"] = 10993,
["nhpar"] = 10994,
["parsim"] = 10995,
+ ["nparsl"] = {11005, 8421},
["parsl"] = 11005,
["fflig"] = 64256,
["filig"] = 64257,
@@ -2378,22 +2458,45 @@ local character_entities = {
["zopf"] = 120171,
}
function entities.dec_entity(s)
- return unicode.utf8.char(tonumber(s))
+ local n = tonumber(s)
+ if n == nil then
+ return "&#" .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
end
function entities.hex_entity(s)
- return unicode.utf8.char(tonumber("0x"..s))
+ local n = tonumber("0x"..s)
+ if n == nil then
+ return "&#x" .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
end
-function entities.char_entity(s)
- local n = character_entities[s]
+function entities.hex_entity_with_x_char(x, s)
+ local n = tonumber("0x"..s)
if n == nil then
- return "&" .. s .. ";"
+ return "&#" .. x .. s .. ";" -- fallback for unknown entities
end
return unicode.utf8.char(n)
end
+function entities.char_entity(s)
+ local code_points = character_entities[s]
+ if code_points == nil then
+ return "&" .. s .. ";"
+ end
+ if type(code_points) ~= 'table' then
+ code_points = {code_points}
+ end
+ local char_table = {}
+ for _, code_point in ipairs(code_points) do
+ table.insert(char_table, unicode.utf8.char(code_point))
+ end
+ return table.concat(char_table)
+end
M.writer = {}
function M.writer.new(options)
local self = {}
self.options = options
+ self.flatten_inlines = false
local slice_specifiers = {}
for specifier in options.slice:gmatch("[^%s]+") do
table.insert(slice_specifiers, specifier)
@@ -2441,7 +2544,18 @@ function M.writer.new(options)
if not self.is_writing then return "" end
return "\\markdownRendererInterblockSeparator\n{}"
end
- self.hard_line_break = "\\markdownRendererHardLineBreak\n{}"
+ function self.paragraphsep()
+ if not self.is_writing then return "" end
+ return "\\markdownRendererParagraphSeparator\n{}"
+ end
+ self.soft_line_break = function()
+ if self.flatten_inlines then return "\n" end
+ return "\\markdownRendererSoftLineBreak\n{}"
+ end
+ self.hard_line_break = function()
+ if self.flatten_inlines then return "\n" end
+ return "\\markdownRendererHardLineBreak\n{}"
+ end
self.ellipsis = "\\markdownRendererEllipsis{}"
function self.thematic_break()
if not self.is_writing then return "" end
@@ -2475,11 +2589,18 @@ function M.writer.new(options)
["|"] = "\\markdownRendererPipe{}",
[entities.hex_entity('0000')] = "\\markdownRendererReplacementCharacter{}",
}
- local escape_typographic_text = util.escaper(
+ local function create_escaper(char_escapes, string_escapes)
+ local escape = util.escaper(char_escapes, string_escapes)
+ return function(s)
+ if self.flatten_inlines then return s end
+ return escape(s)
+ end
+ end
+ local escape_typographic_text = create_escaper(
self.escaped_chars, self.escaped_strings)
- local escape_programmatic_text = util.escaper(
+ local escape_programmatic_text = create_escaper(
self.escaped_uri_chars, self.escaped_minimal_strings)
- local escape_minimal = util.escaper(
+ local escape_minimal = create_escaper(
{}, self.escaped_minimal_strings)
self.escape = escape_typographic_text
self.math = escape_minimal
@@ -2487,12 +2608,15 @@ function M.writer.new(options)
self.identifier = escape_minimal
self.string = escape_minimal
self.uri = escape_minimal
+ self.infostring = escape_minimal
else
self.identifier = escape_programmatic_text
self.string = escape_typographic_text
self.uri = escape_programmatic_text
+ self.infostring = escape_programmatic_text
end
function self.code(s, attributes)
+ if self.flatten_inlines then return s end
local buf = {}
if attributes ~= nil then
table.insert(buf,
@@ -2508,6 +2632,7 @@ function M.writer.new(options)
return buf
end
function self.link(lab, src, tit, attributes)
+ if self.flatten_inlines then return lab end
local buf = {}
if attributes ~= nil then
table.insert(buf,
@@ -2525,6 +2650,7 @@ function M.writer.new(options)
return buf
end
function self.image(lab, src, tit, attributes)
+ if self.flatten_inlines then return lab end
local buf = {}
if attributes ~= nil then
table.insert(buf,
@@ -2545,7 +2671,9 @@ function M.writer.new(options)
if not self.is_writing then return "" end
local buffer = {}
for _,item in ipairs(items) do
- buffer[#buffer + 1] = self.bulletitem(item)
+ if item ~= "" then
+ buffer[#buffer + 1] = self.bulletitem(item)
+ end
end
local contents = util.intersperse(buffer,"\n")
if tight and options.tightLists then
@@ -2565,8 +2693,10 @@ function M.writer.new(options)
local buffer = {}
local num = startnum
for _,item in ipairs(items) do
- buffer[#buffer + 1] = self.ordereditem(item,num)
- if num ~= nil then
+ if item ~= "" then
+ buffer[#buffer + 1] = self.ordereditem(item,num)
+ end
+ if num ~= nil and item ~= "" then
num = num + 1
end
end
@@ -2589,14 +2719,11 @@ function M.writer.new(options)
end
end
function self.inline_html_comment(contents)
+ if self.flatten_inlines then return contents end
return {"\\markdownRendererInlineHtmlComment{",contents,"}"}
end
- function self.block_html_comment(contents)
- if not self.is_writing then return "" end
- return {"\\markdownRendererBlockHtmlCommentBegin\n",contents,
- "\n\\markdownRendererBlockHtmlCommentEnd "}
- end
function self.inline_html_tag(contents)
+ if self.flatten_inlines then return contents end
return {"\\markdownRendererInlineHtmlTag{",self.string(contents),"}"}
end
function self.block_html_element(s)
@@ -2605,6 +2732,7 @@ function M.writer.new(options)
return {"\\markdownRendererInputBlockHtmlElement{",name,"}"}
end
function self.emphasis(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererEmphasis{",s,"}"}
end
function self.tickbox(f)
@@ -2617,10 +2745,11 @@ function M.writer.new(options)
end
end
function self.strong(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererStrongEmphasis{",s,"}"}
end
function self.blockquote(s)
- if #util.rope_to_string(s) == 0 then return "" end
+ if not self.is_writing then return "" end
return {"\\markdownRendererBlockQuoteBegin\n",s,
"\n\\markdownRendererBlockQuoteEnd "}
end
@@ -2640,17 +2769,24 @@ function M.writer.new(options)
return buf
end
- function self.attributes(attributes)
- local expanded_attributes = {}
- local key_value_regex = "([^= ]+)%s*=%s*(.*)"
+ local seen_identifiers = {}
+ local key_value_regex = "([^= ]+)%s*=%s*(.*)"
+ local function normalize_attributes(attributes, auto_identifiers)
+ -- normalize attributes
+ local normalized_attributes = {}
+ local has_explicit_identifiers = false
local key, value
- for _, attribute in ipairs(attributes) do
- if attribute:sub(1, 1) == "#" or attribute:sub(1, 1) == "." then
- table.insert(expanded_attributes, attribute)
+ for _, attribute in ipairs(attributes or {}) do
+ if attribute:sub(1, 1) == "#" then
+ table.insert(normalized_attributes, attribute)
+ has_explicit_identifiers = true
+ seen_identifiers[attribute:sub(2)] = true
+ elseif attribute:sub(1, 1) == "." then
+ table.insert(normalized_attributes, attribute)
else
key, value = attribute:match(key_value_regex)
if key:lower() == "id" then
- table.insert(expanded_attributes, "#" .. value)
+ table.insert(normalized_attributes, "#" .. value)
elseif key:lower() == "class" then
local classes = {}
for class in value:gmatch("%S+") do
@@ -2658,23 +2794,67 @@ function M.writer.new(options)
end
table.sort(classes)
for _, class in ipairs(classes) do
- table.insert(expanded_attributes, "." .. class)
+ table.insert(normalized_attributes, "." .. class)
end
else
- table.insert(expanded_attributes, attribute)
+ table.insert(normalized_attributes, attribute)
end
end
end
- table.sort(expanded_attributes)
- local buf = {}
- local seen = {}
- for _, attribute in ipairs(expanded_attributes) do
- if seen[attribute] ~= nil then
- goto continue -- prevent duplicate attributes
- else
- seen[attribute] = true
+ -- if no explicit identifiers exist, add auto identifiers
+ if not has_explicit_identifiers and auto_identifiers ~= nil then
+ local seen_auto_identifiers = {}
+ for _, auto_identifier in ipairs(auto_identifiers) do
+ if seen_auto_identifiers[auto_identifier] == nil then
+ seen_auto_identifiers[auto_identifier] = true
+ if seen_identifiers[auto_identifier] == nil then
+ seen_identifiers[auto_identifier] = true
+ table.insert(normalized_attributes,
+ "#" .. auto_identifier)
+ else
+ local auto_identifier_number = 1
+ while true do
+ local numbered_auto_identifier = auto_identifier .. "-"
+ .. auto_identifier_number
+ if seen_identifiers[numbered_auto_identifier] == nil then
+ seen_identifiers[numbered_auto_identifier] = true
+ table.insert(normalized_attributes,
+ "#" .. numbered_auto_identifier)
+ break
+ end
+ auto_identifier_number = auto_identifier_number + 1
+ end
+ end
+ end
+ end
+ end
+
+ -- sort and deduplicate normalized attributes
+ table.sort(normalized_attributes)
+ local seen_normalized_attributes = {}
+ local deduplicated_normalized_attributes = {}
+ for _, attribute in ipairs(normalized_attributes) do
+ if seen_normalized_attributes[attribute] == nil then
+ seen_normalized_attributes[attribute] = true
+ table.insert(deduplicated_normalized_attributes, attribute)
end
+ end
+
+ return deduplicated_normalized_attributes
+ end
+
+ function self.attributes(attributes, should_normalize_attributes)
+ local normalized_attributes
+ if should_normalize_attributes == false then
+ normalized_attributes = attributes
+ else
+ normalized_attributes = normalize_attributes(attributes)
+ end
+
+ local buf = {}
+ local key, value
+ for _, attribute in ipairs(normalized_attributes) do
if attribute:sub(1, 1) == "#" then
table.insert(buf, {"\\markdownRendererAttributeIdentifier{",
attribute:sub(2), "}"})
@@ -2686,12 +2866,14 @@ function M.writer.new(options)
table.insert(buf, {"\\markdownRendererAttributeKeyValue{",
key, "}{", value, "}"})
end
- ::continue::
end
return buf
end
self.active_attributes = {}
+ self.attribute_type_levels = {}
+ setmetatable(self.attribute_type_levels,
+ { __index = function() return 0 end })
local function apply_attributes()
local buf = {}
for i = 1, #self.active_attributes do
@@ -2715,6 +2897,9 @@ function M.writer.new(options)
end
function self.push_attributes(attribute_type, attributes,
start_output, end_output)
+ local attribute_type_level = self.attribute_type_levels[attribute_type]
+ self.attribute_type_levels[attribute_type] = attribute_type_level + 1
+
-- index attributes in a hash table for easy lookup
attributes = attributes or {}
for i = 1, #attributes do
@@ -2732,7 +2917,6 @@ function M.writer.new(options)
end
if attributes["#" .. self.slice_begin_identifier] ~= nil and
self.slice_begin_type == "^" then
- self.is_writing = true
table.insert(buf, apply_attributes())
self.is_writing = true
end
@@ -2755,6 +2939,8 @@ function M.writer.new(options)
local attributes, _, end_output
current_attribute_type, attributes, _, end_output = table.unpack(
self.active_attributes[#self.active_attributes])
+ local attribute_type_level = self.attribute_type_levels[current_attribute_type]
+ self.attribute_type_levels[current_attribute_type] = attribute_type_level - 1
if self.is_writing and end_output ~= nil then
table.insert(buf, end_output)
end
@@ -2775,47 +2961,151 @@ function M.writer.new(options)
end
return buf
end
- local current_heading_level = 0
+local function create_auto_identifier(s)
+ local buffer = {}
+ local prev_space = false
+ local letter_found = false
+
+ for _, code in utf8.codes(uni_algos.normalize.NFC(s)) do
+ local char = utf8.char(code)
+
+ -- Remove everything up to the first letter.
+ if not letter_found then
+ local is_letter = unicode.utf8.match(char, "%a")
+ if is_letter then
+ letter_found = true
+ else
+ goto continue
+ end
+ end
+
+ -- Remove all non-alphanumeric characters, except underscores, hyphens, and periods.
+ if not unicode.utf8.match(char, "[%w_%-%.%s]") then
+ goto continue
+ end
+
+ -- Replace all spaces and newlines with hyphens.
+ if unicode.utf8.match(char, "[%s\n]") then
+ char = "-"
+ if prev_space then
+ goto continue
+ else
+ prev_space = true
+ end
+ else
+ -- Convert all alphabetic characters to lowercase.
+ char = unicode.utf8.lower(char)
+ prev_space = false
+ end
+
+ table.insert(buffer, char)
+
+ ::continue::
+ end
+
+ if prev_space then
+ table.remove(buffer)
+ end
+
+ local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
+ return identifier
+end
+local function create_gfm_auto_identifier(s)
+ local buffer = {}
+ local prev_space = false
+ local letter_found = false
+
+ for _, code in utf8.codes(uni_algos.normalize.NFC(s)) do
+ local char = utf8.char(code)
+
+ -- Remove everything up to the first non-space.
+ if not letter_found then
+ local is_letter = unicode.utf8.match(char, "%S")
+ if is_letter then
+ letter_found = true
+ else
+ goto continue
+ end
+ end
+
+ -- Remove all non-alphanumeric characters, except underscores and hyphens.
+ if not unicode.utf8.match(char, "[%w_%-%s]") then
+ prev_space = false
+ goto continue
+ end
+
+ -- Replace all spaces and newlines with hyphens.
+ if unicode.utf8.match(char, "[%s\n]") then
+ char = "-"
+ if prev_space then
+ goto continue
+ else
+ prev_space = true
+ end
+ else
+ -- Convert all alphabetic characters to lowercase.
+ char = unicode.utf8.lower(char)
+ prev_space = false
+ end
+
+ table.insert(buffer, char)
+
+ ::continue::
+ end
+
+ if prev_space then
+ table.remove(buffer)
+ end
+
+ local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
+ return identifier
+end
function self.heading(s, level, attributes)
local buf = {}
+ local flat_text, inlines = table.unpack(s)
-- push empty attributes for implied sections
- while current_heading_level < level - 1 do
+ while self.attribute_type_levels["heading"] < level - 1 do
table.insert(buf,
self.push_attributes("heading",
nil,
"\\markdownRendererSectionBegin\n",
"\n\\markdownRendererSectionEnd "))
- current_heading_level = current_heading_level + 1
end
-- pop attributes for sections that have ended
- while current_heading_level >= level do
+ while self.attribute_type_levels["heading"] >= level do
table.insert(buf, self.pop_attributes("heading"))
- current_heading_level = current_heading_level - 1
end
+ -- construct attributes for the new section
+ local auto_identifiers = {}
+ if self.options.autoIdentifiers then
+ table.insert(auto_identifiers, create_auto_identifier(flat_text))
+ end
+ if self.options.gfmAutoIdentifiers then
+ table.insert(auto_identifiers, create_gfm_auto_identifier(flat_text))
+ end
+ local normalized_attributes = normalize_attributes(attributes, auto_identifiers)
+
-- push attributes for the new section
local start_output = {}
local end_output = {}
table.insert(start_output, "\\markdownRendererSectionBegin\n")
- if options.headerAttributes and attributes ~= nil and #attributes > 0 then
- table.insert(start_output,
- "\\markdownRendererHeaderAttributeContextBegin\n")
- table.insert(start_output, self.attributes(attributes))
- table.insert(end_output,
- "\n\\markdownRendererHeaderAttributeContextEnd ")
- end
table.insert(end_output, "\n\\markdownRendererSectionEnd ")
table.insert(buf, self.push_attributes("heading",
- attributes,
+ normalized_attributes,
start_output,
end_output))
- current_heading_level = current_heading_level + 1
- assert(current_heading_level == level)
+ assert(self.attribute_type_levels["heading"] == level)
+
+ -- render the heading and its attributes
+ if self.is_writing and #normalized_attributes > 0 then
+ table.insert(buf, "\\markdownRendererHeaderAttributeContextBegin\n")
+ table.insert(buf, self.attributes(normalized_attributes, false))
+ end
- -- produce the renderer
local cmd
level = level + options.shiftHeadings
if level <= 1 then
@@ -2834,7 +3124,11 @@ function M.writer.new(options)
cmd = ""
end
if self.is_writing then
- table.insert(buf, {cmd, "{", s, "}"})
+ table.insert(buf, {cmd, "{", inlines, "}"})
+ end
+
+ if self.is_writing and #normalized_attributes > 0 then
+ table.insert(buf, "\\markdownRendererHeaderAttributeContextEnd ")
end
return buf
@@ -2842,6 +3136,7 @@ function M.writer.new(options)
function self.get_state()
return {
is_writing=self.is_writing,
+ flatten_inlines=self.flatten_inlines,
active_attributes={table.unpack(self.active_attributes)},
}
end
@@ -2899,14 +3194,13 @@ parsers.tilde = P("~")
parsers.backslash = P("\\")
parsers.tab = P("\t")
parsers.newline = P("\n")
-parsers.tightblocksep = P("\001")
parsers.digit = R("09")
parsers.hexdigit = R("09","af","AF")
parsers.letter = R("AZ","az")
parsers.alphanumeric = R("AZ","az","09")
parsers.keyword = parsers.letter
- * parsers.alphanumeric^0
+ * (parsers.alphanumeric + parsers.dash)^0
parsers.internal_punctuation = S(":;,.?")
parsers.doubleasterisks = P("**")
@@ -2928,8 +3222,7 @@ parsers.nonspacechar = parsers.any - parsers.spacing
parsers.optionalspace = parsers.spacechar^0
parsers.normalchar = parsers.any - (V("SpecialChar")
- + parsers.spacing
- + parsers.tightblocksep)
+ + parsers.spacing)
parsers.eof = -parsers.any
parsers.nonindentspace = parsers.space^-3 * - parsers.spacechar
parsers.indent = parsers.space^-3 * parsers.tab
@@ -2949,6 +3242,549 @@ parsers.spnl = parsers.optionalspace
* (parsers.newline * parsers.optionalspace)^-1
parsers.line = parsers.linechar^0 * parsers.newline
parsers.nonemptyline = parsers.line - parsers.blankline
+
+parsers.leader = parsers.space^-3
+
+local function has_trail(indent_table)
+ return indent_table ~= nil and
+ indent_table.trail ~= nil and
+ next(indent_table.trail) ~= nil
+end
+
+local function has_indents(indent_table)
+ return indent_table ~= nil and
+ indent_table.indents ~= nil and
+ next(indent_table.indents) ~= nil
+end
+
+local function add_trail(indent_table, trail_info)
+ indent_table.trail = trail_info
+ return indent_table
+end
+
+local function remove_trail(indent_table)
+ indent_table.trail = nil
+ return indent_table
+end
+
+local function update_indent_table(indent_table, new_indent, add)
+ indent_table = remove_trail(indent_table)
+
+ if not has_indents(indent_table) then
+ indent_table.indents = {}
+ end
+
+ if add then
+ indent_table.indents[#indent_table.indents + 1] = new_indent
+ else
+ if indent_table.indents[#indent_table.indents].name == new_indent.name then
+ indent_table.indents[#indent_table.indents] = nil
+ end
+ end
+
+ return indent_table
+end
+
+local function remove_indent(name)
+ local function remove_indent_level(s, i, indent_table) -- luacheck: ignore s i
+ indent_table = update_indent_table(indent_table, {name=name}, false)
+ return true, indent_table
+ end
+
+ return Cg(Cmt(Cb("indent_info"), remove_indent_level), "indent_info")
+end
+
+local function process_starter_spacing(indent, spacing, minimum, left_strip_length)
+ left_strip_length = left_strip_length or 0
+
+ local count = 0
+ local tab_value = 4 - (indent) % 4
+
+ local code_started, minimum_found = false, false
+ local code_start, minimum_remainder = "", ""
+
+ local left_total_stripped = 0
+ local full_remainder = ""
+
+ if spacing ~= nil then
+ for i = 1, #spacing do
+ local character = spacing:sub(i, i)
+
+ if character == "\t" then
+ count = count + tab_value
+ tab_value = 4
+ elseif character == " " then
+ count = count + 1
+ tab_value = 4 - (1 - tab_value) % 4
+ end
+
+ if (left_strip_length ~= 0) then
+ local possible_to_strip = math.min(count, left_strip_length)
+ count = count - possible_to_strip
+ left_strip_length = left_strip_length - possible_to_strip
+ left_total_stripped = left_total_stripped + possible_to_strip
+ else
+ full_remainder = full_remainder .. character
+ end
+
+ if (minimum_found) then
+ minimum_remainder = minimum_remainder .. character
+ elseif (count >= minimum) then
+ minimum_found = true
+ minimum_remainder = minimum_remainder .. string.rep(" ", count - minimum)
+ end
+
+ if (code_started) then
+ code_start = code_start .. character
+ elseif (count >= minimum + 4) then
+ code_started = true
+ code_start = code_start .. string.rep(" ", count - (minimum + 4))
+ end
+ end
+ end
+
+ local remainder
+ if (code_started) then
+ remainder = code_start
+ else
+ remainder = string.rep(" ", count - minimum)
+ end
+
+ local is_minimum = count >= minimum
+ return {
+ is_code = code_started,
+ remainder = remainder,
+ left_total_stripped = left_total_stripped,
+ is_minimum = is_minimum,
+ minimum_remainder = minimum_remainder,
+ total_length = count,
+ full_remainder = full_remainder
+ }
+end
+
+local function count_indent_tab_level(indent_table)
+ local count = 0
+ if not has_indents(indent_table) then
+ return count
+ end
+
+ for i=1, #indent_table.indents do
+ count = count + indent_table.indents[i].length
+ end
+ return count
+end
+
+local function total_delimiter_length(delimiter)
+ local count = 0
+ if type(delimiter) == "string" then return #delimiter end
+ for _, value in pairs(delimiter) do
+ count = count + total_delimiter_length(value)
+ end
+ return count
+end
+
+local function process_starter_indent(_, _, indent_table, starter, is_blank, indent_type, breakable)
+ local last_trail = starter[1]
+ local delimiter = starter[2]
+ local raw_new_trail = starter[3]
+
+ if indent_type == "bq" and not breakable then
+ indent_table.ignore_blockquote_blank = true
+ end
+
+ if has_trail(indent_table) then
+ local trail = indent_table.trail
+ if trail.is_code then
+ return false
+ end
+ last_trail = trail.remainder
+ else
+ local sp = process_starter_spacing(0, last_trail, 0, 0)
+
+ if sp.is_code then
+ return false
+ end
+ last_trail = sp.remainder
+ end
+
+ local preceding_indentation = count_indent_tab_level(indent_table) % 4
+ local last_trail_length = #last_trail
+ local delimiter_length = total_delimiter_length(delimiter)
+
+ local total_indent_level = preceding_indentation + last_trail_length + delimiter_length
+
+ local sp = {}
+ if not is_blank then
+ sp = process_starter_spacing(total_indent_level, raw_new_trail, 0, 1)
+ end
+
+ local del_trail_length = sp.left_total_stripped
+ if is_blank then
+ del_trail_length = 1
+ elseif not sp.is_code then
+ del_trail_length = del_trail_length + #sp.remainder
+ end
+
+ local indent_length = last_trail_length + delimiter_length + del_trail_length
+ local new_indent_info = {name=indent_type, length=indent_length}
+
+ indent_table = update_indent_table(indent_table, new_indent_info, true)
+ indent_table = add_trail(indent_table, {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length,
+ full_remainder=sp.full_remainder})
+
+ return true, indent_table
+end
+
+local function decode_pattern(name)
+ local delimeter = parsers.succeed
+ if name == "bq" then
+ delimeter = parsers.more
+ end
+
+ return C(parsers.optionalspace) * C(delimeter) * C(parsers.optionalspace) * Cp()
+end
+
+local function left_blank_starter(indent_table)
+ local blank_starter_index
+
+ if not has_indents(indent_table) then
+ return
+ end
+
+ for i = #indent_table.indents,1,-1 do
+ local value = indent_table.indents[i]
+ if value.name == "li" then
+ blank_starter_index = i
+ else
+ break
+ end
+ end
+
+ return blank_starter_index
+end
+
+local function traverse_indent(s, i, indent_table, is_optional, is_blank)
+ local new_index = i
+
+ local preceding_indentation = 0
+ local current_trail = {}
+
+ local blank_starter = left_blank_starter(indent_table)
+
+ for index = 1,#indent_table.indents do
+ local value = indent_table.indents[index]
+ local pattern = decode_pattern(value.name)
+
+ -- match decoded pattern
+ local new_indent_info = lpeg.match(Ct(pattern), s, new_index)
+ if new_indent_info == nil then
+ local blankline_end = lpeg.match(Ct(parsers.blankline * Cg(Cp(), "pos")), s, new_index)
+ if is_optional or not indent_table.ignore_blockquote_blank or not blankline_end then
+ return is_optional, new_index, current_trail
+ end
+
+ return traverse_indent(s, tonumber(blankline_end.pos), indent_table, is_optional, is_blank)
+ end
+
+ local raw_last_trail = new_indent_info[1]
+ local delimiter = new_indent_info[2]
+ local raw_new_trail = new_indent_info[3]
+ local next_index = new_indent_info[4]
+
+ local space_only = delimiter == ""
+
+ -- check previous trail
+ if not space_only and next(current_trail) == nil then
+ local sp = process_starter_spacing(0, raw_last_trail, 0, 0)
+ current_trail = {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length,
+ full_remainder=sp.full_remainder}
+ end
+
+ if next(current_trail) ~= nil then
+ if not space_only and current_trail.is_code then
+ return is_optional, new_index, current_trail
+ end
+ if current_trail.internal_remainder ~= nil then
+ raw_last_trail = current_trail.internal_remainder
+ end
+ end
+
+ local raw_last_trail_length = 0
+ local delimiter_length = 0
+
+ if not space_only then
+ delimiter_length = #delimiter
+ raw_last_trail_length = #raw_last_trail
+ end
+
+ local total_indent_level = preceding_indentation + raw_last_trail_length + delimiter_length
+
+ local spacing_to_process
+ local minimum = 0
+ local left_strip_length = 0
+
+ if not space_only then
+ spacing_to_process = raw_new_trail
+ left_strip_length = 1
+ else
+ spacing_to_process = raw_last_trail
+ minimum = value.length
+ end
+
+ local sp = process_starter_spacing(total_indent_level, spacing_to_process, minimum, left_strip_length)
+
+ if space_only and not sp.is_minimum then
+ return is_optional or (is_blank and blank_starter <= index), new_index, current_trail
+ end
+
+ local indent_length = raw_last_trail_length + delimiter_length + sp.left_total_stripped
+
+ -- update info for the next pattern
+ if not space_only then
+ preceding_indentation = preceding_indentation + indent_length
+ else
+ preceding_indentation = preceding_indentation + value.length
+ end
+
+ current_trail = {is_code=sp.is_code, remainder=sp.remainder, internal_remainder=sp.minimum_remainder,
+ total_length=sp.total_length, full_remainder=sp.full_remainder}
+ new_index = next_index
+ end
+
+ return true, new_index, current_trail
+end
+
+local function check_trail(expect_code, is_code)
+ return (expect_code and is_code) or (not expect_code and not is_code)
+end
+
+local function check_trail_joined(s, i, indent_table, spacing, expect_code, omit_remainder) -- luacheck: ignore s i
+ local is_code
+ local remainder
+
+ if has_trail(indent_table) then
+ local trail = indent_table.trail
+ is_code = trail.is_code
+ if is_code then
+ remainder = trail.remainder
+ else
+ remainder = trail.full_remainder
+ end
+ else
+ local sp = process_starter_spacing(0, spacing, 0, 0)
+ is_code = sp.is_code
+ if is_code then
+ remainder = sp.remainder
+ else
+ remainder = sp.full_remainder
+ end
+ end
+
+ local result = check_trail(expect_code, is_code)
+ if omit_remainder then
+ return result
+ end
+ return result, remainder
+end
+
+local function check_trail_length(s, i, indent_table, spacing, min, max) -- luacheck: ignore s i
+ local trail
+
+ if has_trail(indent_table) then
+ trail = indent_table.trail
+ else
+ trail = process_starter_spacing(0, spacing, 0, 0)
+ end
+
+ local total_length = trail.total_length
+ if total_length == nil then
+ return false
+ end
+
+ return min <= total_length and total_length <= max
+end
+
+local function check_continuation_indentation(s, i, indent_table, is_optional, is_blank)
+ if not has_indents(indent_table) then
+ return true
+ end
+
+ local passes, new_index, current_trail = traverse_indent(s, i, indent_table, is_optional, is_blank)
+
+ if passes then
+ indent_table = add_trail(indent_table, current_trail)
+ return new_index, indent_table
+ end
+ return false
+end
+
+local function get_last_indent_name(indent_table)
+ if has_indents(indent_table) then
+ return indent_table.indents[#indent_table.indents].name
+ end
+end
+
+local function remove_remainder_if_blank(indent_table, remainder)
+ if get_last_indent_name(indent_table) == "li" then
+ return ""
+ end
+ return remainder
+end
+
+local function check_trail_type(s, i, trail, spacing, trail_type) -- luacheck: ignore s i
+ if trail == nil then
+ trail = process_starter_spacing(0, spacing, 0, 0)
+ end
+
+ if trail_type == "non-code" then
+ return check_trail(false, trail.is_code)
+ end
+ if trail_type == "code" then
+ return check_trail(true, trail.is_code)
+ end
+ if trail_type == "full-code" then
+ if (trail.is_code) then
+ return i, trail.remainder
+ end
+ return i, ""
+ end
+ if trail_type == "full-any" then
+ return i, trail.internal_remainder
+ end
+end
+
+local function trail_freezing(s, i, indent_table, is_freezing) -- luacheck: ignore s i
+ if is_freezing then
+ if indent_table.is_trail_frozen then
+ indent_table.trail = indent_table.frozen_trail
+ else
+ indent_table.frozen_trail = indent_table.trail
+ indent_table.is_trail_frozen = true
+ end
+ else
+ indent_table.frozen_trail = nil
+ indent_table.is_trail_frozen = false
+ end
+ return true, indent_table
+end
+
+local function check_continuation_indentation_and_trail(s, i, indent_table, is_optional, is_blank, trail_type,
+ reset_rem, omit_remainder)
+ if not has_indents(indent_table) then
+ local spacing, new_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i)
+ local result, remainder = check_trail_type(s, i, indent_table.trail, spacing, trail_type)
+ if remainder == nil then
+ if result then
+ return new_index
+ end
+ return false
+ end
+ if result then
+ return new_index, remainder
+ end
+ return false
+ end
+
+ local passes, new_index, current_trail = traverse_indent(s, i, indent_table, is_optional, is_blank)
+
+ if passes then
+ local spacing
+ if current_trail == nil then
+ local newer_spacing, newer_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i)
+ current_trail = process_starter_spacing(0, newer_spacing, 0, 0)
+ new_index = newer_index
+ spacing = newer_spacing
+ else
+ spacing = current_trail.remainder
+ end
+ local result, remainder = check_trail_type(s, new_index, current_trail, spacing, trail_type)
+ if remainder == nil or omit_remainder then
+ if result then
+ return new_index
+ end
+ return false
+ end
+
+ if is_blank and reset_rem then
+ remainder = remove_remainder_if_blank(indent_table, remainder)
+ end
+ if result then
+ return new_index, remainder
+ end
+ return false
+ end
+ return false
+end
+
+parsers.check_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false), check_trail_joined)
+
+parsers.check_trail_no_rem = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false) * Cc(true), check_trail_joined)
+
+parsers.check_code_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(true), check_trail_joined)
+
+parsers.check_trail_length_range = function(min, max)
+ return Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(min) * Cc(max), check_trail_length)
+end
+
+parsers.check_trail_length = function(n)
+ return parsers.check_trail_length_range(n, n)
+end
+
+parsers.freeze_trail = Cg(Cmt(Cb("indent_info") * Cc(true), trail_freezing), "indent_info")
+
+parsers.unfreeze_trail = Cg(Cmt(Cb("indent_info") * Cc(false), trail_freezing), "indent_info")
+
+parsers.check_minimal_indent = Cmt(Cb("indent_info") * Cc(false), check_continuation_indentation)
+
+parsers.check_optional_indent = Cmt(Cb("indent_info") * Cc(true), check_continuation_indentation)
+
+parsers.check_minimal_blank_indent = Cmt(Cb("indent_info") * Cc(false) * Cc(true), check_continuation_indentation)
+
+
+parsers.check_minimal_indent_and_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("non-code") * Cc(true),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_indent_and_code_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("code") * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_full_code_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-code") * Cc(true),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_any_trail_no_rem = Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(true),
+ check_continuation_indentation_and_trail)
+
+parsers.check_optional_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(true) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+parsers.check_optional_blank_indent_and_any_trail = Cmt( Cb("indent_info")
+ * Cc(true) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false),
+ check_continuation_indentation_and_trail)
+
+
+parsers.spnlc_noexc = parsers.optionalspace
+ * (parsers.newline * parsers.check_minimal_indent_and_any_trail)^-1
+
+parsers.spnlc = parsers.optionalspace
+ * (V("EndlineNoSub"))^-1
+
+parsers.spnlc_sep = parsers.optionalspace * V("EndlineNoSub")
+ + parsers.spacechar^1
+
+parsers.only_blank = parsers.spacechar^0 * (parsers.newline + parsers.eof)
+
parsers.commented_line_letter = parsers.linechar
+ parsers.newline
- parsers.backslash
@@ -2995,6 +3831,7 @@ parsers.chunk = parsers.line * (parsers.optionallyindentedline
- parsers.blankline)^0
parsers.attribute_key_char = parsers.alphanumeric + S("-_:.")
+parsers.attribute_raw_char = parsers.alphanumeric + S("-_")
parsers.attribute_key = (parsers.attribute_key_char
- parsers.dash - parsers.digit)
* parsers.attribute_key_char^0
@@ -3006,10 +3843,16 @@ parsers.attribute_value = ( (parsers.dquote / "")
* (parsers.squote / ""))
+ ( parsers.anyescaped - parsers.dquote - parsers.rbrace
- parsers.space)^0
+parsers.attribute_identifier = parsers.attribute_key_char^1
+parsers.attribute_classname = parsers.letter
+ * parsers.attribute_key_char^0
+parsers.attribute_raw = parsers.attribute_raw_char^1
parsers.attribute = (parsers.dash * Cc(".unnumbered"))
- + C((parsers.hash + parsers.period)
- * parsers.attribute_key)
+ + C( parsers.hash
+ * parsers.attribute_identifier)
+ + C( parsers.period
+ * parsers.attribute_classname)
+ Cs( parsers.attribute_key
* parsers.optionalspace * parsers.equal * parsers.optionalspace
* parsers.attribute_value)
@@ -3024,7 +3867,7 @@ parsers.attributes = parsers.lbrace
parsers.raw_attribute = parsers.lbrace
* parsers.optionalspace
* parsers.equal
- * C(parsers.attribute_key)
+ * C(parsers.attribute_raw)
* parsers.optionalspace
* parsers.rbrace
@@ -3035,18 +3878,31 @@ parsers.indented_blocks = function(bl)
* (parsers.blankline^1 * parsers.indent * -parsers.blankline * bl)^0
* (parsers.blankline^1 + parsers.eof) )
end
-parsers.bulletchar = C(parsers.plus + parsers.asterisk + parsers.dash)
+local function repeat_between(pattern, min, max)
+ return -pattern^(max + 1) * pattern^min
+end
-parsers.bullet = ( parsers.bulletchar * #parsers.spacing
- * (parsers.tab + parsers.space^-3)
- + parsers.space * parsers.bulletchar * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.space * parsers.space * parsers.bulletchar
- * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * parsers.space
- * parsers.bulletchar * #parsers.spacing
- )
+parsers.hexentity = parsers.ampersand * parsers.hash * C(S("Xx"))
+ * C(repeat_between(parsers.hexdigit, 1, 6)) * parsers.semicolon
+parsers.decentity = parsers.ampersand * parsers.hash
+ * C(repeat_between(parsers.digit, 1, 7)) * parsers.semicolon
+parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1)
+ * parsers.semicolon
+
+parsers.html_entities = parsers.hexentity / entities.hex_entity_with_x_char
+ + parsers.decentity / entities.dec_entity
+ + parsers.tagentity / entities.char_entity
+parsers.bullet = function(bullet_char, interrupting)
+ local allowed_end
+ if interrupting then
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ end
+ return parsers.check_trail
+ * Ct(C(bullet_char) * Cc(""))
+ * allowed_end
+end
local function tickbox(interior)
return parsers.optionalspace * parsers.lbracket
@@ -3063,18 +3919,439 @@ local function captures_equal_length(_,i,a,b)
return #a == #b and i
end
-parsers.closeticks = parsers.space^-1
- * Cmt(C(parsers.backtick^1)
- * Cb("ticks"), captures_equal_length)
+parsers.closeticks = Cmt(C(parsers.backtick^1)
+ * Cb("ticks"), captures_equal_length)
-parsers.intickschar = (parsers.any - S(" \n\r`"))
- + (parsers.newline * -parsers.blankline)
- + (parsers.space - parsers.closeticks)
+parsers.intickschar = (parsers.any - S("\n\r`"))
+ + V("NoSoftLineBreakEndline")
+ (parsers.backtick^1 - parsers.closeticks)
-parsers.inticks = parsers.openticks * parsers.space^-1
- * C(parsers.intickschar^0) * parsers.closeticks
-parsers.leader = parsers.space^-3
+local function process_inticks(s)
+ s = s:gsub("\n", " ")
+ s = s:gsub("^ (.*) $", "%1")
+ return s
+end
+
+parsers.inticks = parsers.openticks
+ * C(parsers.space^0)
+ * parsers.closeticks
+ + parsers.openticks
+ * Cs(Cs(parsers.intickschar^0) / process_inticks)
+ * parsers.closeticks
+
+-- case-insensitive match (we assume s is lowercase). must be single byte encoding
+parsers.keyword_exact = function(s)
+ local parser = P(0)
+ for i=1,#s do
+ local c = s:sub(i,i)
+ local m = c .. upper(c)
+ parser = parser * S(m)
+ end
+ return parser
+end
+
+parsers.special_block_keyword =
+ parsers.keyword_exact("pre") +
+ parsers.keyword_exact("script") +
+ parsers.keyword_exact("style") +
+ parsers.keyword_exact("textarea")
+
+parsers.block_keyword =
+ parsers.keyword_exact("address") +
+ parsers.keyword_exact("article") +
+ parsers.keyword_exact("aside") +
+ parsers.keyword_exact("base") +
+ parsers.keyword_exact("basefont") +
+ parsers.keyword_exact("blockquote") +
+ parsers.keyword_exact("body") +
+ parsers.keyword_exact("caption") +
+ parsers.keyword_exact("center") +
+ parsers.keyword_exact("col") +
+ parsers.keyword_exact("colgroup") +
+ parsers.keyword_exact("dd") +
+ parsers.keyword_exact("details") +
+ parsers.keyword_exact("dialog") +
+ parsers.keyword_exact("dir") +
+ parsers.keyword_exact("div") +
+ parsers.keyword_exact("dl") +
+ parsers.keyword_exact("dt") +
+ parsers.keyword_exact("fieldset") +
+ parsers.keyword_exact("figcaption") +
+ parsers.keyword_exact("figure") +
+ parsers.keyword_exact("footer") +
+ parsers.keyword_exact("form") +
+ parsers.keyword_exact("frame") +
+ parsers.keyword_exact("frameset") +
+ parsers.keyword_exact("h1") +
+ parsers.keyword_exact("h2") +
+ parsers.keyword_exact("h3") +
+ parsers.keyword_exact("h4") +
+ parsers.keyword_exact("h5") +
+ parsers.keyword_exact("h6") +
+ parsers.keyword_exact("head") +
+ parsers.keyword_exact("header") +
+ parsers.keyword_exact("hr") +
+ parsers.keyword_exact("html") +
+ parsers.keyword_exact("iframe") +
+ parsers.keyword_exact("legend") +
+ parsers.keyword_exact("li") +
+ parsers.keyword_exact("link") +
+ parsers.keyword_exact("main") +
+ parsers.keyword_exact("menu") +
+ parsers.keyword_exact("menuitem") +
+ parsers.keyword_exact("nav") +
+ parsers.keyword_exact("noframes") +
+ parsers.keyword_exact("ol") +
+ parsers.keyword_exact("optgroup") +
+ parsers.keyword_exact("option") +
+ parsers.keyword_exact("p") +
+ parsers.keyword_exact("param") +
+ parsers.keyword_exact("section") +
+ parsers.keyword_exact("source") +
+ parsers.keyword_exact("summary") +
+ parsers.keyword_exact("table") +
+ parsers.keyword_exact("tbody") +
+ parsers.keyword_exact("td") +
+ parsers.keyword_exact("tfoot") +
+ parsers.keyword_exact("th") +
+ parsers.keyword_exact("thead") +
+ parsers.keyword_exact("title") +
+ parsers.keyword_exact("tr") +
+ parsers.keyword_exact("track") +
+ parsers.keyword_exact("ul")
+
+-- end conditions
+parsers.html_blankline_end_condition = parsers.linechar^0
+ * ( parsers.newline
+ * (parsers.check_minimal_blank_indent_and_any_trail
+ * #parsers.blankline
+ + parsers.check_minimal_indent_and_any_trail)
+ * parsers.linechar^1)^0
+ * (parsers.newline^-1 / "")
+
+local function remove_trailing_blank_lines(s)
+ return s:gsub("[\n\r]+%s*$", "")
+end
+
+parsers.html_until_end = function(end_marker)
+ return Cs(Cs((parsers.newline
+ * (parsers.check_minimal_blank_indent_and_any_trail
+ * #parsers.blankline
+ + parsers.check_minimal_indent_and_any_trail)
+ + parsers.linechar - end_marker)^0
+ * parsers.linechar^0 * parsers.newline^-1)
+ / remove_trailing_blank_lines)
+end
+
+-- attributes
+parsers.html_attribute_spacing = parsers.optionalspace
+ * V("NoSoftLineBreakEndline")
+ * parsers.optionalspace
+ + parsers.spacechar^1
+
+parsers.html_attribute_name = (parsers.letter + parsers.colon + parsers.underscore)
+ * (parsers.alphanumeric + parsers.colon + parsers.underscore
+ + parsers.period + parsers.dash)^0
+
+parsers.html_attribute_value = parsers.squote
+ * (parsers.linechar - parsers.squote)^0
+ * parsers.squote
+ + parsers.dquote
+ * (parsers.linechar - parsers.dquote)^0
+ * parsers.dquote
+ + ( parsers.any - parsers.spacechar - parsers.newline
+ - parsers.dquote - parsers.squote - parsers.backtick
+ - parsers.equal - parsers.less - parsers.more)^1
+
+parsers.html_inline_attribute_value = parsers.squote
+ * (V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.blankline^2
+ - parsers.squote)^0
+ * parsers.squote
+ + parsers.dquote
+ * (V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.blankline^2
+ - parsers.dquote)^0
+ * parsers.dquote
+ + (parsers.any - parsers.spacechar - parsers.newline
+ - parsers.dquote - parsers.squote - parsers.backtick
+ - parsers.equal - parsers.less - parsers.more)^1
+
+parsers.html_attribute_value_specification = parsers.optionalspace
+ * parsers.equal
+ * parsers.optionalspace
+ * parsers.html_attribute_value
+
+parsers.html_spnl = parsers.optionalspace
+ * (V("NoSoftLineBreakEndline") * parsers.optionalspace)^-1
+
+parsers.html_inline_attribute_value_specification = parsers.html_spnl
+ * parsers.equal
+ * parsers.html_spnl
+ * parsers.html_inline_attribute_value
+
+parsers.html_attribute = parsers.html_attribute_spacing
+ * parsers.html_attribute_name
+ * parsers.html_inline_attribute_value_specification^-1
+
+parsers.html_non_newline_attribute = parsers.spacechar^1
+ * parsers.html_attribute_name
+ * parsers.html_attribute_value_specification^-1
+
+parsers.nested_breaking_blank = parsers.newline
+ * parsers.check_minimal_blank_indent
+ * parsers.blankline
+
+parsers.html_comment_start = P("<!--")
+
+parsers.html_comment_end = P("-->")
+
+parsers.html_comment = Cs( parsers.html_comment_start
+ * parsers.html_until_end(parsers.html_comment_end))
+
+parsers.html_inline_comment = (parsers.html_comment_start / "")
+ * -P(">") * -P("->")
+ * Cs((V("NoSoftLineBreakEndline") + parsers.any - P("--")
+ - parsers.nested_breaking_blank - parsers.html_comment_end)^0)
+ * (parsers.html_comment_end / "")
+
+parsers.html_cdatasection_start = P("<![CDATA[")
+
+parsers.html_cdatasection_end = P("]]>")
+
+parsers.html_cdatasection = Cs( parsers.html_cdatasection_start
+ * parsers.html_until_end(parsers.html_cdatasection_end))
+
+parsers.html_inline_cdatasection = parsers.html_cdatasection_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_cdatasection_end)^0
+ * parsers.html_cdatasection_end
+
+parsers.html_declaration_start = P("<!") * parsers.letter
+
+parsers.html_declaration_end = P(">")
+
+parsers.html_declaration = Cs( parsers.html_declaration_start
+ * parsers.html_until_end(parsers.html_declaration_end))
+
+parsers.html_inline_declaration = parsers.html_declaration_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_declaration_end)^0
+ * parsers.html_declaration_end
+
+parsers.html_instruction_start = P("<?")
+
+parsers.html_instruction_end = P("?>")
+
+parsers.html_instruction = Cs( parsers.html_instruction_start
+ * parsers.html_until_end(parsers.html_instruction_end))
+
+parsers.html_inline_instruction = parsers.html_instruction_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_instruction_end)^0
+ * parsers.html_instruction_end
+
+parsers.html_blankline = parsers.newline
+ * parsers.optionalspace
+ * parsers.newline
+
+parsers.html_tag_start = parsers.less
+
+parsers.html_tag_closing_start = parsers.less
+ * parsers.slash
+
+parsers.html_tag_end = parsers.html_spnl
+ * parsers.more
+
+parsers.html_empty_tag_end = parsers.html_spnl
+ * parsers.slash
+ * parsers.more
+
+-- opening tags
+parsers.html_any_open_inline_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_any_open_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_non_newline_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_open_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_open_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+-- incomplete tags
+parsers.incomplete_tag_following = parsers.spacechar
+ + parsers.more
+ + parsers.slash * parsers.more
+ + #(parsers.newline + parsers.eof)
+
+parsers.incomplete_special_tag_following = parsers.spacechar
+ + parsers.more
+ + #(parsers.newline + parsers.eof)
+
+parsers.html_incomplete_open_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.incomplete_tag_following
+
+parsers.html_incomplete_open_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.incomplete_special_tag_following
+
+parsers.html_incomplete_close_tag = parsers.html_tag_closing_start
+ * parsers.block_keyword
+ * parsers.incomplete_tag_following
+
+parsers.html_incomplete_close_special_tag = parsers.html_tag_closing_start
+ * parsers.special_block_keyword
+ * parsers.incomplete_tag_following
+
+-- closing tags
+parsers.html_close_tag = parsers.html_tag_closing_start
+ * parsers.block_keyword
+ * parsers.html_tag_end
+
+parsers.html_any_close_tag = parsers.html_tag_closing_start
+ * parsers.keyword
+ * parsers.html_tag_end
+
+parsers.html_close_special_tag = parsers.html_tag_closing_start
+ * parsers.special_block_keyword
+ * parsers.html_tag_end
+
+-- empty tags
+parsers.html_any_empty_inline_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_any_empty_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_non_newline_attribute^0
+ * parsers.optionalspace
+ * parsers.slash
+ * parsers.more
+
+parsers.html_empty_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_empty_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_incomplete_blocks = parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_open_special_tag
+ + parsers.html_incomplete_close_tag
+
+-- parse special html blocks
+parsers.html_blankline_ending_special_block_opening = (parsers.html_close_special_tag
+ + parsers.html_empty_special_tag)
+ * #(parsers.optionalspace
+ * (parsers.newline + parsers.eof))
+
+parsers.html_blankline_ending_special_block = parsers.html_blankline_ending_special_block_opening
+ * parsers.html_blankline_end_condition
+
+parsers.html_special_block_opening = parsers.html_incomplete_open_special_tag
+ - parsers.html_empty_special_tag
+
+parsers.html_closing_special_block = parsers.html_special_block_opening
+ * parsers.html_until_end(parsers.html_close_special_tag)
+
+parsers.html_special_block = parsers.html_blankline_ending_special_block
+ + parsers.html_closing_special_block
+
+-- parse html blocks
+parsers.html_block_opening = parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_close_tag
+
+parsers.html_block = parsers.html_block_opening
+ * parsers.html_blankline_end_condition
+
+-- parse any html blocks
+parsers.html_any_block_opening = (parsers.html_any_open_tag
+ + parsers.html_any_close_tag
+ + parsers.html_any_empty_tag)
+ * #(parsers.optionalspace * (parsers.newline + parsers.eof))
+
+parsers.html_any_block = parsers.html_any_block_opening
+ * parsers.html_blankline_end_condition
+
+parsers.html_inline_comment_full = parsers.html_comment_start
+ * -P(">") * -P("->")
+ * Cs((V("NoSoftLineBreakEndline") + parsers.any - P("--")
+ - parsers.nested_breaking_blank - parsers.html_comment_end)^0)
+ * parsers.html_comment_end
+
+parsers.html_inline_tags = parsers.html_inline_comment_full
+ + parsers.html_any_empty_inline_tag
+ + parsers.html_inline_instruction
+ + parsers.html_inline_cdatasection
+ + parsers.html_inline_declaration
+ + parsers.html_any_open_inline_tag
+ + parsers.html_any_close_tag
+
+parsers.urlchar = parsers.anyescaped
+ - parsers.newline
+ - parsers.more
+
+parsers.auto_link_scheme_part = parsers.alphanumeric
+ + parsers.plus
+ + parsers.period
+ + parsers.dash
+
+parsers.auto_link_scheme = parsers.letter
+ * parsers.auto_link_scheme_part
+ * parsers.auto_link_scheme_part^-30
+
+parsers.absolute_uri = parsers.auto_link_scheme * parsers.colon
+ * (parsers.any - parsers.spacing - parsers.less - parsers.more)^0
+
+parsers.printable_characters = S(".!#$%&'*+/=?^_`{|}~-")
+
+parsers.email_address_local_part_char = parsers.alphanumeric
+ + parsers.printable_characters
+
+parsers.email_address_local_part = parsers.email_address_local_part_char^1
+
+parsers.email_address_dns_label = parsers.alphanumeric
+ * (parsers.alphanumeric + parsers.dash)^-62
+ * B(parsers.alphanumeric)
+
+parsers.email_address_domain = parsers.email_address_dns_label
+ * (parsers.period * parsers.email_address_dns_label)^0
+
+parsers.email_address = parsers.email_address_local_part
+ * parsers.at
+ * parsers.email_address_domain
+
+parsers.auto_link_url = parsers.less
+ * C(parsers.absolute_uri)
+ * parsers.more
+
+parsers.auto_link_email = parsers.less
+ * C(parsers.email_address)
+ * parsers.more
+
+parsers.auto_link_relative_reference = parsers.less
+ * C(parsers.urlchar^1)
+ * parsers.more
+
+parsers.autolink = parsers.auto_link_url
+ + parsers.auto_link_email
-- content in balanced brackets, parentheses, or quotes:
parsers.bracketed = P{ parsers.lbracket
@@ -3104,161 +4381,89 @@ parsers.dquoted = P{ parsers.dquote * parsers.alphanumeric
) + V(1))^0
* parsers.dquote }
--- bracketed tag for markdown links, allowing nested brackets:
-parsers.tag = parsers.lbracket
+parsers.link_text = parsers.lbracket
* Cs((parsers.alphanumeric^1
- + parsers.bracketed
- + parsers.inticks
- + ( parsers.backslash / "" * parsers.rbracket
- + parsers.any
- - (parsers.rbracket + parsers.blankline^2)))^0)
+ + parsers.bracketed
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.any
+ - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^0)
* parsers.rbracket
+parsers.link_label = parsers.lbracket
+ * -#(parsers.sp * parsers.rbracket)
+ * #((parsers.any - parsers.rbracket)^-999 * parsers.rbracket)
+ * Cs((parsers.alphanumeric^1
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.any
+ - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^1)
+ * parsers.rbracket
+
+parsers.inparens_url = P{ parsers.lparent
+ * ((parsers.anyescaped - (parsers.lparent
+ + parsers.rparent
+ + parsers.spacing)
+ ) + V(1))^0
+ * parsers.rparent }
+
-- url for markdown links, allowing nested brackets:
parsers.url = parsers.less * Cs((parsers.anyescaped
+ - parsers.newline
+ - parsers.less
- parsers.more)^0)
* parsers.more
- + Cs((parsers.inparens + (parsers.anyescaped
- - parsers.spacing
- - parsers.rparent))^1)
-
--- quoted text, possibly with nested quotes:
-parsers.title_s = parsers.squote * Cs(((parsers.anyescaped-parsers.squote)
- + parsers.squoted)^0)
- * parsers.squote
-
-parsers.title_d = parsers.dquote * Cs(((parsers.anyescaped-parsers.dquote)
- + parsers.dquoted)^0)
- * parsers.dquote
+ + -parsers.less
+ * Cs((parsers.inparens_url + (parsers.anyescaped
+ - parsers.spacing
+ - parsers.lparent
+ - parsers.rparent))^1)
+
+-- quoted text:
+parsers.title_s = parsers.squote
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.anyescaped - parsers.newline - parsers.squote - parsers.blankline^2))^0)
+ * parsers.squote
+
+parsers.title_d = parsers.dquote
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.anyescaped - parsers.newline - parsers.dquote - parsers.blankline^2))^0)
+ * parsers.dquote
parsers.title_p = parsers.lparent
- * Cs((parsers.inparens + (parsers.anyescaped-parsers.rparent))^0)
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.anyescaped - parsers.newline - parsers.lparent - parsers.rparent
+ - parsers.blankline^2))^0)
* parsers.rparent
parsers.title = parsers.title_d + parsers.title_s + parsers.title_p
parsers.optionaltitle
- = parsers.spnl * parsers.title * parsers.spacechar^0
+ = parsers.spnlc * parsers.title * parsers.spacechar^0
+ Cc("")
-parsers.indirect_link
- = parsers.tag
- * ( C(parsers.spnl) * parsers.tag
- + Cc(nil) * Cc(nil) -- always produce exactly two captures
- )
-
-parsers.indirect_image
- = parsers.exclamation * parsers.indirect_link
--- case-insensitive match (we assume s is lowercase). must be single byte encoding
-parsers.keyword_exact = function(s)
- local parser = P(0)
- for i=1,#s do
- local c = s:sub(i,i)
- local m = c .. upper(c)
- parser = parser * S(m)
- end
- return parser
-end
-
-parsers.block_keyword =
- parsers.keyword_exact("address") + parsers.keyword_exact("blockquote") +
- parsers.keyword_exact("center") + parsers.keyword_exact("del") +
- parsers.keyword_exact("dir") + parsers.keyword_exact("div") +
- parsers.keyword_exact("p") + parsers.keyword_exact("pre") +
- parsers.keyword_exact("li") + parsers.keyword_exact("ol") +
- parsers.keyword_exact("ul") + parsers.keyword_exact("dl") +
- parsers.keyword_exact("dd") + parsers.keyword_exact("form") +
- parsers.keyword_exact("fieldset") + parsers.keyword_exact("isindex") +
- parsers.keyword_exact("ins") + parsers.keyword_exact("menu") +
- parsers.keyword_exact("noframes") + parsers.keyword_exact("frameset") +
- parsers.keyword_exact("h1") + parsers.keyword_exact("h2") +
- parsers.keyword_exact("h3") + parsers.keyword_exact("h4") +
- parsers.keyword_exact("h5") + parsers.keyword_exact("h6") +
- parsers.keyword_exact("hr") + parsers.keyword_exact("script") +
- parsers.keyword_exact("noscript") + parsers.keyword_exact("table") +
- parsers.keyword_exact("tbody") + parsers.keyword_exact("tfoot") +
- parsers.keyword_exact("thead") + parsers.keyword_exact("th") +
- parsers.keyword_exact("td") + parsers.keyword_exact("tr")
-
--- There is no reason to support bad html, so we expect quoted attributes
-parsers.htmlattributevalue
- = parsers.squote * (parsers.any - (parsers.blankline
- + parsers.squote))^0
- * parsers.squote
- + parsers.dquote * (parsers.any - (parsers.blankline
- + parsers.dquote))^0
- * parsers.dquote
-
-parsers.htmlattribute = parsers.spacing^1
- * (parsers.alphanumeric + S("_-"))^1
- * parsers.sp * parsers.equal * parsers.sp
- * parsers.htmlattributevalue
-
-parsers.htmlcomment = P("<!--")
- * parsers.optionalspace
- * Cs((parsers.any - parsers.optionalspace * P("-->"))^0)
- * parsers.optionalspace
- * P("-->")
-
-parsers.htmlinstruction = P("<?") * (parsers.any - P("?>"))^0 * P("?>")
-
-parsers.openelt_any = parsers.less * parsers.keyword * parsers.htmlattribute^0
- * parsers.sp * parsers.more
-
-parsers.openelt_exact = function(s)
- return parsers.less * parsers.sp * parsers.keyword_exact(s)
- * parsers.htmlattribute^0 * parsers.sp * parsers.more
-end
-
-parsers.openelt_block = parsers.sp * parsers.block_keyword
- * parsers.htmlattribute^0 * parsers.sp * parsers.more
-
-parsers.closeelt_any = parsers.less * parsers.sp * parsers.slash
- * parsers.keyword * parsers.sp * parsers.more
-
-parsers.closeelt_exact = function(s)
- return parsers.less * parsers.sp * parsers.slash * parsers.keyword_exact(s)
- * parsers.sp * parsers.more
-end
-
-parsers.emptyelt_any = parsers.less * parsers.sp * parsers.keyword
- * parsers.htmlattribute^0 * parsers.sp * parsers.slash
- * parsers.more
-
-parsers.emptyelt_block = parsers.less * parsers.sp * parsers.block_keyword
- * parsers.htmlattribute^0 * parsers.sp * parsers.slash
- * parsers.more
-
-parsers.displaytext = (parsers.any - parsers.less)^1
-
--- return content between two matched HTML tags
-parsers.in_matched = function(s)
- return { parsers.openelt_exact(s)
- * (V(1) + parsers.displaytext
- + (parsers.less - parsers.closeelt_exact(s)))^0
- * parsers.closeelt_exact(s) }
-end
-
-local function parse_matched_tags(s,pos)
- local t = string.lower(lpeg.match(C(parsers.keyword),s,pos))
- return lpeg.match(parsers.in_matched(t),s,pos-1)
-end
-
-parsers.in_matched_block_tags = parsers.less
- * Cmt(#parsers.openelt_block, parse_matched_tags)
-
-parsers.hexentity = parsers.ampersand * parsers.hash * S("Xx")
- * C(parsers.hexdigit^1) * parsers.semicolon
-parsers.decentity = parsers.ampersand * parsers.hash
- * C(parsers.digit^1) * parsers.semicolon
-parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1)
- * parsers.semicolon
-- parse a reference definition: [foo]: /bar "title"
-parsers.define_reference_parser = parsers.leader * parsers.tag * parsers.colon
- * parsers.spacechar^0 * parsers.url
- * parsers.optionaltitle
+parsers.define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon
+ * parsers.spnlc * parsers.url
+ * ( parsers.spnlc_sep * parsers.title * parsers.only_blank
+ + Cc("") * parsers.only_blank)
parsers.Inline = V("Inline")
-parsers.IndentedInline = V("IndentedInline")
-- parse many p between starter and ender
parsers.between = function(p, starter, ender)
@@ -3266,41 +4471,34 @@ parsers.between = function(p, starter, ender)
return (starter * #parsers.nonspacechar * Ct(p * (p - ender2)^0) * ender2)
end
-parsers.urlchar = parsers.anyescaped
- - parsers.newline
- - parsers.more
-
-parsers.auto_link_url = parsers.less
- * C( parsers.alphanumeric^1 * P("://")
- * parsers.urlchar^1)
- * parsers.more
-
-parsers.auto_link_email
- = parsers.less
- * C((parsers.alphanumeric + S("-._+"))^1
- * P("@") * parsers.urlchar^1)
- * parsers.more
-
-parsers.auto_link_relative_reference
- = parsers.less
- * C(parsers.urlchar^1)
- * parsers.more
-
parsers.lineof = function(c)
- return (parsers.leader * (P(c) * parsers.optionalspace)^3
- * (parsers.newline * parsers.blankline^1
- + parsers.newline^-1 * parsers.eof))
+ return (parsers.check_trail_no_rem * (P(c) * parsers.optionalspace)^3
+ * (parsers.newline + parsers.eof))
end
+
+parsers.thematic_break_lines = parsers.lineof(parsers.asterisk)
+ + parsers.lineof(parsers.dash)
+ + parsers.lineof(parsers.underscore)
-- parse Atx heading start and return level
parsers.heading_start = #parsers.hash * C(parsers.hash^-6)
* -parsers.hash / length
-- parse setext header ending and return level
-parsers.heading_level = parsers.equal^1 * Cc(1) + parsers.dash^1 * Cc(2)
+parsers.heading_level = parsers.nonindentspace * parsers.equal^1 * parsers.optionalspace * #parsers.newline * Cc(1)
+ + parsers.nonindentspace * parsers.dash^1 * parsers.optionalspace * #parsers.newline * Cc(2)
local function strip_atx_end(s)
- return s:gsub("[#%s]*\n$","")
+ return s:gsub("%s+#*%s*\n$","")
end
+
+parsers.atx_heading = parsers.check_trail_no_rem
+ * Cg(parsers.heading_start, "level")
+ * (C( parsers.optionalspace
+ * parsers.hash^0
+ * parsers.optionalspace
+ * parsers.newline)
+ + parsers.spacechar^1
+ * C(parsers.line))
M.reader = {}
function M.reader.new(writer, options)
local self = {}
@@ -3319,7 +4517,7 @@ function M.reader.new(writer, options)
tag = util.rope_to_string(tag)
tag = tag:gsub("[ \n\r\t]+", " ")
tag = tag:gsub("^ ", ""):gsub(" $", "")
- tag = uni_case.casefold(tag, true, false)
+ tag = uni_algos.case.casefold(tag, true, false)
return tag
end
local function iterlines(s, f)
@@ -3386,11 +4584,6 @@ function M.reader.new(writer, options)
return parsers.inlines
end, false)
- self.create_parser("parse_inlines_no_link",
- function()
- return parsers.inlines_no_link
- end, false)
-
self.create_parser("parse_inlines_no_inline_note",
function()
return parsers.inlines_no_inline_note
@@ -3405,139 +4598,826 @@ function M.reader.new(writer, options)
function()
return parsers.inlines_nbsp
end, false)
+ self.create_parser("parse_inlines_no_link_or_emphasis",
+ function()
+ return parsers.inlines_no_link_or_emphasis
+ end, false)
+ parsers.minimally_indented_blankline = parsers.check_minimal_indent * (parsers.blankline / "")
+
+ parsers.minimally_indented_block = parsers.check_minimal_indent * V("Block")
+
+ parsers.minimally_indented_block_or_paragraph = parsers.check_minimal_indent * V("BlockOrParagraph")
+
+ parsers.minimally_indented_paragraph = parsers.check_minimal_indent * V("Paragraph")
+
+ parsers.minimally_indented_plain = parsers.check_minimal_indent * V("Plain")
+
+ parsers.minimally_indented_par_or_plain = parsers.minimally_indented_paragraph
+ + parsers.minimally_indented_plain
+
+ parsers.minimally_indented_par_or_plain_no_blank = parsers.minimally_indented_par_or_plain
+ - parsers.minimally_indented_blankline
+
+ parsers.minimally_indented_ref = parsers.check_minimal_indent * V("Reference")
+
+ parsers.minimally_indented_blank = parsers.check_minimal_indent * V("Blank")
+
+ parsers.conditionally_indented_blankline = parsers.check_minimal_blank_indent * (parsers.blankline / "")
+
+ parsers.minimally_indented_ref_or_block = parsers.minimally_indented_ref
+ + parsers.minimally_indented_block
+ - parsers.minimally_indented_blankline
+
+ parsers.minimally_indented_ref_or_block_or_par = parsers.minimally_indented_ref
+ + parsers.minimally_indented_block_or_paragraph
+ - parsers.minimally_indented_blankline
+
+
+ parsers.separator_loop = function(separated_block, paragraph, block_separator, paragraph_separator)
+ return separated_block
+ + block_separator
+ * paragraph
+ * separated_block
+ + paragraph_separator
+ * paragraph
+ end
+
+ parsers.create_loop_body_pair = function(separated_block, paragraph, block_separator, paragraph_separator)
+ return {
+ block = parsers.separator_loop(separated_block, paragraph, block_separator, block_separator),
+ par = parsers.separator_loop(separated_block, paragraph, block_separator, paragraph_separator)
+ }
+ end
+
+ parsers.block_sep_group = function(blank)
+ return blank^0 * parsers.eof
+ + ( blank^2 / writer.paragraphsep
+ + blank^0 / writer.interblocksep
+ )
+ end
+
+ parsers.par_sep_group = function(blank)
+ return blank^0 * parsers.eof
+ + blank^0 / writer.paragraphsep
+ end
+
+ parsers.sep_group_no_output = function(blank)
+ return blank^0 * parsers.eof
+ + blank^0
+ end
+
+ parsers.content_blank = parsers.minimally_indented_blankline
+
+ parsers.ref_or_block_separated = parsers.sep_group_no_output(parsers.content_blank)
+ * ( parsers.minimally_indented_ref
+ - parsers.content_blank)
+ + parsers.block_sep_group(parsers.content_blank)
+ * ( parsers.minimally_indented_block
+ - parsers.content_blank)
+
+ parsers.loop_body_pair =
+ parsers.create_loop_body_pair(parsers.ref_or_block_separated,
+ parsers.minimally_indented_par_or_plain_no_blank,
+ parsers.block_sep_group(parsers.content_blank),
+ parsers.par_sep_group(parsers.content_blank))
+
+ parsers.content_loop = ( V("Block")
+ * parsers.loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_separated
+ * parsers.loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.loop_body_pair.par^0)
+ * parsers.content_blank^0
+
+ parsers.indented_content = function()
+ return Ct( (V("Reference") + (parsers.blankline / ""))
+ * parsers.content_blank^0
+ * parsers.check_minimal_indent
+ * parsers.content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ * parsers.content_blank^0
+ + parsers.content_loop)
+ end
+
+ parsers.add_indent = function(pattern, name, breakable)
+ return Cg(Cmt( Cb("indent_info")
+ * Ct(pattern)
+ * (#parsers.linechar * Cc(false) + Cc(true)) -- check if starter is blank
+ * Cc(name)
+ * Cc(breakable),
+ process_starter_indent), "indent_info")
+ end
+
if options.hashEnumerators then
parsers.dig = parsers.digit + parsers.hash
else
parsers.dig = parsers.digit
end
- parsers.enumerator = C(parsers.dig^3 * parsers.period) * #parsers.spacing
- + C(parsers.dig^2 * parsers.period) * #parsers.spacing
- * (parsers.tab + parsers.space^1)
- + C(parsers.dig * parsers.period) * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.space * C(parsers.dig^2 * parsers.period)
- * #parsers.spacing
- + parsers.space * C(parsers.dig * parsers.period)
- * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * C(parsers.dig^1
- * parsers.period) * #parsers.spacing
- -- strip off leading > and indents, and run through blocks
- parsers.blockquote_body = ((parsers.leader * parsers.more * parsers.space^-1)/""
- * parsers.linechar^0 * parsers.newline)^1
- * (-V("BlockquoteExceptions") * parsers.linechar^1
- * parsers.newline)^0
+ parsers.enumerator = function(delimiter_type, interrupting)
+ local delimiter_range
+ local allowed_end
+ if interrupting then
+ delimiter_range = P("1")
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ delimiter_range = parsers.dig * parsers.dig^-8
+ allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ end
+
+ return parsers.check_trail
+ * Ct(C(delimiter_range) * C(delimiter_type))
+ * allowed_end
+ end
+
+ parsers.starter = parsers.bullet(parsers.dash)
+ + parsers.bullet(parsers.asterisk)
+ + parsers.bullet(parsers.plus)
+ + parsers.enumerator(parsers.period)
+ + parsers.enumerator(parsers.rparent)
+
+ parsers.blockquote_start = parsers.check_trail * C(parsers.more) * C(parsers.spacechar^0)
+
+ parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", true)
+ * parsers.indented_content()
+ * remove_indent("bq")
if not options.breakableBlockquotes then
- parsers.blockquote_body = parsers.blockquote_body
- * (parsers.blankline^0 / "")
+ parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", false)
+ * parsers.indented_content()
+ * remove_indent("bq")
+ end
+ local function parse_content_part(content_part)
+ local rope = util.rope_to_string(content_part)
+ local parsed = self.parser_functions.parse_inlines_no_link_or_emphasis(rope)
+ parsed.indent_info = nil
+ return parsed
+ end
+
+ local function collect_emphasis_content(t, opening_index, closing_index)
+ local content = {}
+
+ local content_part = {}
+ for i = opening_index, closing_index do
+ local value = t[i]
+
+ if value.rendered ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ content_part = {}
+ content[#content + 1] = value.rendered
+ value.rendered = nil
+ else
+ if value.type == "delimiter" and value.element == "emphasis" then
+ if value.is_active then
+ content_part[#content_part + 1] = string.rep(value.character, value.current_count)
+ end
+ else
+ content_part[#content_part + 1] = value.content
+ end
+ value.content = ''
+ value.is_active = false
+ end
+ end
+
+ if next(content_part) ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ end
+
+ return content
+ end
+
+ local function fill_emph(t, opening_index, closing_index)
+ local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1)
+ t[opening_index + 1].is_active = true
+ t[opening_index + 1].rendered = writer.emphasis(content)
end
+
+ local function fill_strong(t, opening_index, closing_index)
+ local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1)
+ t[opening_index + 1].is_active = true
+ t[opening_index + 1].rendered = writer.strong(content)
+ end
+
+ local function breaks_three_rule(opening_delimiter, closing_delimiter)
+ return (opening_delimiter.is_closing or closing_delimiter.is_opening) and
+ ((opening_delimiter.original_count + closing_delimiter.original_count) % 3 == 0) and
+ (opening_delimiter.original_count % 3 ~= 0 or closing_delimiter.original_count % 3 ~= 0)
+ end
+
+ local function find_emphasis_opener(t, bottom_index, latest_index, character, closing_delimiter)
+ for i = latest_index, bottom_index, -1 do
+ local value = t[i]
+ if value.is_active and
+ value.is_opening and
+ value.type == "delimiter" and
+ value.element == "emphasis" and
+ (value.character == character) and
+ (value.current_count > 0) then
+ if not breaks_three_rule(value, closing_delimiter) then
+ return i
+ end
+ end
+ end
+ end
+
+ local function process_emphasis(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ local value = t[i]
+ if value.type == "delimiter" and value.element == "emphasis" then
+ local delimiter_length = string.len(value.content)
+ value.character = string.sub(value.content, 1, 1)
+ value.current_count = delimiter_length
+ value.original_count = delimiter_length
+ end
+ end
+
+ local openers_bottom = {
+ ['*'] = {
+ [true] = {opening_index, opening_index, opening_index},
+ [false] = {opening_index, opening_index, opening_index}
+ },
+ ['_'] = {
+ [true] = {opening_index, opening_index, opening_index},
+ [false] = {opening_index, opening_index, opening_index}
+ }
+ }
+
+ local current_position = opening_index
+ local max_position = closing_index
+
+ while current_position <= max_position do
+ local value = t[current_position]
+
+ if value.type ~= "delimiter" or
+ value.element ~= "emphasis" or
+ not value.is_active or
+ not value.is_closing or
+ (value.current_count <= 0) then
+ current_position = current_position + 1
+ goto continue
+ end
+
+ local character = value.character
+ local is_opening = value.is_opening
+ local closing_length_modulo_three = value.original_count % 3
+
+ local current_openers_bottom = openers_bottom[character][is_opening][closing_length_modulo_three + 1]
+
+ local opener_position = find_emphasis_opener(t, current_openers_bottom, current_position - 1, character, value)
+
+ if (opener_position == nil) then
+ openers_bottom[character][is_opening][closing_length_modulo_three + 1] = current_position
+ current_position = current_position + 1
+ goto continue
+ end
+
+ local opening_delimiter = t[opener_position]
+
+ local current_opening_count = opening_delimiter.current_count
+ local current_closing_count = t[current_position].current_count
+
+ if (current_opening_count >= 2) and (current_closing_count >= 2) then
+ opening_delimiter.current_count = current_opening_count - 2
+ t[current_position].current_count = current_closing_count - 2
+ fill_strong(t, opener_position, current_position)
+ else
+ opening_delimiter.current_count = current_opening_count - 1
+ t[current_position].current_count = current_closing_count - 1
+ fill_emph(t, opener_position, current_position)
+ end
+
+ ::continue::
+ end
+ end
+
+ local cont = lpeg.R("\128\191") -- continuation byte
+
+ local function utf8_by_byte_count(n)
+ if (n == 1) then
+ return lpeg.R("\0\127")
+ end
+ if (n == 2) then
+ return lpeg.R("\194\223") * cont
+ end
+ if (n == 3) then
+ return lpeg.R("\224\239") * cont * cont
+ end
+ if (n == 4) then
+ return lpeg.R("\240\244") * cont * cont * cont
+ end
+ end
+
+ local function check_unicode_type(s, i, start_pos, end_pos, chartype)
+ local c
+ local char_length
+ for pos = start_pos, end_pos, 1 do
+ if (start_pos < 0) then
+ char_length = -pos
+ else
+ char_length = pos + 1
+ end
+ c = lpeg.match({ C(utf8_by_byte_count(char_length)) },s,i+pos)
+ if (c ~= nil) and (unicode.utf8.match(c, chartype)) then
+ return i
+ end
+ end
+ end
+
+ local function check_preceding_unicode_punctuation(s, i)
+ return check_unicode_type(s, i, -4, -1, "%p")
+ end
+
+ local function check_preceding_unicode_whitespace(s, i)
+ return check_unicode_type(s, i, -4, -1, "%s")
+ end
+
+ local function check_following_unicode_punctuation(s, i)
+ return check_unicode_type(s, i, 0, 3, "%p")
+ end
+
+ local function check_following_unicode_whitespace(s, i)
+ return check_unicode_type(s, i, 0, 3, "%s")
+ end
+
+ parsers.unicode_preceding_punctuation = B(parsers.escapable)
+ + Cmt(parsers.succeed, check_preceding_unicode_punctuation)
+
+ parsers.unicode_preceding_whitespace = Cmt(parsers.succeed, check_preceding_unicode_whitespace)
+
+ parsers.unicode_following_punctuation = #parsers.escapable
+ + Cmt(parsers.succeed, check_following_unicode_punctuation)
+
+ parsers.unicode_following_whitespace = Cmt(parsers.succeed, check_following_unicode_whitespace)
+
+ parsers.delimiter_run = function(character)
+ return (B(parsers.backslash * character) + -B(character))
+ * character^1
+ * -#character
+ end
+
+ parsers.left_flanking_delimiter_run = function(character)
+ return (B( parsers.any)
+ * (parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace)
+ + -B(parsers.any))
+ * parsers.delimiter_run(character)
+ * parsers.unicode_following_punctuation
+ + parsers.delimiter_run(character)
+ * -#(parsers.unicode_following_punctuation + parsers.unicode_following_whitespace
+ + parsers.eof)
+ end
+
+ parsers.right_flanking_delimiter_run = function(character)
+ return parsers.unicode_preceding_punctuation
+ * parsers.delimiter_run(character)
+ * (parsers.unicode_following_punctuation + parsers.unicode_following_whitespace
+ + parsers.eof)
+ + (B(parsers.any)
+ * -(parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace))
+ * parsers.delimiter_run(character)
+ end
+
+ if options.underscores then
+ parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk)
+ + (-#parsers.right_flanking_delimiter_run(parsers.underscore)
+ + (parsers.unicode_preceding_punctuation
+ * #parsers.right_flanking_delimiter_run(parsers.underscore)))
+ * parsers.left_flanking_delimiter_run(parsers.underscore)
+
+ parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk)
+ + (-#parsers.left_flanking_delimiter_run(parsers.underscore)
+ + #(parsers.left_flanking_delimiter_run(parsers.underscore)
+ * parsers.unicode_following_punctuation))
+ * parsers.right_flanking_delimiter_run(parsers.underscore)
+ else
+ parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk)
+
+ parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk)
+ end
+
+ parsers.emph_capturing_open_and_close = #parsers.emph_start * #parsers.emph_end
+ * Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_start), "content")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(true), "is_closing"))
+
+ parsers.emph_capturing_open = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_start), "content")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(false), "is_closing"))
+
+ parsers.emph_capturing_close = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_end), "content")
+ * Cg(Cc(false), "is_opening")
+ * Cg(Cc(true), "is_closing"))
+
+ parsers.emph_open_or_close = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_open
+ + parsers.emph_capturing_close
+
+ parsers.emph_open = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_open
+
+ parsers.emph_close = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_close
+
-- List of references defined in the document
local references
- function self.register_link(tag, url, title,
+ function self.register_link(_, tag, url, title,
attributes)
- tag = self.normalize_tag(tag)
- references[tag] = {
- url = url,
- title = title,
- attributes = attributes,
- }
+ local normalized_tag = self.normalize_tag(tag)
+ if references[normalized_tag] == nil then
+ references[normalized_tag] = {
+ url = url,
+ title = title,
+ attributes = attributes
+ }
+ end
return ""
end
- function self.lookup_reference(label, sps, tag,
- attributes)
- local tagpart
- if not tag then
- tag = label
- tagpart = ""
- elseif tag == "" then
- tag = label
- tagpart = "[]"
- else
- tagpart = {
- "[",
- self.parser_functions.parse_inlines(tag),
- "]"
- }
- end
- if sps then
- tagpart = {sps, tagpart}
+ function self.lookup_reference(tag)
+ return references[self.normalize_tag(tag)]
+ end
+
+ parsers.title_s_direct_ref = parsers.squote
+ * Cs((parsers.html_entities
+ + (parsers.anyescaped - parsers.squote - parsers.blankline^2))^0)
+ * parsers.squote
+
+ parsers.title_d_direct_ref = parsers.dquote
+ * Cs((parsers.html_entities
+ + (parsers.anyescaped - parsers.dquote - parsers.blankline^2))^0)
+ * parsers.dquote
+
+ parsers.title_p_direct_ref = parsers.lparent
+ * Cs((parsers.html_entities
+ + (parsers.anyescaped - parsers.lparent - parsers.rparent - parsers.blankline^2))^0)
+ * parsers.rparent
+
+ parsers.title_direct_ref = parsers.title_s_direct_ref
+ + parsers.title_d_direct_ref
+ + parsers.title_p_direct_ref
+
+ parsers.inline_direct_ref_inside = parsers.lparent * parsers.spnl
+ * Cg(parsers.url + Cc(""), "url")
+ * parsers.spnl
+ * Cg(parsers.title_direct_ref + Cc(""), "title")
+ * parsers.spnl * parsers.rparent
+
+ parsers.inline_direct_ref = parsers.lparent * parsers.spnlc
+ * Cg(parsers.url + Cc(""), "url")
+ * parsers.spnlc
+ * Cg(parsers.title + Cc(""), "title")
+ * parsers.spnlc * parsers.rparent
+
+ parsers.empty_link = parsers.lbracket
+ * parsers.rbracket
+
+ parsers.inline_link = parsers.link_text
+ * parsers.inline_direct_ref
+
+ parsers.full_link = parsers.link_text
+ * parsers.link_label
+
+ parsers.shortcut_link = parsers.link_label
+ * -(parsers.empty_link + parsers.link_label)
+
+ parsers.collapsed_link = parsers.link_label
+ * parsers.empty_link
+
+ parsers.image_opening = #(parsers.exclamation * parsers.inline_link)
+ * Cg(Cc("inline"), "link_type")
+ + #(parsers.exclamation * parsers.full_link)
+ * Cg(Cc("full"), "link_type")
+ + #(parsers.exclamation * parsers.collapsed_link)
+ * Cg(Cc("collapsed"), "link_type")
+ + #(parsers.exclamation * parsers.shortcut_link)
+ * Cg(Cc("shortcut"), "link_type")
+ + #(parsers.exclamation * parsers.empty_link)
+ * Cg(Cc("empty"), "link_type")
+
+ parsers.link_opening = #parsers.inline_link
+ * Cg(Cc("inline"), "link_type")
+ + #parsers.full_link
+ * Cg(Cc("full"), "link_type")
+ + #parsers.collapsed_link
+ * Cg(Cc("collapsed"), "link_type")
+ + #parsers.shortcut_link
+ * Cg(Cc("shortcut"), "link_type")
+ + #parsers.empty_link
+ * Cg(Cc("empty_link"), "link_type")
+ + #parsers.link_text
+ * Cg(Cc("link_text"), "link_type")
+
+ parsers.link_image_opening = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(false), "is_closing")
+ * ( Cg(Cc("image"), "element")
+ * parsers.image_opening
+ * Cg(parsers.exclamation * parsers.lbracket, "content")
+ + Cg(Cc("link"), "element")
+ * parsers.link_opening
+ * Cg(parsers.lbracket, "content")))
+
+ parsers.link_image_closing = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("link"), "element")
+ * Cg(Cc(false), "is_opening")
+ * Cg(Cc(true), "is_closing")
+ * ( Cg(Cc(true), "is_direct")
+ * Cg(parsers.rbracket * #parsers.inline_direct_ref, "content")
+ + Cg(Cc(false), "is_direct")
+ * Cg(parsers.rbracket, "content")))
+
+ parsers.link_image_open_or_close = parsers.link_image_opening
+ + parsers.link_image_closing
+
+ if options.html then
+ parsers.link_emph_precedence = parsers.inticks
+ + parsers.autolink
+ + parsers.html_inline_tags
+ else
+ parsers.link_emph_precedence = parsers.inticks
+ + parsers.autolink
+ end
+
+ parsers.link_and_emph_endline = parsers.newline
+ * ((parsers.check_minimal_indent
+ * -V("EndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("EndlineExceptions")
+ * -parsers.starter) / "")
+ * parsers.spacechar^0 / "\n"
+
+ parsers.link_and_emph_content = Ct( Cg(Cc("content"), "type")
+ * Cg(Cs(( parsers.link_emph_precedence
+ + parsers.backslash * parsers.any
+ + parsers.link_and_emph_endline
+ + (parsers.linechar
+ - parsers.blankline^2
+ - parsers.link_image_open_or_close
+ - parsers.emph_open_or_close))^0), "content"))
+
+ parsers.link_and_emph_table = (parsers.link_image_opening + parsers.emph_open)
+ * parsers.link_and_emph_content
+ * ((parsers.link_image_open_or_close + parsers.emph_open_or_close)
+ * parsers.link_and_emph_content)^1
+
+ local function collect_link_content(t, opening_index, closing_index)
+ local content = {}
+ for i = opening_index, closing_index do
+ content[#content + 1] = t[i].content
end
- tag = self.normalize_tag(tag)
- local r = references[tag]
- if r then
- local merged_attributes = {}
- for _, attribute in ipairs(r.attributes or {}) do
- table.insert(merged_attributes, attribute)
+ return util.rope_to_string(content)
+ end
+
+ local function find_link_opener(t, bottom_index, latest_index)
+ for i = latest_index, bottom_index, -1 do
+ local value = t[i]
+ if value.type == "delimiter" and
+ value.is_opening and
+ (value.element == "link" or value.element == "image")
+ and not value.removed then
+ if value.is_active then
+ return i
+ end
+ value.removed = true
+ return nil
end
- for _, attribute in ipairs(attributes or {}) do
- table.insert(merged_attributes, attribute)
+ end
+ end
+
+ local function find_next_link_closing_index(t, latest_index)
+ for i = latest_index, #t do
+ local value = t[i]
+ if value.is_closing and
+ value.element == "link" and
+ not value.removed then
+ return i
end
- if #merged_attributes == 0 then
- merged_attributes = nil
+ end
+ end
+
+ local function disable_previous_link_openers(t, opening_index)
+ if t[opening_index].element == "image" then
+ return
+ end
+
+ for i = opening_index, 1, -1 do
+ local value = t[i]
+ if value.is_active and
+ value.type == "delimiter" and
+ value.is_opening and
+ value.element == "link" then
+ value.is_active = false
end
- return {
- url = r.url,
- title = r.title,
- attributes = merged_attributes,
- }
- else
- return nil, {
- "[",
- self.parser_functions.parse_inlines(label),
- "]",
- tagpart
- }
end
end
- -- lookup link reference and return a link, if the reference is found,
- -- or a bracketed label otherwise.
- local function indirect_link(label, sps, tag)
- return writer.defer_call(function()
- local r,fallback = self.lookup_reference(label, sps, tag)
- if r then
- return writer.link(
- self.parser_functions.parse_inlines_no_link(label),
- r.url, r.title)
- else
- return fallback
+ local function disable_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ local value = t[i]
+ if value.is_active then
+ value.is_active = false
+ if value.type == "delimiter" then
+ value.removed = true
+ end
end
- end)
+ end
end
- -- lookup image reference and return an image, if the reference is found,
- -- or a bracketed label otherwise.
- local function indirect_image(label, sps, tag)
- return writer.defer_call(function()
- local r,fallback = self.lookup_reference(label, sps, tag)
- if r then
- return writer.image(writer.string(label), r.url, r.title)
- else
- return {"!", fallback}
+ local function delete_parsed_content_in_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ t[i].rendered = nil
+ end
+ end
+
+ local function empty_content_in_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ t[i].content = ''
+ end
+ end
+
+ local function join_attributes(reference_attributes, own_attributes)
+ local merged_attributes = {}
+ for _, attribute in ipairs(reference_attributes or {}) do
+ table.insert(merged_attributes, attribute)
+ end
+ for _, attribute in ipairs(own_attributes or {}) do
+ table.insert(merged_attributes, attribute)
+ end
+ if next(merged_attributes) == nil then
+ merged_attributes = nil
+ end
+ return merged_attributes
+ end
+
+ local function render_link_or_image(t, opening_index, closing_index, content_end_index, reference)
+ process_emphasis(t, opening_index, content_end_index)
+ local mapped = collect_emphasis_content(t, opening_index + 1, content_end_index - 1)
+
+ local rendered = {}
+ if (t[opening_index].element == "link") then
+ rendered = writer.link(mapped, reference.url, reference.title, reference.attributes)
+ end
+
+ if (t[opening_index].element == "image") then
+ rendered = writer.image(mapped, reference.url, reference.title, reference.attributes)
+ end
+
+ t[opening_index].rendered = rendered
+ delete_parsed_content_in_range(t, opening_index + 1, closing_index)
+ empty_content_in_range(t, opening_index, closing_index)
+ disable_previous_link_openers(t, opening_index)
+ disable_range(t, opening_index, closing_index)
+ end
+
+ local function resolve_inline_following_content(t, closing_index, match_reference, match_link_attributes)
+ local content = ""
+ for i = closing_index + 1, #t do
+ content = content .. t[i].content
+ end
+
+ local matching_content = parsers.succeed
+
+ if match_reference then
+ matching_content = matching_content * parsers.inline_direct_ref_inside
+ end
+
+ if match_link_attributes then
+ matching_content = matching_content * Cg(Ct(parsers.attributes^-1), "attributes")
+ end
+
+ local matched = lpeg.match(Ct(matching_content * Cg(Cp(), "end_position")), content)
+
+ local matched_count = matched.end_position - 1
+ for i = closing_index + 1, #t do
+ local value = t[i]
+
+ local chars_left = matched_count
+ matched_count = matched_count - #value.content
+
+ if matched_count <= 0 then
+ value.content = value.content:sub(chars_left + 1)
+ break
end
- end)
+
+ value.content = ''
+ value.is_active = false
+ end
+
+ local attributes = matched.attributes
+ if attributes == nil or next(attributes) == nil then
+ attributes = nil
+ end
+
+ return {
+ url = matched.url or "",
+ title = matched.title or "",
+ attributes = attributes
+ }
+ end
+
+ local function resolve_inline_link(t, opening_index, closing_index)
+ local inline_content = resolve_inline_following_content(t, closing_index, true, t.match_link_attributes)
+ render_link_or_image(t, opening_index, closing_index, closing_index, inline_content)
end
- parsers.direct_link_tail = parsers.spnl
- * parsers.lparent
- * (parsers.url + Cc("")) -- link can be empty [foo]()
- * parsers.optionaltitle
- * parsers.rparent
+ local function resolve_shortcut_link(t, opening_index, closing_index)
+ local content = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local r = self.lookup_reference(content)
- parsers.direct_link = (parsers.tag / self.parser_functions.parse_inlines_no_link)
- * parsers.direct_link_tail
+ if r then
+ local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes)
+ r.attributes = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, closing_index, closing_index, r)
+ end
+ end
+
+ local function resolve_full_link(t, opening_index, closing_index)
+ local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4)
+ local next_link_content = collect_link_content(t, closing_index + 3, next_link_closing_index - 1)
+ local r = self.lookup_reference(next_link_content)
+
+ if r then
+ local inline_content = resolve_inline_following_content(t, next_link_closing_index, false,
+ t.match_link_attributes)
+ r.attributes = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r)
+ end
+ end
+
+ local function resolve_collapsed_link(t, opening_index, closing_index)
+ local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4)
+ local content = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local r = self.lookup_reference(content)
+
+ if r then
+ local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes)
+ r.attributes = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r)
+ end
+ end
+
+ local function process_links_and_emphasis(t)
+ for _,value in ipairs(t) do
+ value.is_active = true
+ end
+
+ for i,value in ipairs(t) do
+ if not value.is_closing or
+ value.type ~= "delimiter" or
+ not (value.element == "link" or value.element == "image") then
+ goto continue
+ end
+
+ local opener_position = find_link_opener(t, 1, i - 1)
+ if (opener_position == nil) then
+ goto continue
+ end
+
+ local opening_delimiter = t[opener_position]
+ opening_delimiter.removed = true
+
+ local link_type = opening_delimiter.link_type
+
+ if (link_type == "inline") then
+ resolve_inline_link(t, opener_position, i)
+ end
+ if (link_type == "shortcut") then
+ resolve_shortcut_link(t, opener_position, i)
+ end
+ if (link_type == "full") then
+ resolve_full_link(t, opener_position, i)
+ end
+ if (link_type == "collapsed") then
+ resolve_collapsed_link(t, opener_position, i)
+ end
+
+ ::continue::
+ end
+
+ t[#t].content = t[#t].content:gsub("%s*$","")
+
+ process_emphasis(t, 1, #t)
+ local final_result = collect_emphasis_content(t, 1, #t)
+ return final_result
+ end
+
+ function self.defer_link_and_emphasis_processing(delimiter_table)
+ return writer.defer_call(function()
+ return process_links_and_emphasis(delimiter_table)
+ end)
+ end
- parsers.direct_image = parsers.exclamation
- * (parsers.tag / self.parser_functions.parse_inlines)
- * parsers.direct_link_tail
parsers.Str = (parsers.normalchar * (parsers.normalchar + parsers.at)^0)
/ writer.string
- parsers.Symbol = (V("SpecialChar") - parsers.tightblocksep)
+ parsers.Symbol = (parsers.backtick^1 + V("SpecialChar"))
/ writer.string
parsers.Ellipsis = P("...") / writer.ellipsis
@@ -3549,88 +5429,116 @@ function M.reader.new(writer, options)
if options.blankBeforeBlockquote then
parsers.bqstart = parsers.fail
else
- parsers.bqstart = parsers.more
+ parsers.bqstart = parsers.blockquote_start
end
if options.blankBeforeHeading then
parsers.headerstart = parsers.fail
else
- parsers.headerstart = parsers.hash
- + (parsers.line * (parsers.equal^1 + parsers.dash^1)
- * parsers.optionalspace * parsers.newline)
+ parsers.headerstart = parsers.atx_heading
+ end
+
+ if options.blankBeforeList then
+ parsers.interrupting_bullets = parsers.fail
+ parsers.interrupting_enumerators = parsers.fail
+ else
+ parsers.interrupting_bullets = parsers.bullet(parsers.dash, true)
+ + parsers.bullet(parsers.asterisk, true)
+ + parsers.bullet(parsers.plus, true)
+
+ parsers.interrupting_enumerators = parsers.enumerator(parsers.period, true)
+ + parsers.enumerator(parsers.rparent, true)
+ end
+
+ if options.html then
+ parsers.html_interrupting = parsers.check_trail
+ * ( parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_close_tag
+ + parsers.html_incomplete_open_special_tag
+ + parsers.html_comment_start
+ + parsers.html_cdatasection_start
+ + parsers.html_declaration_start
+ + parsers.html_instruction_start
+ - parsers.html_close_special_tag
+ - parsers.html_empty_special_tag)
+ else
+ parsers.html_interrupting = parsers.fail
end
parsers.EndlineExceptions
= parsers.blankline -- paragraph break
- + parsers.tightblocksep -- nested list
+ parsers.eof -- end of document
+ parsers.bqstart
+ + parsers.thematic_break_lines
+ + parsers.interrupting_bullets
+ + parsers.interrupting_enumerators
+ parsers.headerstart
+ + parsers.html_interrupting
- parsers.Endline = parsers.newline
+ parsers.NoSoftLineBreakEndlineExceptions = parsers.EndlineExceptions
+
+ parsers.endline = parsers.newline
+ * (parsers.check_minimal_indent
+ * -V("EndlineExceptions")
+ + parsers.check_optional_indent
* -V("EndlineExceptions")
- * parsers.spacechar^0
- / (options.hardLineBreaks and writer.hard_line_break
- or writer.space)
+ * -parsers.starter)
+ * parsers.spacechar^0
+
+ parsers.Endline = parsers.endline
+ / writer.soft_line_break
+
+ parsers.EndlineNoSub = parsers.endline
+
+ parsers.NoSoftLineBreakEndline
+ = parsers.newline
+ * (parsers.check_minimal_indent
+ * -V("NoSoftLineBreakEndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("NoSoftLineBreakEndlineExceptions")
+ * -parsers.starter)
+ * parsers.spacechar^0
+ / writer.space
+
+ parsers.EndlineBreak = parsers.backslash * parsers.Endline
+ / writer.hard_line_break
parsers.OptionalIndent
= parsers.spacechar^1 / writer.space
- parsers.Space = parsers.spacechar^2 * parsers.Endline / writer.hard_line_break
- + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / ""
+ parsers.Space = parsers.spacechar^2 * parsers.Endline
+ / writer.hard_line_break
+ + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs
+ parsers.spacechar^1 * parsers.Endline
- * parsers.optionalspace
- / (options.hardLineBreaks
- and writer.hard_line_break
- or writer.space)
- + parsers.spacechar^1 * parsers.optionalspace
- / writer.space
+ / writer.soft_line_break
+ + parsers.spacechar^1 * -parsers.newline / self.expandtabs
+
+ parsers.NoSoftLineBreakSpace
+ = parsers.spacechar^2 * parsers.Endline
+ / writer.hard_line_break
+ + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs
+ + parsers.spacechar^1 * parsers.Endline
+ / writer.soft_line_break
+ + parsers.spacechar^1 * -parsers.newline / self.expandtabs
parsers.NonbreakingEndline
- = parsers.newline
- * -V("EndlineExceptions")
- * parsers.spacechar^0
- / (options.hardLineBreaks and writer.hard_line_break
- or writer.nbsp)
+ = parsers.endline
+ / writer.soft_line_break
parsers.NonbreakingSpace
- = parsers.spacechar^2 * parsers.Endline / writer.hard_line_break
+ = parsers.spacechar^2 * parsers.Endline
+ / writer.hard_line_break
+ parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / ""
+ parsers.spacechar^1 * parsers.Endline
* parsers.optionalspace
- / (options.hardLineBreaks
- and writer.hard_line_break
- or writer.nbsp)
+ / writer.soft_line_break
+ parsers.spacechar^1 * parsers.optionalspace
/ writer.nbsp
- if options.underscores then
- parsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks,
- parsers.doubleasterisks)
- + parsers.between(parsers.Inline, parsers.doubleunderscores,
- parsers.doubleunderscores)
- ) / writer.strong
-
- parsers.Emph = ( parsers.between(parsers.Inline, parsers.asterisk,
- parsers.asterisk)
- + parsers.between(parsers.Inline, parsers.underscore,
- parsers.underscore)
- ) / writer.emphasis
- else
- parsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks,
- parsers.doubleasterisks)
- ) / writer.strong
-
- parsers.Emph = ( parsers.between(parsers.Inline, parsers.asterisk,
- parsers.asterisk)
- ) / writer.emphasis
- end
-
function self.auto_link_url(url, attributes)
return writer.link(writer.escape(url),
url, nil, attributes)
end
-
function self.auto_link_email(email, attributes)
return writer.link(writer.escape(email),
"mailto:"..email,
@@ -3648,77 +5556,58 @@ end
= parsers.auto_link_relative_reference
/ self.auto_link_url
- parsers.DirectLink = parsers.direct_link
- / writer.link
-
- parsers.IndirectLink = parsers.indirect_link
- / indirect_link
-
- -- parse a link or image (direct or indirect)
- parsers.Link = parsers.DirectLink + parsers.IndirectLink
-
- parsers.DirectImage = parsers.direct_image
- / writer.image
-
- parsers.IndirectImage = parsers.indirect_image
- / indirect_image
-
- parsers.Image = parsers.DirectImage + parsers.IndirectImage
-
- -- avoid parsing long strings of * or _ as emph/strong
- parsers.UlOrStarLine = parsers.asterisk^4 + parsers.underscore^4
- / writer.string
+ parsers.LinkAndEmph = Ct(parsers.link_and_emph_table)
+ / self.defer_link_and_emphasis_processing
parsers.EscapedChar = parsers.backslash * C(parsers.escapable) / writer.string
- parsers.InlineHtml = parsers.emptyelt_any / writer.inline_html_tag
- + (parsers.htmlcomment / self.parser_functions.parse_inlines_no_html)
- / writer.inline_html_comment
- + parsers.htmlinstruction
- + parsers.openelt_any / writer.inline_html_tag
- + parsers.closeelt_any / writer.inline_html_tag
-
- parsers.HtmlEntity = parsers.hexentity / entities.hex_entity / writer.string
- + parsers.decentity / entities.dec_entity / writer.string
- + parsers.tagentity / entities.char_entity / writer.string
- parsers.DisplayHtml = (parsers.htmlcomment / self.parser_functions.parse_blocks_nested)
- / writer.block_html_comment
- + parsers.emptyelt_block / writer.block_html_element
- + parsers.openelt_exact("hr") / writer.block_html_element
- + parsers.in_matched_block_tags / writer.block_html_element
- + parsers.htmlinstruction
-
- parsers.Verbatim = Cs( (parsers.blanklines
- * ((parsers.indentedline - parsers.blankline))^1)^1
- ) / self.expandtabs / writer.verbatim
-
- parsers.BlockquoteExceptions = parsers.leader * parsers.more
- + parsers.blankline
-
- parsers.Blockquote = Cs(parsers.blockquote_body^1)
- / self.parser_functions.parse_blocks_nested
+ parsers.InlineHtml = Cs(parsers.html_inline_comment) / writer.inline_html_comment
+ + Cs(parsers.html_any_empty_inline_tag
+ + parsers.html_inline_instruction
+ + parsers.html_inline_cdatasection
+ + parsers.html_inline_declaration
+ + parsers.html_any_open_inline_tag
+ + parsers.html_any_close_tag)
+ / writer.inline_html_tag
+
+ parsers.HtmlEntity = parsers.html_entities / writer.string
+ parsers.DisplayHtml = Cs(parsers.check_trail
+ * ( parsers.html_comment
+ + parsers.html_special_block
+ + parsers.html_block
+ + parsers.html_any_block
+ + parsers.html_instruction
+ + parsers.html_cdatasection
+ + parsers.html_declaration))
+ / writer.block_html_element
+
+ parsers.indented_non_blank_line = parsers.indentedline - parsers.blankline
+
+ parsers.Verbatim = Cs(
+ parsers.check_code_trail
+ * (parsers.line - parsers.blankline)
+ * ((parsers.check_minimal_blank_indent_and_full_code_trail * parsers.blankline)^0
+ * ((parsers.check_minimal_indent / "") * parsers.check_code_trail
+ * (parsers.line - parsers.blankline))^1)^0
+ ) / self.expandtabs / writer.verbatim
+
+ parsers.Blockquote = parsers.blockquote_body
/ writer.blockquote
- parsers.ThematicBreak = ( parsers.lineof(parsers.asterisk)
- + parsers.lineof(parsers.dash)
- + parsers.lineof(parsers.underscore)
- ) / writer.thematic_break
+ parsers.ThematicBreak = parsers.thematic_break_lines
+ / writer.thematic_break
parsers.Reference = parsers.define_reference_parser
- * parsers.blankline^1
/ self.register_link
- parsers.Paragraph = parsers.nonindentspace * Ct(parsers.Inline^1)
- * ( parsers.newline
- * ( parsers.blankline^1
- + #V("EndlineExceptions")
- )
- + parsers.eof)
- / writer.paragraph
+ parsers.Paragraph = parsers.freeze_trail
+ * (Ct((parsers.Inline)^1)
+ * (parsers.newline + parsers.eof)
+ * parsers.unfreeze_trail
+ / writer.paragraph)
parsers.Plain = parsers.nonindentspace * Ct(parsers.Inline^1)
/ writer.plain
- parsers.starter = parsers.bullet + parsers.enumerator
if options.taskLists then
parsers.tickbox = ( parsers.ticked_box
@@ -3729,43 +5618,117 @@ end
parsers.tickbox = parsers.fail
end
- -- we use \001 as a separator between a tight list item and a
- -- nested list under it.
- parsers.NestedList = Cs((parsers.optionallyindentedline
- - parsers.starter)^1)
- / function(a) return "\001"..a end
-
- parsers.ListBlockLine = parsers.optionallyindentedline
- - parsers.blankline - (parsers.indent^-1
- * parsers.starter)
-
- parsers.ListBlock = parsers.line * parsers.ListBlockLine^0
-
- parsers.ListContinuationBlock = parsers.blanklines * (parsers.indent / "")
- * parsers.ListBlock
+ parsers.list_blank = parsers.conditionally_indented_blankline
+
+ parsers.ref_or_block_list_separated = parsers.sep_group_no_output(parsers.list_blank)
+ * parsers.minimally_indented_ref
+ + parsers.block_sep_group(parsers.list_blank)
+ * parsers.minimally_indented_block
+
+ parsers.ref_or_block_non_separated = parsers.minimally_indented_ref
+ + (parsers.succeed / writer.interblocksep)
+ * parsers.minimally_indented_block
+ - parsers.minimally_indented_blankline
+
+ parsers.tight_list_loop_body_pair =
+ parsers.create_loop_body_pair(parsers.ref_or_block_non_separated,
+ parsers.minimally_indented_par_or_plain_no_blank,
+ (parsers.succeed / writer.interblocksep),
+ (parsers.succeed / writer.paragraphsep))
+
+ parsers.loose_list_loop_body_pair =
+ parsers.create_loop_body_pair(parsers.ref_or_block_list_separated,
+ parsers.minimally_indented_par_or_plain,
+ parsers.block_sep_group(parsers.list_blank),
+ parsers.par_sep_group(parsers.list_blank))
+
+ parsers.tight_list_content_loop = V("Block")
+ * parsers.tight_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_non_separated
+ * parsers.tight_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.tight_list_loop_body_pair.par^0
+
+ parsers.loose_list_content_loop = V("Block")
+ * parsers.loose_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_list_separated
+ * parsers.loose_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.loose_list_loop_body_pair.par^0
+
+ parsers.list_item_tightness_condition = -#( parsers.list_blank^0
+ * parsers.minimally_indented_ref_or_block_or_par)
+ * remove_indent("li")
+ + remove_indent("li")
+ * parsers.fail
+
+ parsers.indented_content_tight = Ct( (parsers.blankline / "")
+ * #parsers.list_blank
+ * remove_indent("li")
+ + ( (V("Reference") + (parsers.blankline / ""))
+ * parsers.check_minimal_indent
+ * parsers.tight_list_content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ + (parsers.tickbox^-1 / writer.escape)
+ * parsers.tight_list_content_loop
+ )
+ * parsers.list_item_tightness_condition
+ )
+
+ parsers.indented_content_loose = Ct( (parsers.blankline / "")
+ * #parsers.list_blank
+ + ( (V("Reference") + (parsers.blankline / ""))
+ * parsers.check_minimal_indent
+ * parsers.loose_list_content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ + (parsers.tickbox^-1 / writer.escape)
+ * parsers.loose_list_content_loop
+ )
+ )
parsers.TightListItem = function(starter)
- return -parsers.ThematicBreak
- * (Cs(starter / "" * parsers.tickbox^-1 * parsers.ListBlock * parsers.NestedList^-1)
- / self.parser_functions.parse_blocks_nested)
- * -(parsers.blanklines * parsers.indent)
+ return -parsers.ThematicBreak
+ * parsers.add_indent(starter, "li")
+ * parsers.indented_content_tight
end
parsers.LooseListItem = function(starter)
- return -parsers.ThematicBreak
- * Cs( starter / "" * parsers.tickbox^-1 * parsers.ListBlock * Cc("\n")
- * (parsers.NestedList + parsers.ListContinuationBlock^0)
- * (parsers.blanklines / "\n\n")
- ) / self.parser_functions.parse_blocks_nested
+ return -parsers.ThematicBreak
+ * parsers.add_indent(starter, "li")
+ * parsers.indented_content_loose
+ * remove_indent("li")
end
- parsers.BulletList = ( Ct(parsers.TightListItem(parsers.bullet)^1) * Cc(true)
- * parsers.skipblanklines * -parsers.bullet
- + Ct(parsers.LooseListItem(parsers.bullet)^1) * Cc(false)
- * parsers.skipblanklines )
- / writer.bulletlist
+ parsers.BulletListOfType = function(bullet_type)
+ local bullet = parsers.bullet(bullet_type)
+ return ( Ct( parsers.TightListItem(bullet)
+ * ( (parsers.check_minimal_indent / "")
+ * parsers.TightListItem(bullet)
+ )^0
+ )
+ * Cc(true)
+ * -#( (parsers.list_blank^0 / "")
+ * parsers.check_minimal_indent
+ * (bullet - parsers.ThematicBreak)
+ )
+ + Ct( parsers.LooseListItem(bullet)
+ * ( (parsers.list_blank^0 / "")
+ * (parsers.check_minimal_indent / "")
+ * parsers.LooseListItem(bullet)
+ )^0
+ )
+ * Cc(false)
+ ) / writer.bulletlist
+ end
+
+ parsers.BulletList = parsers.BulletListOfType(parsers.dash)
+ + parsers.BulletListOfType(parsers.asterisk)
+ + parsers.BulletListOfType(parsers.plus)
- local function ordered_list(items,tight,startnum)
+ local function ordered_list(items,tight,starter)
+ local startnum = starter[2][1]
if options.startNumber then
startnum = tonumber(startnum) or 1 -- fallback for '#'
if startnum ~= nil then
@@ -3777,33 +5740,64 @@ end
return writer.orderedlist(items,tight,startnum)
end
- parsers.OrderedList = Cg(parsers.enumerator, "listtype") *
- ( Ct(parsers.TightListItem(Cb("listtype"))
- * parsers.TightListItem(parsers.enumerator)^0)
- * Cc(true) * parsers.skipblanklines * -parsers.enumerator
- + Ct(parsers.LooseListItem(Cb("listtype"))
- * parsers.LooseListItem(parsers.enumerator)^0)
- * Cc(false) * parsers.skipblanklines
- ) * Cb("listtype") / ordered_list
+ parsers.OrderedListOfType = function(delimiter_type)
+ local enumerator = parsers.enumerator(delimiter_type)
+ return Cg(enumerator, "listtype")
+ * (Ct( parsers.TightListItem(Cb("listtype"))
+ * ((parsers.check_minimal_indent / "") * parsers.TightListItem(enumerator))^0)
+ * Cc(true)
+ * -#((parsers.list_blank^0 / "")
+ * parsers.check_minimal_indent * enumerator)
+ + Ct( parsers.LooseListItem(Cb("listtype"))
+ * ((parsers.list_blank^0 / "")
+ * (parsers.check_minimal_indent / "") * parsers.LooseListItem(enumerator))^0)
+ * Cc(false)
+ ) * Ct(Cb("listtype")) / ordered_list
+ end
+
+ parsers.OrderedList = parsers.OrderedListOfType(parsers.period)
+ + parsers.OrderedListOfType(parsers.rparent)
parsers.Blank = parsers.blankline / ""
+ V("Reference")
- + (parsers.tightblocksep / "\n")
+ function parsers.parse_heading_text(s)
+ local inlines = self.parser_functions.parse_inlines(s)
+ local flatten_inlines = self.writer.flatten_inlines
+ self.writer.flatten_inlines = true
+ local flat_text = self.parser_functions.parse_inlines(s)
+ flat_text = util.rope_to_string(flat_text)
+ self.writer.flatten_inlines = flatten_inlines
+ return {flat_text, inlines}
+ end
+
-- parse atx header
- parsers.AtxHeading = Cg(parsers.heading_start, "level")
- * parsers.optionalspace
- * (C(parsers.line)
+ parsers.AtxHeading = parsers.check_trail_no_rem
+ * Cg(parsers.heading_start, "level")
+ * ((C( parsers.optionalspace
+ * parsers.hash^0
+ * parsers.optionalspace
+ * parsers.newline)
+ + parsers.spacechar^1
+ * C(parsers.line))
/ strip_atx_end
- / self.parser_functions.parse_inlines)
+ / parsers.parse_heading_text)
* Cb("level")
/ writer.heading
- parsers.SetextHeading = #(parsers.line * S("=-"))
- * Ct(parsers.linechar^1
- / self.parser_functions.parse_inlines)
- * parsers.newline
- * parsers.heading_level
- * parsers.optionalspace
+ parsers.heading_line = parsers.linechar^1
+ - parsers.thematic_break_lines
+
+ parsers.heading_text = parsers.heading_line
+ * ((V("Endline") / "\n") * (parsers.heading_line - parsers.heading_level))^0
+ * parsers.newline^-1
+
+ parsers.SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem
+ * #(parsers.heading_text
+ * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level)
+ * Cs(parsers.heading_text)
+ / parsers.parse_heading_text
+ * parsers.check_minimal_indent_and_trail * parsers.heading_level
* parsers.newline
+ * parsers.unfreeze_trail
/ writer.heading
parsers.Heading = parsers.AtxHeading + parsers.SetextHeading
@@ -3861,12 +5855,32 @@ end
Blocks = V("InitializeState")
* ( V("ExpectedJekyllData")
- * (V("Blank")^0 / writer.interblocksep))^-1
+ * (V("Blank")^0 / writer.interblocksep)
+ )^-1
* V("Blank")^0
- * V("Block")^-1
- * ( V("Blank")^0 / writer.interblocksep
- * V("Block"))^0
- * V("Blank")^0 * parsers.eof,
+ * ( V("Block")
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ + ( V("Paragraph") + V("Plain") )
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ * V("Block")
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ + ( V("Paragraph") + V("Plain") )
+ * ( V("Blank")^0 * parsers.eof
+ + V("Blank")^0 / writer.paragraphsep
+ )
+ )^0,
ExpectedJekyllData = parsers.fail,
@@ -3878,23 +5892,25 @@ end
ThematicBreak = parsers.ThematicBreak,
BulletList = parsers.BulletList,
OrderedList = parsers.OrderedList,
- Heading = parsers.Heading,
DisplayHtml = parsers.DisplayHtml,
+ Heading = parsers.Heading,
Paragraph = parsers.Paragraph,
Plain = parsers.Plain,
EndlineExceptions = parsers.EndlineExceptions,
- BlockquoteExceptions = parsers.BlockquoteExceptions,
+ NoSoftLineBreakEndlineExceptions
+ = parsers.NoSoftLineBreakEndlineExceptions,
Str = parsers.Str,
Space = parsers.Space,
+ NoSoftLineBreakSpace = parsers.NoSoftLineBreakSpace,
OptionalIndent = parsers.OptionalIndent,
Endline = parsers.Endline,
- UlOrStarLine = parsers.UlOrStarLine,
- Strong = parsers.Strong,
- Emph = parsers.Emph,
- Link = parsers.Link,
- Image = parsers.Image,
+ EndlineNoSub = parsers.EndlineNoSub,
+ NoSoftLineBreakEndline
+ = parsers.NoSoftLineBreakEndline,
+ EndlineBreak = parsers.EndlineBreak,
+ LinkAndEmph = parsers.LinkAndEmph,
Code = parsers.Code,
AutoLinkUrl = parsers.AutoLinkUrl,
AutoLinkEmail = parsers.AutoLinkEmail,
@@ -3947,9 +5963,14 @@ end
self.add_special_character("!")
self.add_special_character("\\")
self.initialize_named_group = function(name, value)
+ local pattern = Ct("")
+ if value ~= nil then
+ pattern = pattern / value
+ end
syntax.InitializeState = syntax.InitializeState
- * Cg(Ct("") / value, name)
+ * Cg(pattern, name)
end
+ self.initialize_named_group("indent_info")
for _, extension in ipairs(extensions) do
current_extension_name = extension.name
extension.extend_writer(writer)
@@ -4004,11 +6025,6 @@ end
assert(output_file:write(output))
assert(output_file:close())
end
- walkable_syntax["IndentedInline"] = util.table_copy(
- walkable_syntax["Inline"])
- self.insert_pattern(
- "IndentedInline instead of Space",
- "OptionalIndent")
for lhs, rule in pairs(walkable_syntax) do
syntax[lhs] = parsers.fail
for _, rhs in ipairs(rule) do
@@ -4056,6 +6072,15 @@ end
syntax.AutoLinkRelativeReference = parsers.fail
end
+ if options.contentLevel == "inline" then
+ syntax[1] = "Inlines"
+ syntax.Inlines = V("InitializeState")
+ * parsers.Inline^0
+ * ( parsers.spacing^0
+ * parsers.eof / "")
+ syntax.Space = parsers.Space + parsers.blankline / writer.space
+ end
+
local blocks_nested_t = util.table_copy(syntax)
blocks_nested_t.ExpectedJekyllData = parsers.fail
parsers.blocks_nested = Ct(blocks_nested_t)
@@ -4070,10 +6095,6 @@ end
* parsers.eof / "")
parsers.inlines = Ct(inlines_t)
- local inlines_no_link_t = util.table_copy(inlines_t)
- inlines_no_link_t.Link = parsers.fail
- parsers.inlines_no_link = Ct(inlines_no_link_t)
-
local inlines_no_inline_note_t = util.table_copy(inlines_t)
inlines_no_inline_note_t.InlineNote = parsers.fail
parsers.inlines_no_inline_note = Ct(inlines_no_inline_note_t)
@@ -4088,6 +6109,11 @@ end
inlines_nbsp_t.Endline = parsers.NonbreakingEndline
inlines_nbsp_t.Space = parsers.NonbreakingSpace
parsers.inlines_nbsp = Ct(inlines_nbsp_t)
+
+ local inlines_no_link_or_emphasis_t = util.table_copy(inlines_t)
+ inlines_no_link_or_emphasis_t.LinkAndEmph = parsers.fail
+ inlines_no_link_or_emphasis_t.EndlineExceptions = parsers.EndlineExceptions - parsers.eof
+ parsers.inlines_no_link_or_emphasis = Ct(inlines_no_link_or_emphasis_t)
return function(input)
input = input:gsub("\r\n?", "\n")
if input:sub(-1) ~= "\n" then
@@ -4145,6 +6171,7 @@ M.extensions.bracketed_spans = function()
name = "built-in bracketed_spans syntax extension",
extend_writer = function(self)
function self.span(s, attr)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererBracketedSpanAttributeContextBegin",
self.attributes(attr),
s,
@@ -4154,13 +6181,25 @@ M.extensions.bracketed_spans = function()
local parsers = self.parsers
local writer = self.writer
- local Span = parsers.between(parsers.Inline,
- parsers.lbracket,
- parsers.rbracket)
+ local span_label = parsers.lbracket
+ * (Cs((parsers.alphanumeric^1
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + V("Space") + V("Endline")
+ + (parsers.any
+ - (parsers.newline + parsers.lbracket + parsers.rbracket
+ + parsers.blankline^2))))^1)
+ / self.parser_functions.parse_inlines)
+ * parsers.rbracket
+
+ local Span = span_label
* Ct(parsers.attributes)
/ writer.span
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline before LinkAndEmph",
Span, "Span")
end
}
@@ -4170,11 +6209,24 @@ M.extensions.citations = function(citation_nbsps)
name = "built-in citations syntax extension",
extend_writer = function(self)
function self.citations(text_cites, cites)
- local buffer = {"\\markdownRenderer", text_cites and "TextCite" or "Cite",
- "{", #cites, "}"}
- for _,cite in ipairs(cites) do
- buffer[#buffer+1] = {cite.suppress_author and "-" or "+", "{",
- cite.prenote or "", "}{", cite.postnote or "", "}{", cite.name, "}"}
+ local buffer = {}
+ if self.flatten_inlines then
+ for _,cite in ipairs(cites) do
+ if cite.prenote then
+ table.insert(buffer, {cite.prenote, " "})
+ end
+ table.insert(buffer, cite.name)
+ if cite.postnote then
+ table.insert(buffer, {" ", cite.postnote})
+ end
+ end
+ else
+ table.insert(buffer, {"\\markdownRenderer", text_cites and "TextCite" or "Cite",
+ "{", #cites, "}"})
+ for _,cite in ipairs(cites) do
+ table.insert(buffer, {cite.suppress_author and "-" or "+", "{",
+ cite.prenote or "", "}{", cite.postnote or "", "}{", cite.name, "}"})
+ end
end
return buffer
end
@@ -4201,42 +6253,51 @@ M.extensions.citations = function(citation_nbsps)
= Cs((parsers.alphanumeric^1
+ parsers.bracketed
+ parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("Endline")
+ (parsers.anyescaped
- - (parsers.rbracket + parsers.blankline^2))
+ - (parsers.newline + parsers.rbracket + parsers.blankline^2))
- (parsers.spnl * parsers.dash^-1 * parsers.at))^0)
local citation_body_postnote
= Cs((parsers.alphanumeric^1
+ parsers.bracketed
+ parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("Endline")
+ (parsers.anyescaped
- - (parsers.rbracket + parsers.semicolon
+ - (parsers.newline + parsers.rbracket + parsers.semicolon
+ parsers.blankline^2))
- (parsers.spnl * parsers.rbracket))^0)
local citation_body_chunk
= citation_body_prenote
- * parsers.spnl * citation_name
+ * parsers.spnlc * citation_name
* (parsers.internal_punctuation - parsers.semicolon)^-1
- * parsers.spnl * citation_body_postnote
+ * parsers.spnlc * citation_body_postnote
local citation_body
= citation_body_chunk
- * (parsers.semicolon * parsers.spnl
+ * (parsers.semicolon * parsers.spnlc
* citation_body_chunk)^0
local citation_headless_body_postnote
= Cs((parsers.alphanumeric^1
+ parsers.bracketed
+ parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("Endline")
+ (parsers.anyescaped
- - (parsers.rbracket + parsers.at
+ - (parsers.newline + parsers.rbracket + parsers.at
+ parsers.semicolon + parsers.blankline^2))
- (parsers.spnl * parsers.rbracket))^0)
local citation_headless_body
= citation_headless_body_postnote
- * (parsers.sp * parsers.semicolon * parsers.spnl
+ * (parsers.sp * parsers.semicolon * parsers.spnlc
* citation_body_chunk)^0
local citations
@@ -4265,10 +6326,10 @@ M.extensions.citations = function(citation_nbsps)
end
local TextCitations
- = Ct((parsers.spnl
+ = Ct((parsers.spnlc
* Cc("")
* citation_name
- * ((parsers.spnl
+ * ((parsers.spnlc
* parsers.lbracket
* citation_headless_body
* parsers.rbracket) + Cc("")))^1)
@@ -4277,7 +6338,7 @@ M.extensions.citations = function(citation_nbsps)
end
local ParenthesizedCitations
- = Ct((parsers.spnl
+ = Ct((parsers.spnlc
* parsers.lbracket
* citation_body
* parsers.rbracket)^1)
@@ -4287,7 +6348,7 @@ M.extensions.citations = function(citation_nbsps)
local Citations = TextCitations + ParenthesizedCitations
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline before LinkAndEmph",
Citations, "Citations")
self.add_special_character("@")
@@ -4381,6 +6442,7 @@ M.extensions.content_blocks = function(language_map)
= (parsers.less
* Cs((parsers.anyescaped
- parsers.more
+ - parsers.spacing
- #(parsers.period
* onlineimagesuffix
* parsers.more
@@ -4413,7 +6475,7 @@ M.extensions.content_blocks = function(language_map)
* Cc("localfile")
local ContentBlock
- = parsers.leader
+ = parsers.check_trail_no_rem
* (localfilepath + onlineimageurl)
* contentblock_tail
/ writer.contentblock
@@ -4457,18 +6519,26 @@ M.extensions.definition_lists = function(tight_lists)
local defstartchar = S("~:")
- local defstart = ( defstartchar * #parsers.spacing
+ local defstart = parsers.check_trail_length(0) * defstartchar * #parsers.spacing
* (parsers.tab + parsers.space^-3)
- + parsers.space * defstartchar * #parsers.spacing
+ + parsers.check_trail_length(1) * defstartchar * #parsers.spacing
* (parsers.tab + parsers.space^-2)
- + parsers.space * parsers.space * defstartchar
- * #parsers.spacing
+ + parsers.check_trail_length(2) * defstartchar * #parsers.spacing
* (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * parsers.space
- * defstartchar * #parsers.spacing
- )
+ + parsers.check_trail_length(3) * defstartchar * #parsers.spacing
+
+ local indented_line = (parsers.check_minimal_indent / "") * parsers.check_code_trail * parsers.line
- local dlchunk = Cs(parsers.line * (parsers.indentedline - parsers.blankline)^0)
+ local blank = parsers.check_minimal_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline
+
+ local dlchunk = Cs(parsers.line * (indented_line - blank)^0)
+
+ local indented_blocks = function(bl)
+ return Cs( bl
+ * (blank^1 * (parsers.check_minimal_indent / "")
+ * parsers.check_code_trail * -parsers.blankline * bl)^0
+ * (blank^1 + parsers.eof))
+ end
local function definition_list_item(term, defs, _)
return { term = self.parser_functions.parse_inlines(term),
@@ -4476,22 +6546,22 @@ M.extensions.definition_lists = function(tight_lists)
end
local DefinitionListItemLoose
- = C(parsers.line) * parsers.skipblanklines
- * Ct((defstart
- * parsers.indented_blocks(dlchunk)
- / self.parser_functions.parse_blocks_nested)^1)
+ = C(parsers.line) * blank^0
+ * Ct((parsers.check_minimal_indent * (defstart
+ * indented_blocks(dlchunk)
+ / self.parser_functions.parse_blocks_nested))^1)
* Cc(false) / definition_list_item
local DefinitionListItemTight
= C(parsers.line)
- * Ct((defstart * dlchunk
- / self.parser_functions.parse_blocks_nested)^1)
+ * Ct((parsers.check_minimal_indent * (defstart * dlchunk
+ / self.parser_functions.parse_blocks_nested))^1)
* Cc(true) / definition_list_item
local DefinitionList
= ( Ct(DefinitionListItemLoose^1) * Cc(false)
+ Ct(DefinitionListItemTight^1)
- * (parsers.skipblanklines
+ * (blank^0
* -DefinitionListItemLoose * Cc(true))
) / writer.definitionlist
@@ -4511,8 +6581,10 @@ M.extensions.fancy_lists = function()
local buffer = {}
local num = startnum
for _,item in ipairs(items) do
- buffer[#buffer + 1] = self.fancyitem(item,num)
- if num ~= nil then
+ if item ~= "" then
+ buffer[#buffer + 1] = self.fancyitem(item,num)
+ end
+ if num ~= nil and item ~= "" then
num = num + 1
end
end
@@ -4540,52 +6612,101 @@ M.extensions.fancy_lists = function()
local options = self.options
local writer = self.writer
- local label = parsers.dig + parsers.letter
- local numdelim = parsers.period + parsers.rparent
- local enumerator = C(label^3 * numdelim) * #parsers.spacing
- + C(label^2 * numdelim) * #parsers.spacing
- * (parsers.tab + parsers.space^1)
- + C(label * numdelim) * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.space * C(label^2 * numdelim)
- * #parsers.spacing
- + parsers.space * C(label * numdelim)
- * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.space * parsers.space * C(label^1
- * numdelim) * #parsers.spacing
- local starter = parsers.bullet + enumerator
+ local function combine_markers_and_delims(markers, delims)
+ local markers_table = {}
+ for _,marker in ipairs(markers) do
+ local start_marker
+ local continuation_marker
+ if type(marker) == "table" then
+ start_marker = marker[1]
+ continuation_marker = marker[2]
+ else
+ start_marker = marker
+ continuation_marker = marker
+ end
+ for _,delim in ipairs(delims) do
+ table.insert(markers_table, {start_marker, continuation_marker, delim})
+ end
+ end
+ return markers_table
+ end
- local NestedList = Cs((parsers.optionallyindentedline
- - starter)^1)
- / function(a) return "\001"..a end
+ local function join_table_with_func(func, markers_table)
+ local pattern = func(table.unpack(markers_table[1]))
+ for i = 2, #markers_table do
+ pattern = pattern + func(table.unpack(markers_table[i]))
+ end
+ return pattern
+ end
+
+ local lowercase_letter_marker = R("az")
+ local uppercase_letter_marker = R("AZ")
+
+ local roman_marker = function(chars)
+ local m, d, c = P(chars[1]), P(chars[2]), P(chars[3])
+ local l, x, v, i = P(chars[4]), P(chars[5]), P(chars[6]), P(chars[7])
+ return m^-3
+ * (c*m + c*d + d^-1 * c^-3)
+ * (x*c + x*l + l^-1 * x^-3)
+ * (i*x + i*v + v^-1 * i^-3)
+ end
- local ListBlockLine = parsers.optionallyindentedline
- - parsers.blankline - (parsers.indent^-1
- * starter)
+ local lowercase_roman_marker = roman_marker({"m", "d", "c", "l", "x", "v", "i"})
+ local uppercase_roman_marker = roman_marker({"M", "D", "C", "L", "X", "V", "I"})
- local ListBlock = parsers.line * ListBlockLine^0
+ local lowercase_opening_roman_marker = P("i")
+ local uppercase_opening_roman_marker = P("I")
- local ListContinuationBlock = parsers.blanklines * (parsers.indent / "")
- * ListBlock
+ local digit_marker = parsers.dig * parsers.dig^-8
+
+ local markers = {
+ {lowercase_opening_roman_marker, lowercase_roman_marker},
+ {uppercase_opening_roman_marker, uppercase_roman_marker},
+ lowercase_letter_marker,
+ uppercase_letter_marker,
+ lowercase_roman_marker,
+ uppercase_roman_marker,
+ digit_marker
+ }
+
+ local delims = {
+ parsers.period,
+ parsers.rparent
+ }
+
+ local markers_table = combine_markers_and_delims(markers, delims)
+
+ local function enumerator(start_marker, _, delimiter_type, interrupting)
+ local delimiter_range
+ local allowed_end
+ if interrupting then
+ delimiter_range = P("1")
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ delimiter_range = start_marker
+ allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ end
+
+ return parsers.check_trail
+ * Ct(C(delimiter_range) * C(delimiter_type))
+ * allowed_end
+ end
+
+ local starter = join_table_with_func(enumerator, markers_table)
local TightListItem = function(starter)
- return -parsers.ThematicBreak
- * (Cs(starter / "" * parsers.tickbox^-1 * ListBlock * NestedList^-1)
- / self.parser_functions.parse_blocks_nested)
- * -(parsers.blanklines * parsers.indent)
+ return parsers.add_indent(starter, "li")
+ * parsers.indented_content_tight
end
local LooseListItem = function(starter)
- return -parsers.ThematicBreak
- * Cs( starter / "" * parsers.tickbox^-1 * ListBlock * Cc("\n")
- * (NestedList + ListContinuationBlock^0)
- * (parsers.blanklines / "\n\n")
- ) / self.parser_functions.parse_blocks_nested
+ return parsers.add_indent(starter, "li")
+ * parsers.indented_content_loose
+ * remove_indent("li")
end
local function roman2number(roman)
- local romans = { ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
+ local romans = { ["M"] = 1000, ["D"] = 500, ["C"] = 100, ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
local numeral = 0
local i = 1
@@ -4604,8 +6725,7 @@ M.extensions.fancy_lists = function()
return numeral
end
- local function sniffstyle(itemprefix)
- local numstr, delimend = itemprefix:match("^([A-Za-z0-9]*)([.)]*)")
+ local function sniffstyle(numstr, delimend)
local numdelim
if delimend == ")" then
numdelim = "OneParen"
@@ -4614,46 +6734,72 @@ M.extensions.fancy_lists = function()
else
numdelim = "Default"
end
- numstr = numstr or itemprefix
local num
- num = numstr:match("^([IVXL]+)")
+ num = numstr:match("^([I])$")
if num then
return roman2number(num), "UpperRoman", numdelim
end
- num = numstr:match("^([ivxl]+)")
+ num = numstr:match("^([i])$")
if num then
return roman2number(string.upper(num)), "LowerRoman", numdelim
end
- num = numstr:match("^([A-Z])")
+ num = numstr:match("^([A-Z])$")
if num then
return string.byte(num) - string.byte("A") + 1, "UpperAlpha", numdelim
end
- num = numstr:match("^([a-z])")
+ num = numstr:match("^([a-z])$")
if num then
return string.byte(num) - string.byte("a") + 1, "LowerAlpha", numdelim
end
+ num = numstr:match("^([IVXLCDM]+)")
+ if num then
+ return roman2number(num), "UpperRoman", numdelim
+ end
+ num = numstr:match("^([ivxlcdm]+)")
+ if num then
+ return roman2number(string.upper(num)), "LowerRoman", numdelim
+ end
return math.floor(tonumber(numstr) or 1), "Decimal", numdelim
end
local function fancylist(items,tight,start)
- local startnum, numstyle, numdelim = sniffstyle(start)
+ local startnum, numstyle, numdelim = sniffstyle(start[2][1], start[2][2])
return writer.fancylist(items,tight,
- options.startNumber and startnum,
+ options.startNumber and startnum or 1,
numstyle or "Decimal",
numdelim or "Default")
end
- local FancyList = Cg(enumerator, "listtype") *
- ( Ct(TightListItem(Cb("listtype"))
- * TightListItem(enumerator)^0)
- * Cc(true) * parsers.skipblanklines * -enumerator
- + Ct(LooseListItem(Cb("listtype"))
- * LooseListItem(enumerator)^0)
- * Cc(false) * parsers.skipblanklines
- ) * Cb("listtype") / fancylist
+ local FancyListOfType = function(start_marker, continuation_marker, delimiter_type)
+ local enumerator_start = enumerator(start_marker, continuation_marker, delimiter_type)
+ local enumerator_cont = enumerator(continuation_marker, continuation_marker, delimiter_type)
+ return Cg(enumerator_start, "listtype")
+ * (Ct( TightListItem(Cb("listtype"))
+ * ((parsers.check_minimal_indent / "") * TightListItem(enumerator_cont))^0)
+ * Cc(true)
+ * -#((parsers.conditionally_indented_blankline^0 / "")
+ * parsers.check_minimal_indent * enumerator_cont)
+ + Ct( LooseListItem(Cb("listtype"))
+ * ((parsers.conditionally_indented_blankline^0 / "")
+ * (parsers.check_minimal_indent / "") * LooseListItem(enumerator_cont))^0)
+ * Cc(false)
+ ) * Ct(Cb("listtype")) / fancylist
+ end
+
+ local FancyList = join_table_with_func(FancyListOfType, markers_table)
+
+ local Endline = parsers.newline
+ * (parsers.check_minimal_indent
+ * -parsers.EndlineExceptions
+ + parsers.check_optional_indent
+ * -parsers.EndlineExceptions
+ * -starter)
+ * parsers.spacechar^0
+ / writer.soft_line_break
self.update_rule("OrderedList", FancyList)
+ self.update_rule("Endline", Endline)
end
}
end
@@ -4675,7 +6821,7 @@ M.extensions.fenced_code = function(blank_before_code_fence,
end
local name = util.cache_verbatim(options.cacheDir, s)
table.insert(buf, {"\\markdownRendererInputFencedCode{",
- name,"}{",self.string(i),"}"})
+ name,"}{",self.string(i),"}{",self.infostring(i),"}"})
if attr ~= nil then
table.insert(buf, "\\markdownRendererFencedCodeAttributeContextEnd")
end
@@ -4699,18 +6845,52 @@ M.extensions.fenced_code = function(blank_before_code_fence,
return #a >= #b and i
end
- local tilde_infostring
- = C((parsers.linechar
- - (parsers.spacechar^1 * parsers.newline))^0)
+ local function strip_enclosing_whitespaces(str)
+ return str:gsub("^%s*(.-)%s*$", "%1")
+ end
+
+ local tilde_infostring = Cs(Cs((V("HtmlEntity")
+ + parsers.anyescaped
+ - parsers.newline)^0)
+ / strip_enclosing_whitespaces)
- local backtick_infostring
- = C((parsers.linechar
- - (parsers.backtick
- + parsers.spacechar^1 * parsers.newline))^0)
+ local backtick_infostring = Cs(Cs((V("HtmlEntity")
+ + (-#(parsers.backslash * parsers.backtick) * parsers.anyescaped)
+ - parsers.newline
+ - parsers.backtick)^0)
+ / strip_enclosing_whitespaces)
local fenceindent
+
+ local function has_trail(indent_table)
+ return indent_table ~= nil and
+ indent_table.trail ~= nil and
+ next(indent_table.trail) ~= nil
+ end
+
+ local function has_indents(indent_table)
+ return indent_table ~= nil and
+ indent_table.indents ~= nil and
+ next(indent_table.indents) ~= nil
+ end
+
+ local function get_last_indent_name(indent_table)
+ if has_indents(indent_table) then
+ return indent_table.indents[#indent_table.indents].name
+ end
+ end
+
+ local function count_fenced_start_indent(_, _, indent_table, trail)
+ local last_indent_name = get_last_indent_name(indent_table)
+ fenceindent = 0
+ if last_indent_name ~= "li" then
+ fenceindent = #trail
+ end
+ return true
+ end
+
local fencehead = function(char, infostring)
- return C(parsers.nonindentspace) / function(s) fenceindent = #s end
+ return Cmt(Cb("indent_info") * parsers.check_trail, count_fenced_start_indent)
* Cg(char^3, "fencelength")
* parsers.optionalspace
* infostring
@@ -4718,52 +6898,69 @@ M.extensions.fenced_code = function(blank_before_code_fence,
end
local fencetail = function(char)
- return parsers.nonindentspace
+ return parsers.check_trail_no_rem
* Cmt(C(char^3) * Cb("fencelength"), captures_geq_length)
* parsers.optionalspace * (parsers.newline + parsers.eof)
+ parsers.eof
end
- local fencedline = function(char)
- return C(parsers.line - fencetail(char))
- / function(s)
- local i = 1
- local remaining = fenceindent
- while true do
- local c = s:sub(i, i)
- if c == " " and remaining > 0 then
- remaining = remaining - 1
- i = i + 1
- elseif c == "\t" and remaining > 3 then
- remaining = remaining - 4
- i = i + 1
- else
- break
- end
- end
- return s:sub(i)
- end
+ local function process_fenced_line(s, i, indent_table, line_content, is_blank) -- luacheck: ignore s i
+ local remainder = ""
+ if has_trail(indent_table) then
+ remainder = indent_table.trail.internal_remainder
+ end
+
+ if is_blank and get_last_indent_name(indent_table) == "li" then
+ remainder = ""
+ end
+
+ local str = remainder .. line_content
+ local index = 1
+ local remaining = fenceindent
+
+ while true do
+ local c = str:sub(index, index)
+ if c == " " and remaining > 0 then
+ remaining = remaining - 1
+ index = index + 1
+ elseif c == "\t" and remaining > 3 then
+ remaining = remaining - 4
+ index = index + 1
+ else
+ break
+ end
+ end
+
+ return true, str:sub(index)
end
+ local fencedline = function(char)
+ return Cmt(Cb("indent_info") * C(parsers.line - fencetail(char)) * Cc(false), process_fenced_line)
+ end
+
+ local blankfencedline = Cmt(Cb("indent_info") * C(parsers.blankline) * Cc(true), process_fenced_line)
+
local TildeFencedCode
= fencehead(parsers.tilde, tilde_infostring)
- * Cs(fencedline(parsers.tilde)^0)
- * fencetail(parsers.tilde)
+ * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline
+ + (parsers.check_minimal_indent / "") * fencedline(parsers.tilde))^0)
+ * ((parsers.check_minimal_indent / "") * fencetail(parsers.tilde) + parsers.succeed)
local BacktickFencedCode
= fencehead(parsers.backtick, backtick_infostring)
- * Cs(fencedline(parsers.backtick)^0)
- * fencetail(parsers.backtick)
+ * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline
+ + (parsers.check_minimal_indent / "") * fencedline(parsers.backtick))^0)
+ * ((parsers.check_minimal_indent / "") * fencetail(parsers.backtick) + parsers.succeed)
- local infostring_with_attributes
- = Ct(C((parsers.linechar
- - ( parsers.optionalspace
- * parsers.attributes))^0)
- * parsers.optionalspace
- * Ct(parsers.attributes))
+ local infostring_with_attributes
+ = Ct(C((parsers.linechar
+ - ( parsers.optionalspace
+ * parsers.attributes))^0)
+ * parsers.optionalspace
+ * Ct(parsers.attributes))
local FencedCode
- = (TildeFencedCode + BacktickFencedCode)
+ = ((TildeFencedCode + BacktickFencedCode)
/ function(infostring, code)
local expanded_code = self.expandtabs(code)
@@ -4784,7 +6981,7 @@ M.extensions.fenced_code = function(blank_before_code_fence,
end
end
return writer.fencedCode(expanded_code, infostring, attr)
- end
+ end)
self.insert_pattern("Block after Verbatim",
FencedCode, "FencedCode")
@@ -4816,7 +7013,7 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
function self.div_begin(attributes)
local start_output = {"\\markdownRendererFencedDivAttributeContextBegin\n",
self.attributes(attributes)}
- local end_output = {"\n\\markdownRendererFencedDivAttributeContextEnd "}
+ local end_output = {"\\markdownRendererFencedDivAttributeContextEnd "}
return self.push_attributes("div", attributes, start_output, end_output)
end
function self.div_end()
@@ -4856,6 +7053,31 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
, "div_level")
end
+ local non_fenced_div_block = parsers.check_minimal_indent * V("Block")
+ - parsers.check_minimal_indent_and_trail * fenced_div_end
+
+ local non_fenced_div_paragraph = parsers.check_minimal_indent * V("Paragraph")
+ - parsers.check_minimal_indent_and_trail * fenced_div_end
+
+ local blank = parsers.minimally_indented_blank
+
+ local block_separated = parsers.block_sep_group(blank)
+ * non_fenced_div_block
+
+ local loop_body_pair = parsers.create_loop_body_pair(block_separated,
+ non_fenced_div_paragraph,
+ parsers.block_sep_group(blank),
+ parsers.par_sep_group(blank))
+
+ local content_loop = ( non_fenced_div_block
+ * loop_body_pair.block^0
+ + non_fenced_div_paragraph
+ * block_separated
+ * loop_body_pair.block^0
+ + non_fenced_div_paragraph
+ * loop_body_pair.par^0)
+ * blank^0
+
local FencedDiv = fenced_div_begin
/ function (infostring)
local attr = lpeg.match(Ct(parsers.attributes), infostring)
@@ -4867,14 +7089,9 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
/ writer.div_begin
* increment_div_level(1)
* parsers.skipblanklines
- * Ct( (V("Block") - fenced_div_end)^-1
- * ( parsers.blanklines
- / function()
- return writer.interblocksep
- end
- * (V("Block") - fenced_div_end))^0)
- * parsers.skipblanklines
- * fenced_div_end * increment_div_level(-1)
+ * Ct(content_loop)
+ * parsers.minimally_indented_blank^0
+ * parsers.check_minimal_indent_and_trail * fenced_div_end * increment_div_level(-1)
* (Cc("") / writer.div_end)
self.insert_pattern("Block after Verbatim",
@@ -4890,13 +7107,6 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
local is_inside_div = Cmt(Cb("div_level"), check_div_level)
local fencestart = is_inside_div * fenced_div_end
- self.update_rule("BlockquoteExceptions", function(previous_pattern)
- if previous_pattern == nil then
- previous_pattern = parsers.BlockquoteExceptions
- end
- return previous_pattern + fencestart
- end)
-
if not blank_before_div_fence then
self.update_rule("EndlineExceptions", function(previous_pattern)
if previous_pattern == nil then
@@ -4916,47 +7126,58 @@ M.extensions.header_attributes = function()
local parsers = self.parsers
local writer = self.writer
+ local function strip_atx_end(s)
+ return s:gsub("%s+#*%s*$","")
+ end
+
local AtxHeading = Cg(parsers.heading_start, "level")
* parsers.optionalspace
* (C(((parsers.linechar
- - ((parsers.hash^1
+ - (parsers.attributes
* parsers.optionalspace
- * parsers.attributes^-1
- + parsers.attributes)
- * parsers.optionalspace
- * parsers.newline))
- * (parsers.linechar
- - parsers.hash
- - parsers.lbrace)^0)^1)
- / self.parser_functions.parse_inlines)
+ * parsers.newline))
+ * (parsers.linechar
+ - parsers.lbrace)^0)^1)
+ / strip_atx_end
+ / parsers.parse_heading_text)
* Cg(Ct(parsers.newline
- + (parsers.hash^1
+ + (parsers.attributes
* parsers.optionalspace
- * parsers.attributes^-1
- + parsers.attributes)
- * parsers.optionalspace
- * parsers.newline), "attributes")
+ * parsers.newline)), "attributes")
* Cb("level")
* Cb("attributes")
/ writer.heading
- local SetextHeading = #(parsers.line * S("=-"))
- * (C(((parsers.linechar
- - (parsers.attributes
- * parsers.optionalspace
- * parsers.newline))
- * (parsers.linechar
- - parsers.lbrace)^0)^1)
- / self.parser_functions.parse_inlines)
- * Cg(Ct(parsers.newline
- + (parsers.attributes
- * parsers.optionalspace
- * parsers.newline)), "attributes")
- * parsers.heading_level
- * Cb("attributes")
- * parsers.optionalspace
- * parsers.newline
- / writer.heading
+ local function strip_trailing_spaces(s)
+ return s:gsub("%s*$","")
+ end
+
+ local heading_line = (parsers.linechar
+ - (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline))^1
+ - parsers.thematic_break_lines
+
+ local heading_text = heading_line
+ * ((V("Endline") / "\n") * (heading_line - parsers.heading_level))^0
+ * parsers.newline^-1
+
+ local SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem
+ * #(heading_text
+ * (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline)^-1
+ * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level)
+ * Cs(heading_text) / strip_trailing_spaces
+ / parsers.parse_heading_text
+ * Cg(Ct((parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline)^-1), "attributes")
+ * parsers.check_minimal_indent_and_trail * parsers.heading_level
+ * Cb("attributes")
+ * parsers.newline
+ * parsers.unfreeze_trail
+ / writer.heading
local Heading = AtxHeading + SetextHeading
self.update_rule("Heading", Heading)
@@ -5018,95 +7239,55 @@ M.extensions.line_blocks = function()
end
}
end
+M.extensions.mark = function()
+ return {
+ name = "built-in mark syntax extension",
+ extend_writer = function(self)
+ function self.mark(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererMark{", s, "}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local doubleequals = P("==")
+
+ local Mark = parsers.between(V("Inline"), doubleequals, doubleequals)
+ / function (inlines) return writer.mark(inlines) end
+
+ self.add_special_character("=")
+ self.insert_pattern("Inline before LinkAndEmph",
+ Mark, "Mark")
+ end
+ }
+end
M.extensions.link_attributes = function()
return {
name = "built-in link_attributes syntax extension",
extend_writer = function()
end, extend_reader = function(self)
local parsers = self.parsers
- local writer = self.writer
local options = self.options
-
- local define_reference_parser = parsers.define_reference_parser
- * ( parsers.spnl
- * Ct(parsers.attributes))^-1
+ local define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon
+ * parsers.spnlc * parsers.url
+ * ( parsers.spnlc_sep * parsers.title * (parsers.spnlc * Ct(parsers.attributes))
+ * parsers.only_blank
+ + parsers.spnlc_sep * parsers.title * parsers.only_blank
+ + Cc("") * (parsers.spnlc * Ct(parsers.attributes)) * parsers.only_blank
+ + Cc("") * parsers.only_blank)
local ReferenceWithAttributes = define_reference_parser
- * parsers.blankline^1
/ self.register_link
self.update_rule("Reference", ReferenceWithAttributes)
- local function indirect_link(label, sps, tag,
- attribute_text,
- attributes)
- return writer.defer_call(function()
- local r, fallback = self.lookup_reference(label, sps, tag,
- attributes)
- if r then
- return writer.link(
- self.parser_functions.parse_inlines_no_link(label),
- r.url, r.title, r.attributes)
- else
- local buf = {fallback}
- if attributes then
- table.insert(buf, writer.string(attribute_text))
- end
- return buf
- end
- end)
- end
-
- local DirectLinkWithAttributes = parsers.direct_link
- * (Ct(parsers.attributes))^-1
- / writer.link
-
- local IndirectLinkWithAttributes = parsers.indirect_link
- * (C(Ct(parsers.attributes)))^-1
- / indirect_link
-
- local LinkWithAttributes = DirectLinkWithAttributes
- + IndirectLinkWithAttributes
-
- self.update_rule("Link", LinkWithAttributes)
-
-
- local function indirect_image(label, sps, tag,
- attribute_text,
- attributes)
- return writer.defer_call(function()
- local r, fallback = self.lookup_reference(label, sps, tag,
- attributes)
- if r then
- return writer.image(writer.string(label),
- r.url, r.title, r.attributes)
- else
- local buf = {"!", fallback}
- if attributes then
- table.insert(buf, writer.string(attribute_text))
- end
- return buf
- end
- end)
- end
-
- local DirectImageWithAttributes = parsers.direct_image
- * Ct(parsers.attributes)
- / writer.image
-
- local IndirectImageWithAttributes = parsers.indirect_image
- * C(Ct(parsers.attributes))
- / indirect_image
-
- local ImageWithAttributes = DirectImageWithAttributes
- + IndirectImageWithAttributes
-
- self.insert_pattern("Inline before Image",
- ImageWithAttributes,
- "ImageWithAttributes")
+ local LinkWithAttributesAndEmph = Ct(parsers.link_and_emph_table * Cg(Cc(true), "match_link_attributes"))
+ / self.defer_link_and_emphasis_processing
+ self.update_rule("LinkAndEmph", LinkWithAttributesAndEmph)
local AutoLinkUrlWithAttributes
= parsers.auto_link_url
@@ -5149,6 +7330,7 @@ M.extensions.notes = function(notes, inline_notes)
name = "built-in notes syntax extension",
extend_writer = function(self)
function self.note(s)
+ if self.flatten_inlines then return "" end
return {"\\markdownRendererNote{",s,"}"}
end
end, extend_reader = function(self)
@@ -5158,10 +7340,10 @@ M.extensions.notes = function(notes, inline_notes)
if inline_notes then
local InlineNote
= parsers.circumflex
- * (parsers.tag / self.parser_functions.parse_inlines_no_inline_note)
+ * (parsers.link_label / self.parser_functions.parse_inlines_no_inline_note)
/ writer.note
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
InlineNote, "InlineNote")
end
if notes then
@@ -5171,7 +7353,7 @@ M.extensions.notes = function(notes, inline_notes)
local RawNoteRef
= #(parsers.lbracket * parsers.circumflex)
- * parsers.tag / strip_first_char
+ * parsers.link_label / strip_first_char
local rawnotes = {}
@@ -5190,21 +7372,36 @@ M.extensions.notes = function(notes, inline_notes)
end
local function register_note(ref,rawnote)
- rawnotes[self.normalize_tag(ref)] = rawnote
+ local normalized_tag = self.normalize_tag(ref)
+ if rawnotes[normalized_tag] == nil then
+ rawnotes[normalized_tag] = rawnote
+ end
return ""
end
local NoteRef = RawNoteRef / lookup_note
+ local optionally_indented_line = parsers.check_optional_indent_and_any_trail * parsers.line
+
+ local blank = parsers.check_optional_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline
+
+ local chunk = Cs(parsers.line * (optionally_indented_line - blank)^0)
+
+ local indented_blocks = function(bl)
+ return Cs( bl
+ * (blank^1 * (parsers.check_optional_indent / "")
+ * parsers.check_code_trail * -parsers.blankline * bl)^0)
+ end
+
local NoteBlock
- = parsers.leader * RawNoteRef * parsers.colon
- * parsers.spnl * parsers.indented_blocks(parsers.chunk)
+ = parsers.check_trail_no_rem * RawNoteRef * parsers.colon
+ * parsers.spnlc * indented_blocks(chunk)
/ register_note
- local Blank = NoteBlock + parsers.Blank
- self.update_rule("Blank", Blank)
+ local Reference = NoteBlock + parsers.Reference
- self.insert_pattern("Inline after Emph",
+ self.update_rule("Reference", Reference)
+ self.insert_pattern("Inline before LinkAndEmph",
NoteRef, "NoteRef")
end
@@ -5212,7 +7409,7 @@ M.extensions.notes = function(notes, inline_notes)
end
}
end
-M.extensions.pipe_tables = function(table_captions)
+M.extensions.pipe_tables = function(table_captions, table_attributes)
local function make_pipe_table_rectangular(rows)
local num_columns = #rows[2]
@@ -5270,10 +7467,18 @@ M.extensions.pipe_tables = function(table_captions)
return {
name = "built-in pipe_tables syntax extension",
extend_writer = function(self)
- function self.table(rows, caption)
+ function self.table(rows, caption, attributes)
if not self.is_writing then return "" end
- local buffer = {"\\markdownRendererTable{",
- caption or "", "}{", #rows - 1, "}{", #rows[1], "}"}
+ local buffer = {}
+ if attributes ~= nil then
+ table.insert(buffer,
+ "\\markdownRendererTableAttributeContextBegin\n")
+ table.insert(buffer, self.attributes(attributes))
+ end
+ table.insert(buffer,
+ {"\\markdownRendererTable{",
+ caption or "", "}{", #rows - 1, "}{",
+ #rows[1], "}"})
local temp = rows[2] -- put alignments on the first row
rows[2] = rows[1]
rows[1] = temp
@@ -5290,6 +7495,10 @@ M.extensions.pipe_tables = function(table_captions)
end
table.insert(buffer, "}")
end
+ if attributes ~= nil then
+ table.insert(buffer,
+ "\\markdownRendererTableAttributeContextEnd{}")
+ end
return buffer
end
end, extend_reader = function(self)
@@ -5319,31 +7528,65 @@ M.extensions.pipe_tables = function(table_captions)
, table_hline_separator
, table_hline_column)
- local table_caption_beginning = parsers.skipblanklines
- * parsers.nonindentspace
+ local table_caption_beginning = (parsers.check_minimal_blank_indent_and_any_trail_no_rem
+ * parsers.optionalspace * parsers.newline)^0
+ * parsers.check_minimal_indent_and_trail
* (P("Table")^-1 * parsers.colon)
* parsers.optionalspace
+ local function strip_trailing_spaces(s)
+ return s:gsub("%s*$","")
+ end
+
local table_row = pipe_table_row(true
, (C((parsers.linechar - parsers.pipe)^1)
+ / strip_trailing_spaces
/ self.parser_functions.parse_inlines)
, parsers.pipe
, (C((parsers.linechar - parsers.pipe)^0)
+ / strip_trailing_spaces
/ self.parser_functions.parse_inlines))
local table_caption
if table_captions then
table_caption = #table_caption_beginning
* table_caption_beginning
- * Ct(parsers.IndentedInline^1)
- * parsers.newline
+ if table_attributes then
+ table_caption = table_caption
+ * (C(((( parsers.linechar
+ - (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline
+ * -#( parsers.optionalspace
+ * parsers.linechar)))
+ + ( parsers.newline
+ * #( parsers.optionalspace
+ * parsers.linechar)
+ * C(parsers.optionalspace) / writer.space))
+ * (parsers.linechar
+ - parsers.lbrace)^0)^1)
+ / self.parser_functions.parse_inlines)
+ * (parsers.newline
+ + ( Ct(parsers.attributes)
+ * parsers.optionalspace
+ * parsers.newline))
+ else
+ table_caption = table_caption
+ * C(( parsers.linechar
+ + ( parsers.newline
+ * #( parsers.optionalspace
+ * parsers.linechar)
+ * C(parsers.optionalspace) / writer.space))^1)
+ / self.parser_functions.parse_inlines
+ * parsers.newline
+ end
else
table_caption = parsers.fail
end
- local PipeTable = Ct(table_row * parsers.newline
- * table_hline
- * (parsers.newline * table_row)^0)
+ local PipeTable = Ct(table_row * parsers.newline * (parsers.check_minimal_indent_and_trail / {})
+ * table_hline * parsers.newline
+ * ((parsers.check_minimal_indent / {}) * table_row * parsers.newline)^0)
/ make_pipe_table_rectangular
* table_caption^-1
/ writer.table
@@ -5361,6 +7604,7 @@ M.extensions.raw_inline = function()
function self.rawInline(s, attr)
if not self.is_writing then return "" end
+ if self.flatten_inlines then return s end
local name = util.cache_verbatim(options.cacheDir, s)
return {"\\markdownRendererInputRawInline{",
name,"}{", self.string(attr),"}"}
@@ -5382,6 +7626,7 @@ M.extensions.strike_through = function()
name = "built-in strike_through syntax extension",
extend_writer = function(self)
function self.strike_through(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererStrikeThrough{",s,"}"}
end
end, extend_reader = function(self)
@@ -5393,7 +7638,7 @@ M.extensions.strike_through = function()
parsers.doubletildes)
) / writer.strike_through
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
StrikeThrough, "StrikeThrough")
self.add_special_character("~")
@@ -5405,6 +7650,7 @@ M.extensions.subscripts = function()
name = "built-in subscripts syntax extension",
extend_writer = function(self)
function self.subscript(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererSubscript{",s,"}"}
end
end, extend_reader = function(self)
@@ -5415,7 +7661,7 @@ M.extensions.subscripts = function()
parsers.between(parsers.Str, parsers.tilde, parsers.tilde)
) / writer.subscript
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
Subscript, "Subscript")
self.add_special_character("~")
@@ -5427,6 +7673,7 @@ M.extensions.superscripts = function()
name = "built-in superscripts syntax extension",
extend_writer = function(self)
function self.superscript(s)
+ if self.flatten_inlines then return s end
return {"\\markdownRendererSuperscript{",s,"}"}
end
end, extend_reader = function(self)
@@ -5437,7 +7684,7 @@ M.extensions.superscripts = function()
parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex)
) / writer.superscript
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
Superscript, "Superscript")
self.add_special_character("^")
@@ -5451,11 +7698,11 @@ M.extensions.tex_math = function(tex_math_dollars,
name = "built-in tex_math syntax extension",
extend_writer = function(self)
function self.display_math(s)
- if not self.is_writing then return "" end
+ if self.flatten_inlines then return s end
return {"\\markdownRendererDisplayMath{",self.math(s),"}"}
end
function self.inline_math(s)
- if not self.is_writing then return "" end
+ if self.flatten_inlines then return s end
return {"\\markdownRendererInlineMath{",self.math(s),"}"}
end
end, extend_reader = function(self)
@@ -5463,24 +7710,33 @@ M.extensions.tex_math = function(tex_math_dollars,
local writer = self.writer
local function between(p, starter, ender)
- return (starter * C(p * (p - ender)^0) * ender)
+ return (starter * Cs(p * (p - ender)^0) * ender)
+ end
+
+ local function strip_preceding_whitespaces(str)
+ return str:gsub("^%s*(.-)$", "%1")
end
local allowed_before_closing = B( parsers.backslash * parsers.any
- + parsers.any * (parsers.nonspacechar - parsers.backslash))
- local dollar_math_content = parsers.backslash^-1
- * parsers.any
+ + parsers.any * (parsers.any - parsers.backslash))
+
+ local allowed_before_closing_no_space = B( parsers.backslash * parsers.any
+ + parsers.any * (parsers.nonspacechar - parsers.backslash))
+
+ local dollar_math_content = (parsers.newline * (parsers.check_optional_indent / "")
+ + parsers.backslash^-1
+ * parsers.linechar)
- parsers.blankline^2
- parsers.dollar
local inline_math_opening_dollars = parsers.dollar
* #(parsers.nonspacechar)
- local inline_math_closing_dollars = allowed_before_closing
+ local inline_math_closing_dollars = allowed_before_closing_no_space
* parsers.dollar
* -#(parsers.digit)
- local inline_math_dollars = between(C( dollar_math_content),
+ local inline_math_dollars = between(Cs( dollar_math_content),
inline_math_opening_dollars,
inline_math_closing_dollars)
@@ -5490,59 +7746,66 @@ M.extensions.tex_math = function(tex_math_dollars,
local display_math_closing_dollars = parsers.dollar
* parsers.dollar
- local display_math_dollars = between(C( dollar_math_content),
+ local display_math_dollars = between(Cs( dollar_math_content),
display_math_opening_dollars,
display_math_closing_dollars)
- local backslash_math_content = parsers.any
+ local backslash_math_content = (parsers.newline * (parsers.check_optional_indent / "")
+ + parsers.linechar)
- parsers.blankline^2
local inline_math_opening_double = parsers.backslash
* parsers.backslash
* parsers.lparent
- * #(parsers.nonspacechar)
local inline_math_closing_double = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.backslash
* parsers.rparent
- local inline_math_double = between(C( backslash_math_content),
+ local inline_math_double = between(Cs( backslash_math_content),
inline_math_opening_double,
inline_math_closing_double)
+ / strip_preceding_whitespaces
local display_math_opening_double = parsers.backslash
* parsers.backslash
* parsers.lbracket
local display_math_closing_double = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.backslash
* parsers.rbracket
- local display_math_double = between(C( backslash_math_content),
+ local display_math_double = between(Cs( backslash_math_content),
display_math_opening_double,
display_math_closing_double)
+ / strip_preceding_whitespaces
local inline_math_opening_single = parsers.backslash
* parsers.lparent
- * #(parsers.nonspacechar)
local inline_math_closing_single = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.rparent
- local inline_math_single = between(C( backslash_math_content),
+ local inline_math_single = between(Cs( backslash_math_content),
inline_math_opening_single,
inline_math_closing_single)
+ / strip_preceding_whitespaces
local display_math_opening_single = parsers.backslash
* parsers.lbracket
local display_math_closing_single = allowed_before_closing
+ * parsers.spacechar^0
* parsers.backslash
* parsers.rbracket
- local display_math_single = between(C( backslash_math_content),
+ local display_math_single = between(Cs( backslash_math_content),
display_math_opening_single,
display_math_closing_single)
+ / strip_preceding_whitespaces
local display_math = parsers.fail
@@ -5566,7 +7829,7 @@ M.extensions.tex_math = function(tex_math_dollars,
local TexMath = display_math / writer.display_math
+ inline_math / writer.inline_math
- self.insert_pattern("Inline after Emph",
+ self.insert_pattern("Inline after LinkAndEmph",
TexMath, "TexMath")
if tex_math_dollars then
@@ -5719,6 +7982,21 @@ function M.new(options)
options = options or {}
setmetatable(options, { __index = function (_, key)
return defaultOptions[key] end })
+ if options.singletonCache and singletonCache.convert then
+ for k, v in pairs(defaultOptions) do
+ if type(v) == "table" then
+ for i = 1, math.max(#singletonCache.options[k], #options[k]) do
+ if singletonCache.options[k][i] ~= options[k][i] then
+ goto miss
+ end
+ end
+ elseif singletonCache.options[k] ~= options[k] then
+ goto miss
+ end
+ end
+ return singletonCache.convert
+ end
+ ::miss::
local extensions = {}
if options.bracketedSpans then
@@ -5780,9 +8058,14 @@ function M.new(options)
table.insert(extensions, line_block_extension)
end
+ if options.mark then
+ local mark_extension = M.extensions.mark()
+ table.insert(extensions, mark_extension)
+ end
+
if options.pipeTables then
local pipe_tables_extension = M.extensions.pipe_tables(
- options.tableCaptions)
+ options.tableCaptions, options.tableAttributes)
table.insert(extensions, pipe_tables_extension)
end
@@ -5816,11 +8099,9 @@ function M.new(options)
table.insert(extensions, tex_math_extension)
end
- if options.footnotes or options.inlineFootnotes or
- options.notes or options.inlineNotes then
+ if options.notes or options.inlineNotes then
local notes_extension = M.extensions.notes(
- options.footnotes or options.notes,
- options.inlineFootnotes or options.inlineNotes)
+ options.notes, options.inlineNotes)
table.insert(extensions, notes_extension)
end
@@ -5901,7 +8182,18 @@ function M.new(options)
local writer = M.writer.new(options)
local reader = M.reader.new(writer, options)
local convert = reader.finalize_grammar(extensions)
-
+ collectgarbage("collect")
+ if options.singletonCache then
+ local singletonCacheOptions = {}
+ for k, v in pairs(options) do
+ singletonCacheOptions[k] = v
+ end
+ setmetatable(singletonCacheOptions,
+ { __index = function (_, key)
+ return defaultOptions[key] end })
+ singletonCache.options = singletonCacheOptions
+ singletonCache.convert = convert
+ end
return convert
end