summaryrefslogtreecommitdiff
path: root/macros/generic/markdown
diff options
context:
space:
mode:
Diffstat (limited to 'macros/generic/markdown')
-rw-r--r--macros/generic/markdown/CHANGES.md589
-rw-r--r--macros/generic/markdown/DEPENDS.txt24
-rw-r--r--macros/generic/markdown/README.md147
-rw-r--r--macros/generic/markdown/VERSION2
-rw-r--r--macros/generic/markdown/docstrip.cfg10
-rw-r--r--macros/generic/markdown/examples/context-mkiv.tex31
-rw-r--r--macros/generic/markdown/examples/latex-luatex.tex9
-rw-r--r--macros/generic/markdown/examples/latex-pdftex.tex9
-rw-r--r--macros/generic/markdown/examples/optex.tex7
-rw-r--r--macros/generic/markdown/libraries/markdown-tinyyaml.lua880
-rw-r--r--macros/generic/markdown/markdown.dtx10903
-rw-r--r--macros/generic/markdown/markdown.html9512
-rw-r--r--macros/generic/markdown/markdown.ins12
-rw-r--r--macros/generic/markdown/markdown.pdfbin1124699 -> 1371989 bytes
14 files changed, 12824 insertions, 9311 deletions
diff --git a/macros/generic/markdown/CHANGES.md b/macros/generic/markdown/CHANGES.md
index 550989a936..8e6f507c9f 100644
--- a/macros/generic/markdown/CHANGES.md
+++ b/macros/generic/markdown/CHANGES.md
@@ -1,5 +1,574 @@
# Changes
+## 3.10.0
+
+Development:
+
+- Add a built-in theme `witiko/diagrams@v2` for drawing different types of
+ diagrams. (#448, #514, #531, #542, [matrix.org][matrix-542], a9cadc41,
+ 578e64d6, 22efe7f4, a3c2d93b, originally suggested by @anubane)
+
+ [matrix-542]: https://matrix.to/#/!UeAwznpYwwsinVTetR:matrix.org/$CpfhKJT8DAkzH7Rx6ynV1BKFKbfMUtxkpNzqftvLGec?via=matrix.org&via=im.f3l.de
+
+ Here is an example LaTeX document using the new theme:
+
+ ```` tex
+ \documentclass{article}
+ \usepackage[import=witiko/diagrams@v2, relativeReferences]{markdown}
+ \begin{document}
+ \begin{markdown}
+ ``` dot {caption="An example directed graph" width=12cm #dot}
+ digraph tree {
+ margin = 0;
+ rankdir = "LR";
+
+ latex -> pmml;
+ latex -> cmml;
+ pmml -> slt;
+ cmml -> opt;
+ cmml -> prefix;
+ cmml -> infix;
+ pmml -> mterms [style=dashed];
+ cmml -> mterms;
+
+ latex [label = "LaTeX"];
+ pmml [label = "Presentation MathML"];
+ cmml [label = "Content MathML"];
+ slt [label = "Symbol Layout Tree"];
+ opt [label = "Operator Tree"];
+ prefix [label = "Prefix"];
+ infix [label = "Infix"];
+ mterms [label = "M-Terms"];
+ }
+ ```
+
+ ``` mermaid {caption="An example mindmap" width=9cm #mermaid}
+ mindmap
+ root )base-idea(
+ sub<br/>idea 1
+ ((?))
+ sub<br/>idea 2
+ ((?))
+ sub<br/>idea 3
+ ((?))
+ sub<br/>idea 4
+ ((?))
+ ```
+
+ ``` plantuml {caption="An example UML sequence diagram" width=7cm #plantuml}
+ @startuml
+ ' Define participants (actors)
+ participant "Client" as C
+ participant "Server" as S
+ participant "Database" as DB
+
+ ' Diagram title
+ title Simple Request-Response Flow
+
+ ' Messages
+ C -> S: Send Request
+ note over S: Process request
+
+ alt Request is valid
+ S -> DB: Query Data
+ DB -> S: Return Data
+ S -> C: Respond with Data
+ else Request is invalid
+ S -> C: Return Error
+ end
+ @enduml
+ ```
+
+ See the diagrams in figures <#dot>, <#mermaid>, and <#plantuml>.
+ \end{markdown}
+ \end{document}
+ ````````
+
+ You may use the expl3 prop `\g_markdown_diagrams_infostrings_prop` to
+ register other types of diagrams.
+
+- Add option `jekyllDataKeyValue` for routing YAML metadata to expl3 key–values.
+ (#77, #517, [matrix.org][matrix-517], #539, [matrix.org][matrix-539],
+ f57a8c45, originally suggested by @TeXhackse)
+
+ While the primary intended users of this new option are package authors,
+ writers can also use this feature to configure various (La)TeX packages
+ from YAML:
+
+ ``` tex
+ \documentclass{article}
+ \usepackage{chemformula, lua-widow-control, phonenumbers}
+ \usepackage[raw_attribute, tex_math_dollars]{markdown}
+ \begin{document}
+ \begin{markdown}[jekyll_data, jekyll_data_key_value]
+
+ ---
+ chemformula:
+ decimal-marker: $\cdot$
+ lua-widow-control:
+ draft: true
+ showcolours: true
+ phonenumbers:
+ area-code: place
+ area-code-sep: space
+ country: UK
+ ---
+
+ Phone number: `\phonenumber{02079460345}`{=tex}
+
+ Chemical reaction: `\ch{A + B -> 3.14159}`{=tex}
+
+ \end{markdown}
+ \end{document}
+ ```
+
+ This won't work for every package but many packages use expl3 key–values
+ internally for their configuration. If you are curious if your favorite
+ package does, look for `\keys_define` in its source code.
+
+ For more examples, see #517.
+
+ [matrix-517]: https://matrix.to/#/!UeAwznpYwwsinVTetR:matrix.org/$WzqBd_p3KB766wqbFBLbn3o9DmBJCJfPAOsC5w--gW4?via=matrix.org&via=im.f3l.de
+ [matrix-539]: https://matrix.to/#/!UeAwznpYwwsinVTetR:matrix.org/$VZbdWB2EpHeg290MGsYsbUEwMoN68zT8tbIRUKRJ1wc?via=matrix.org&via=im.f3l.de
+
+Fixes:
+
+- Allow using the options `linkAttributes` and `notes` together. (#543, #544)
+
+
+Distribution:
+
+- Alias the command `markdown-cli` as `markdown2tex`.
+ (#545, #546, [tex-live@tug.org][tex-live-2025-01-051051])
+
+ [tex-live-2025-01-051051]: https://tug.org/pipermail/tex-live/2025-January/051051.html
+
+Docker:
+
+- Produce Docker image `witiko/markdown:latest-minimal` with a minimum
+ installation of the Markdown package for TeX based on the Docker image
+ `texlive/texlive:latest-minimal`. (61a3aa2b)
+
+## 3.9.1 (2024-12-17)
+
+Development:
+
+- Add version `v1` of the new built-in theme `witiko/diagrams`.
+ (#514, #531, #538)
+
+ This version is an alias for an earlier theme named `witiko/dot`. Future
+ versions of the theme may have backwards-incompatible syntax and behavior,
+ see the discussion in #514 and #531. Therefore, you are encouraged to always
+ specify the version `v1` to keep your documents from suddenly breaking. The
+ Markdown package will warn you if you don't.
+
+Fixes:
+
+- Make option `eagerCache` safe to use with plain LuaTeX.
+ (#530, witiko/lt3luabridge#29)
+
+Documentation:
+
+- Add artwork by <https://fiverr.com/quickcartoon> to directory `artwork/`. (#533)
+
+ You are welcome to use these artworks in your promotional materials, provided
+ you comply with the license terms specified for each piece. Typically, proper
+ attribution to the artist is required.
+
+Defaults:
+
+- In LaTeX, fix bad interaction between heading identifiers and the class name
+ `{.unnumbered}` (also written as `{-}`). (#511, 3d2e81d4, reported by @jurf)
+
+Continuous Integration:
+
+- Use explcheck to check expl3 code in the continuous integration.
+ (#535, #536, b4e3bfcd)
+
+Deprecation:
+
+- Soft-deprecate the name of the built-in theme `witiko/dot` in favor of
+ the new built-in theme `witiko/diagrams@v1`. (#514, #531, #538)
+
+Distribution:
+
+- Make `markdown-cli` executable and symlink it to system directories.
+ (#534, #537, [tex-live@tug.org][tex-live-2024-12-050952])
+
+ [tex-live-2024-12-050952]: https://tug.org/pipermail/tex-live/2024-December/050952.html
+
+Tests:
+
+- Reenable `eagerCache` in tests for plain LuaTeX. (#530, witiko/lt3luabridge#29)
+
+Docker:
+
+- Install the current package lt3luabridge in `Dockerfile`. (#530)
+
+## 3.9.0 (2024-11-21)
+
+Development:
+
+- Convert built-in LaTeX themes `witiko/dot` and `witiko/graphicx/http` into
+ plain TeX themes. (#514, #522, #529)
+
+ This allows these themes to be used in formats such as plain TeX and ConTeXt
+ as well.
+
+Refactoring:
+
+- Remove dependencies on `ifthen`, `gobble`, and `catchfile`. (#514, #522, #529)
+
+- Store small built-in LaTeX themes `witiko/dot`, `witiko/graphicx/http`, and
+ `witiko/tilde` in expl3 props in files `markdown.tex` and `markdown.sty`.
+ (#514, #522, #529)
+
+ This simplifies the distribution and installation of these themes, which were
+ previously located in individual `.tex` and `.sty` files.
+
+ The built-in plain TeX, LaTeX, and ConTeXt themes `witiko/markdown/defaults`
+ are still distributed in individual files. This is because inlining these
+ themes in files `markdown.tex`, `markdown.sty`, and `t-markdown.tex` would
+ make it more difficult for users to copy and modify these themes without
+ delaying updates to the Markdown package itself. Furthermore, these themes
+ are large and storing/executing them from an expl3 prop would make it more
+ difficult to determine the line numbers when errors occur.
+
+Fixes:
+
+- Protect renderers and renderer prototypes. (#465, #506)
+
+ After this change, default renderers and renderer prototypes as well
+ as renderers and renderers and prototypes defined using the keys
+ `renderers` and `rendererPrototypes` of the command `\markdownSetup`
+ are protected, which is usually preferable for typesetting.
+
+ New keys `unprotectedRenderers` and `unprotectedRendererPrototypes`
+ were also added to the command `\markdownSetup`. These keys define
+ unprotected renderers and renderer prototypes, respectively, which are easier
+ to expand and may be preferable for programming.
+
+Defaults:
+
+- Define default LaTeX renderer prototypes for table identifiers.
+ (#525, suggested by @machitgarha, #528)
+
+ This establishes a reliable method for authors to reference tables within
+ Markdown:
+
+ ``` tex
+ \documentclass{article}
+ \usepackage[
+ pipe_tables,
+ table_attributes,
+ table_captions,
+ relative_references,
+ ]{markdown}
+ \begin{document}
+ \begin{markdown}
+
+ | Right | *Left* | Default | Center |
+ |------:|:-------|-------------|:------:|
+ | 12 | 12 | 12 | 12 |
+ | 123 | 123 | **123** | 123 |
+ | 1 | 1 | 1 | 1 |
+
+ : Demonstration of *pipe table* syntax with the caption spreading over
+ multiple lines. {#identifier .class-name key=value}
+
+ Demonstration of a *relative reference*: See Table <#identifier>.
+
+ \end{markdown}
+ \end{document}
+ ```
+
+- Define default LaTeX renderer prototypes for bracketed spans.
+ (discussed with @MacLotsen at TUG 2024 and with @TeXhackse at matrix.org, #528)
+
+ This establishes a reliable method for authors to reference the last LaTeX
+ counter that has been incremented in e.g. ordered lists.
+
+ ``` tex
+ \documentclass{article}
+ \usepackage[
+ bracketed_spans,
+ relative_references,
+ start_number = false,
+ ]{markdown}
+ \begin{document}
+ \begin{markdown}
+
+ Demonstration of *bracketed spans* syntax:
+
+ 1. First item
+ 2. [Second item]{#second-item}
+ 3. Third item
+
+ Demonstration of a *relative reference*: See item <#second-item>.
+
+ \end{markdown}
+ \end{document}
+ ```
+
+- Use package LuaXML in default LaTeX renderer prototypes for content blocks,
+ raw blocks, and inline raw spans. (#469, #532, co-authored by @michal-h21)
+
+ This allows authors to render HTML fragments in their LaTeX documents:
+
+ `````` tex
+ \documentclass{article}
+ \usepackage[content_blocks, raw_attribute]{markdown}
+ \begin{filecontents}[overwrite, nosearch, noheader]{example_input.html}
+ <b>foo</b> <i>bar</i>
+ \end{filecontents}
+ \begin{document}
+ \begin{markdown}
+
+ Raw text span: `<b>foo</b> <i>bar</i>`{=html}
+
+ Raw code block:
+
+ ``` {=html}
+ <b>foo</b> <i>bar</i>
+ ```
+
+ Content block:
+
+ /example_input.html
+
+ \end{markdown}
+ \end{document}
+ ``````
+
+Deprecation:
+
+- Remove support for TeX Live 2022. (da85e015, 8f2d25c7)
+
+ This change also removes the Lua module `markdown-tinyyaml`, which has been
+ scheduled for removal ever since the Lua module `tinyyaml` was uploaded to
+ CTAN in TeX Live 2023.
+
+## 3.8.1 (2024-11-03)
+
+Fixes:
+
+- Fix backslashes at the ends of hybrid documents.
+ (#502, #503, contributed by @lostenderman)
+
+- Fix hard line breaks in fancy list items.
+ (#508, #509, contributed by @lostenderman)
+
+## 3.8.0 (2024-10-31)
+
+Development:
+
+- Add support for versioned themes and add new Lua option `experimental`.
+ (#466, #512, #514, [matrix.org][matrix-514] reviewed by @TeXhackse, #521)
+
+ The option `experimental` enables experimental features that are planned to
+ be the new default in the next major release of the Markdown package.
+
+ At the moment, this just means that the version `experimental` of the theme
+ `witiko/markdown/defaults` will be loaded and warnings for hard-deprecated
+ features will become errors. However, the effects may extend to other areas
+ in the future as well.
+
+ [matrix-514]: https://matrix.to/#/!UeAwznpYwwsinVTetR:matrix.org/$TTc-m7B5NSdsLBNNyIuFWQ-u2nOZ03lJ5js88hnyFiU?via=matrix.org&via=im.f3l.de
+
+- Add first-class support for YAML documents. (#452, #473, #524)
+ - Add plain TeX macros `\yamlSetup`, `\yamlInput`, `\yamlBegin`, and `\yamlEnd`.
+ - Add LaTeX environment `yaml` and redefine command `\yamlInput` for LaTeX.
+ - Add ConTeXt commands `\setupyaml`, `\inputyaml`, `\startyaml`, and `\stopyaml`.
+
+Documentation:
+
+- Document LaTeX hooks. (#464, #507)
+
+Defaults:
+
+- Improve the compatibility of the default LaTeX packages with PDF tagging:
+ (#466, #512, #514, #521, reported and consulted by @u-fischer)
+
+ - In TeX engines other than LuaTeX, use the package soul instead of the
+ package soulutf8 in TeX Live ≥ 2023.
+
+ - In LuaLaTeX, use the package lua-ul for strike-through/mark renderer
+ prototypes instead of the package soul.
+
+ - Use the package enumitem for tight and fancy lists instead of the package
+ paralist.
+
+ This is a breaking change that is marked as experimental. To enable it,
+ either use the package option `experimental` or specify any test phase in
+ the document metadata:
+
+ 1. `\usepackage[experimental]{markdown}`
+ 2. `\DocumentMetadata{testphase=phase-III}`
+
+- Define LaTeX renderers for image identifiers.
+ (#520, suggested by @jurf, 6f3dcd0c, 478530f, [matrix.org][matrix-520])
+
+ This establishes a reliable method for authors to reference figures within
+ Markdown:
+
+ ``` tex
+ \documentclass{article}
+ \usepackage[link_attributes, relative_references]{markdown}
+ \begin{document}
+ \begin{markdown}
+
+ ![example image](example-image "An example image"){#example-image-id}
+
+ See Figure <#example-image-id>.
+
+ \end{markdown}
+ \end{document}
+ ```
+
+- Set correct category codes for version 3 of the package minted. (39980934)
+
+Continuous Integration:
+
+- Only use self-hosted runners for the quick CI in pull requests.
+ For full CI outside pull requests, use GitHub-hosted runners.
+ (c2697428, [matrix.org][matrix-950e8269])
+
+ [matrix-950e8269]: https://matrix.to/#/!pznomuvubVyxElflTe:matrix.org/$op_onsRdhtXJsZB5d5LZrOFF75T02XvKehmikdoucx4?via=matrix.org&via=im.f3l.de
+ [matrix-520]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$mZB-_YfreLFSKU5eDzp0AIvMnsV_Bn-rpUoj9HtUVwk?via=matrix.org&via=im.f3l.de
+
+## 3.7.1 (2024-09-30)
+
+Development:
+
+- Remove dependency on `UnicodeData.txt`. (#400, #458 #486, #492, #499)
+
+ This change improves the speed of parsing markdown input by up to 25%
+ for a cold conversion run and makes life easier for users of TeX
+ distributions other than TeX Live, such as MikTeX and ConTeXt Standalone,
+ where `UnicodeData.txt` may not be as easily available. This change also
+ adds a new file `markdown-unicode-data.lua`, which must be properly
+ installed with the rest of the Markdown package.
+
+- Add renderers `warning` and `error` that represent warnings and errors
+ produced by the markdown parser. (#452, #473, #496)
+
+Fixes:
+
+- Properly load LaTeX themes when `theme` or `import` is used in
+ `\usepackage[...]{markdown}`. (#471, #498)
+
+- Prevent endless loop when setting deprecated `jekyllDataString` renderer
+ (prototype). (#500)
+
+- Correctly handle backslashes in `\markdownOptionOutputDir` on Windows.
+ (#492, #500, reported by @l0th3r)
+
+- Fix hard line breaks in blockquotes.
+ (#494, #495, reported by @l0th3r, #496, contributed by @lostenderman)
+
+Deprecation:
+
+- Soft-deprecate the `hybrid` option. (#470, #504, 546faa87)
+
+ Soft-deprecated features will never be removed but using them prints a
+ warning and is discouraged. Instead of the `hybrid` option, consider one of
+ the following better alternatives for mixing TeX and markdown:
+
+ - With the `contentBlocks` option, authors can move large blocks of TeX
+ code to separate files and include them in their markdown documents as
+ external resources.
+
+ - With the `rawAttribute` option, authors can denote raw text spans and
+ code blocks that will be interpreted as TeX code.
+
+ - With options `texMathDollars`, `texMathSingleBackslash`, and
+ `texMathDoubleBackslash`, authors can freely type TeX commands between
+ dollar signs or backslash-escaped brackets.
+
+ For more information, see the user manual at
+ <https://witiko.github.io/markdown/>.
+
+## 3.7.0 (2024-08-30)
+
+Development:
+
+- Add renderer `jekyllDataProgrammaticString` for processing YAML
+ string scalars that do not contain markdown markup and are not
+ intended for typesetting.
+ (istqborg/istqb_product_base#46, #440, #451, sponsored by @istqborg)
+- Add option `ensureJekyllData` for processing standalone YAML files.
+ (#452, #473, sponsored by @istqborg)
+- Support user-defined LaTeX environments with LaTeX markup.
+ (#20, #477, suggested by @cdupont)
+
+Fixes:
+
+- Produce more meaningful error message when KPathSea fails to
+ locate a file. (#458, #472, 33e6eef2, reported by @Yggdrasil128)
+- Fix soft line breaks in citation prenotes and postnotes.
+ (#483, #484, contributed by @lostenderman)
+
+Speed improvements:
+
+- Precompile snippets to improve the speed of setting them.
+ (#467, #479, inspired by the TUG 2024 talk by @josephwright)
+- Use an optimized parser to determine Unicode punctuation.
+ (#458, #474, #482, 4c1a7de2, co-authored by @Yggdrasil128,
+ sponsored by @istqborg)
+ This improves the speed of parsing markdown input by up to 500%.
+- Enable option `eagerCache` by default. (#468, #490, sponsored by @istqborg)
+ This improves the speed by up to 25% for large documents with many
+ markdown fragments that require multiple compilation runs.
+- Prevent loading the full Markdown package when converting cached markdown
+ fragments. (#487, #491, 40f0803f, 6609d43d, sponsored by @istqborg)
+ This significantly improves the speed for large documents with many
+ markdown fragments that require multiple compilation runs in pdfTeX.
+
+Deprecation:
+
+- Deprecate `jekyllDataString` renderer and renderer prototype.
+ (istqborg/istqb_product_base#46, #440, #451, sponsored by @istqborg)
+ Users should use `jekyllDataTypographicString` instead.
+
+Continuous Integration:
+
+- Ensure that all code lines are shorter than 72 characters.
+ (#478, e7160d60, 3ac95efe)
+
+Experiments:
+
+- Measure the speed of the Markdown package across recent versions.
+ (249552e5, 55ede824, efeaecbe, #474, 7b2b2431, fcf0064c)
+
+## 3.6.2 (2024-07-14)
+
+Fixes:
+
+- Fix the interplay between inline notes and square brackets.
+ (#453, #456, reported by @nopria, contributed by @lostenderman)
+- Fix the interplay between lists and citations.
+ (witiko/expltools#3, #460, #461, contributed by @lostenderman)
+- Do not override the `outputDir` option if if has been defined
+ before loading the package and pass it to lt3luabridge library.
+ (#457, #459)
+
+Documentation:
+
+- Fix various typos. (#454, contributed by @mbertucci47)
+- Add file `DEPENDS.txt`. (#462, #463, 93bb7e18)
+
+Continuous Integration:
+
+- Only test latest TeX Live in pull requests. (81927ca1)
+
+Tests:
+
+- Test the `outputDir` plain TeX option. (#457, #459)
+
+Libraries:
+
+- Update `tinyyaml` to v0.4.4-1-g197632c. (1e83ac94)
+
## 3.6.1 (2024-06-20)
Fixes:
@@ -170,7 +739,7 @@ Default Renderer Prototypes:
- Do not unnecessarily override math renderer prototypes in LaTeX/ConTeXt.
(#387, #396, contributed by @zousiyu1995)
-Unit Tests:
+Tests:
- In pull requests, process added and modified testfiles first.
(feafe9b9, 9ff530da, 18deae73)
@@ -274,7 +843,7 @@ Documentation:
[matrix-357]: https://matrix.to/#/!efVbynJpCMjlOTfose:matrix.org/$WR3quuO1fyOl6w_KX6YFA4BACBcL-cWUWBpVfpPWDkI?via=matrix.org&via=im.f3l.de
-Unit Tests:
+Tests:
- Restore CommonMark testfiles with trailing tabs and spaces.
(#348, #353, lostenderman/markdown#2, contributed by @lostenderman)
@@ -317,7 +886,7 @@ Deprecation:
[matrix-351]: https://matrix.to/#/!lWGKeMcpgwGHpfLYkf:matrix.org/$yVeWB0Yzfz6mgORv5VeG9IEl7a4xLogkAUmdNMSCxEg?via=matrix.org&via=im.f3l.de
-Unit Tests:
+Tests:
- Add support for YAML metadata in testfiles.
(#345, #347, [matrix.org][matrix-347])
@@ -364,7 +933,7 @@ Documentation:
(f3efcb9)
- Document setting up catcodes in Lua. (#329, #342)
-Unit Tests:
+Tests:
- Batch unit tests to improve speed.
(#245, #316, 8bfd0b3, #317, #319..#325, #327, #328, e3b31696,
@@ -398,7 +967,7 @@ Documentation:
- Add a link to TUG 2023 slides and video to the README.
(ce6047b8, adb69e2f)
-Unit Tests:
+Tests:
- Rewrite the unit testing framework from Bash to Python
and implement summarization. (#245, #314)
@@ -576,7 +1145,7 @@ Default Renderer Prototypes:
- In LaTeX and ConTeXt, use just first word of infostring to determine fence
code block language. (#244)
-Unit Tests:
+Tests:
- Do not fold tabs and spaces into a single space token.
(lostenderman#107, #242)
@@ -704,7 +1273,7 @@ Development:
- Add support for strike-throughs, fenced divs, subscripts, superscripts,
and fancy lists. (#149, #160, #162, #168, #170)
-- Add facade in front of expl3 inferface for YAML metadata. (#118, #175)
+- Add facade in front of expl3 interface for YAML metadata. (#118, #175)
- Add `\setupmarkdown` and `\inputmarkdown` commands to ConTeXt. (#17, #176)
Fixes:
@@ -784,7 +1353,7 @@ Docker:
Documentation:
-- Remove disfunctional badges for Docker from `README.md`. (ad00b58, 707cad9)
+- Remove dysfunctional badges for Docker from `README.md`. (ad00b58, 707cad9)
- Link to TUG's version of the TUG 2021 video in `README.md`. (1462411)
Miscellaneous:
@@ -1045,7 +1614,7 @@ Fixes:
Fixes:
- String text and parenthetical citations. (e6026c1)
-- Escape autolink labels even when hybrid mode is enabled. (repored by @iwelch,
+- Escape autolink labels even when hybrid mode is enabled. (reported by @iwelch,
693e134)
- Protect LaTeX strong emphasis renderer prototype and make it detect font.
(reported by @iwelch, 89a031a)
@@ -1105,7 +1674,7 @@ Licensing:
- Bump the copyright year. (9462f17)
- Sublicense the code as LPPL v1.3c. (609aeee)
-Unit tests:
+Tests:
- Remove xtrace from `test.sh` for less verbose output. (b307ee6)
- Treat all files as text with GNU diff in `test.sh`. (ec89e6d)
diff --git a/macros/generic/markdown/DEPENDS.txt b/macros/generic/markdown/DEPENDS.txt
new file mode 100644
index 0000000000..9abf8844c0
--- /dev/null
+++ b/macros/generic/markdown/DEPENDS.txt
@@ -0,0 +1,24 @@
+hard l3kernel
+hard lt3luabridge
+hard lua-tinyyaml
+hard lua-uni-algos
+soft amsfonts
+soft amsmath
+soft csvsimple
+soft enumitem
+soft epstopdf
+soft epstopdf-pkg
+soft etoolbox
+soft fancyvrb
+soft graphics
+soft ltxcmds
+soft lua-ul
+soft luacolor
+soft luaxml
+soft paralist
+soft pgf
+soft soul
+soft tools
+soft url
+soft verse
+soft xcolor
diff --git a/macros/generic/markdown/README.md b/macros/generic/markdown/README.md
index 1aaa42ed9e..6d9a786fc8 100644
--- a/macros/generic/markdown/README.md
+++ b/macros/generic/markdown/README.md
@@ -1,5 +1,5 @@
-Markdown
-========
+The Markdown Package for TeX
+============================
[![license](https://img.shields.io/github/license/witiko/markdown)](LICENSE)
[![ci](https://github.com/witiko/markdown/actions/workflows/main.yml/badge.svg)][ci]
@@ -18,7 +18,7 @@ Markdown
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
+containing markdown markup. Unlike other converters, 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. 😉
@@ -94,7 +94,7 @@ jobs:
container:
image: witiko/markdown:latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- run: latexmk -lualatex document.tex
- uses: marvinpinto/action-automatic-releases@latest
permissions:
@@ -115,52 +115,6 @@ In fact, this is how we automatically produce
[github-actions]: https://docs.github.com/actions "GitHub Actions Documentation"
-Peek under the hood
--------------------
-
-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
-the following markdown content:
-
-``` markdown
-Hello *Markdown*! $a_x + b_x = c_x$
-```
-
-Next, run [the Lua command-line interface (CLI)][lua-cli] from
-[our official Docker image][docker-witiko/markdown] on `document.md`:
-
- docker run --rm -i witiko/markdown markdown-cli hybrid=true < document.md
-
-We will receive the following output, where the markdown markup has been
-replaced by TeX commands:
-
-``` tex
-\markdownDocumentBegin
-Hello \markdownRendererEmphasis{Markdown}!
-$a\markdownRendererEmphasis{x + b}x = c_x$
-\markdownDocumentEnd
-```
-
-We can see right away that the Markdown package has incorrectly interpreted
-`_x + b_` as an emphasized text. We can fix this by passing in the
-`underscores=false` option:
-
- docker run --rm -i witiko/markdown markdown-cli hybrid=true underscores=false < document.md
-
-``` tex
-\markdownDocumentBegin
-Hello \markdownRendererEmphasis{Markdown}!
-$a_x + b_x = c_x$
-\markdownDocumentEnd
-```
-
-Much better! If the Markdown package ever surprises you, use the Lua CLI to
-peek under the hood and inspect the results of the conversion.
-
- [lua-cli]: https://mirrors.ctan.org/macros/generic/markdown/markdown.html#lua-command-line-interface "Markdown Package User Manual"
-
Further information
-------------------
@@ -185,16 +139,16 @@ For further information, consult one of the following:
- [Writing Posters with Markdown][overleaf-5], and
- [Using Markdown in LaTeX documents][overleaf-6].
4. Journal articles published by [TUGboat][]:
- - [Using Markdown inside TeX documents][tb119],
- - [Markdown 2.7.0: Towards lightweight markup in TeX][tb124],
+ - [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],
- [Attributes in Markdown][tb136],
- - [Markdown 3 at TUG 2023: Reflections from the Q&A session][tb138],
- - Fast Regression Testing of TeX Packages: The Unreasonable Effectiveness of Batching ([preprint][tb139]), and
- - Markdown Themes in Practice ([preprint][tb140]).
+ - [Markdown 3 at TUG 2023: Reflections from the Q&A Session][tb138],
+ - [Fast Regression Testing of TeX Packages: Multiprocessing and Batching][tb139], and
+ - [Markdown Themes in Practice][tb140].
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],
@@ -204,11 +158,12 @@ For further information, consult one of the following:
- [Markdown 3: What's New, What's Next?][10.5300/2023-3-4/111].
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]),
+ - [Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX][tb131-video] ([mirror][tb131-video-mirror], [slides][tb131-slides]),
- [A Self-Publisher's Take on Markdown and TeX][tb134-01-video] ([slides][tb134-01-slides]),
- [A Gentle Introduction to Markdown for Writers][tb134-02-video] ([slides][tb134-02-slides], [example][tb134-02-example]),
- - [Markdown 3: What's New, What's Next?][tb137-video] ([slides][tb137-slides]), and
- - An Implementation of the CommonMark Standard and new Syntax Extensions to the Markdown Package for TeX ([slides][gencur-defense-slides]).
+ - [Markdown 3: What's New, What's Next?][tb137-video] ([mirror][tb137-video-mirror], [slides][tb137-slides]),
+ - An Implementation of the CommonMark Standard and new Syntax Extensions to the Markdown Package for TeX ([slides][gencur-defense-slides]), and
+ - [Markdown Themes in Practice][tb140-video] ([preprint][tb140-preprint], [slides][tb140-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]
@@ -220,26 +175,31 @@ 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.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.tug.org/TUGboat/tb44-3/tb138starynovotny-markdown-qa.pdf "Markdown 3 at TUG 2023: Reflections from the Q&A session"
- [tb139]: https://github.com/Witiko/fast-regression-testing/releases/download/latest/tb139starynovotny-testing.pdf "Fast Regression Testing of TeX Packages: The Unreasonable Effectiveness of Batching"
- [tb140]: https://www.tug.org/tug2024/preprints/starynovotny-markdown-themes.pdf "Markdown Themes in Practice"
-
- [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?"
+ [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.tug.org/TUGboat/tb44-3/tb138starynovotny-markdown-qa.pdf "Markdown 3 at TUG 2023: Reflections from the Q&A session"
+ [tb139]: https://www.tug.org/TUGboat/tb45-1/tb139starynovotny-testing.pdf "Fast Regression Testing of TeX Packages: The Unreasonable Effectiveness of Batching"
+ [tb140]: https://www.tug.org/TUGboat/tb45-2/tb140starynovotny-markdown-themes.pdf "Markdown Themes in Practice"
+
+ [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"
+ [tb131-video-mirror]: https://youtu.be/THmPkAncMnc "Markdown 2.10.0: LaTeX Themes & Snippets, Two Flavors of Comments, and LuaMetaTeX (mirror)"
+ [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?"
+ [tb137-video-mirror]: https://youtu.be/W15bBpVTA-c "Markdown 3: What's New, What's Next? (mirror)"
+ [tb140-preprint]: https://www.tug.org/tug2024/preprints/starynovotny-markdown-themes.pdf "Markdown Themes in Practice"
+ [tb140-video]: https://youtu.be/d7vTW7PR0B4?t=5h3m10s "Markdown Themes in Practice"
+ [tb140-slides]: https://www.tug.org/tug2024/slides/starynovotny-markdown-themes.pdf "Markdown Themes in Practice"
[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"
@@ -276,7 +236,7 @@ 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], [#368][issue-368], [#401][issue-401], and [#424][issue-424] were graciously sponsored by the [International Software Testing Qualifications Board (ISTQB)][istqb]. |
+| [<img width="150" src="https://www.guava.blue/wp-content/uploads/2021/01/ISTQB-logo-600x545.png">][istqb] | Fixes for issues [#359][issue-359], [#368][issue-368], [#401][issue-401], [#424][issue-424], [#440][issue-440], [#468][issue-468], [#474][issue-474], and [#487][issue-487] 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"
@@ -288,6 +248,10 @@ Acknowledgements
[issue-368]: https://github.com/witiko/markdown/issues/368 "Tables nested in list items have empty lines"
[issue-401]: https://github.com/witiko/markdown/issues/401 "Create an unnumbered section"
[issue-424]: https://github.com/witiko/markdown/issues/424 "E-mail addresses are incorrectly interpreted as bracketed citations"
+ [issue-440]: https://github.com/witiko/markdown/issues/440 "Support programmatic text in YAML metadata values"
+ [issue-468]: https://github.com/witiko/markdown/issues/468 "Enable option eagerCache by default"
+ [issue-474]: https://github.com/witiko/markdown/issues/474 "Improve the speed of the Markdown package"
+ [issue-487]: https://github.com/witiko/markdown/issues/487 "Prevent loading the full Markdown package when converting cached markdown fragments"
[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"
@@ -337,13 +301,18 @@ reproduced by running the `docker build` command on `Dockerfile` (`docker build
[literate programming]: https://en.wikipedia.org/wiki/Literate_programming "Literate programming"
[ltxdockit]: https://ctan.org/pkg/ltxdockit "ltxdockit – Documentation support"
-Contributed Software
---------------------
+Related Work
+------------
+
+Links to third-party software for the Markdown package are available in the
+`contributions/` directory. The intention is to show interesting tools for the
+Markdown package and to give them wider exposure without taking responsibility
+for their development or maintenance.
-Links to contributed third-party software for the Markdown package are
-available in the `contributions/` directory. The intention is to show
-interesting tools for the Markdown package and to give them wider exposure
-without taking responsibility for their development or maintenance.
+Artwork for the Markdown package is available in the `artwork/` directory.
+You are welcome to use these artworks in your promotional materials, provided
+you comply with the license terms specified for each piece. Typically, proper
+attribution to the artist is required.
Citing Markdown
---------------
@@ -375,3 +344,11 @@ BibTeX file that is included in your TeX distribution like this:
```
[tugboat.bib]: http://mirrors.ctan.org/info/digests/tugboat/biblio/tugboat.bib
+
+Notes to Distributors
+---------------------
+
+The file `markdown2tex.lua` should be installed in the TDS directory
+`scripts/markdown`. Furthermore, it should be made executable and either
+symlinked to system directories as `markdown2tex` on Unix or have a wrapper
+`markdown2tex.exe` installed on Windows.
diff --git a/macros/generic/markdown/VERSION b/macros/generic/markdown/VERSION
index e15dd6a469..218ee6d55a 100644
--- a/macros/generic/markdown/VERSION
+++ b/macros/generic/markdown/VERSION
@@ -1 +1 @@
-3.6.1-0-g5a45a922 (2024-06-20)
+3.10.0-0-g626df6ad (2025-01-27)
diff --git a/macros/generic/markdown/docstrip.cfg b/macros/generic/markdown/docstrip.cfg
index 9dc5f65230..c655e6a06d 100644
--- a/macros/generic/markdown/docstrip.cfg
+++ b/macros/generic/markdown/docstrip.cfg
@@ -11,18 +11,18 @@
-- permit persons to whom the Software is furnished to do so, subject to^^J%
-- the following conditions:^^J%
--^^J%
--- The above copyright notice and this permission notice shall be included^^J%
--- in all copies or substantial portions of the Software.^^J%
+-- The above copyright notice and this permission notice shall be^^J%
+-- included in all copies or substantial portions of the Software.^^J%
--^^J%
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,^^J%
-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF^^J%
--- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.^^J%
+-- MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND NONINFRINGEMENT.^^J%
-- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY^^J%
-- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,^^J%
-- 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-2024 Vít Starý Novotný^^J%
+-- Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur^^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%
@@ -62,7 +62,7 @@
\let\luapostamble\empty
\declarepreamble\texpreamble
-Copyright (C) 2016-2024 Vít Starý Novotný
+Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/generic/markdown/examples/context-mkiv.tex b/macros/generic/markdown/examples/context-mkiv.tex
index 6cb185802a..34b6b35093 100644
--- a/macros/generic/markdown/examples/context-mkiv.tex
+++ b/macros/generic/markdown/examples/context-mkiv.tex
@@ -57,6 +57,37 @@ kpse.set_program_name("luatex")
\starttext
+% Set and typeset the document metadata using a YAML metadata block.
+\setupyaml
+ [
+ jekyllDataRenderers = {
+ title = {\gdef\doctitle{#1}},
+ author = {\gdef\author{#1}},
+ date = {\gdef\date{#1}},
+ },
+ renderers = {
+ jekyllDataEnd = {%
+ \startalignment[center]
+ \blank[force,2*big]
+ {\tfd \doctitle}
+ \blank[3*medium]
+ {\tfa \author}
+ \blank[2*medium]
+ {\tfa \date}
+ \blank[3*medium]
+ \stopalignment
+ },
+ },
+ ]
+
+\startyaml
+
+title: An Example *Markdown* Document
+author: Vít Starý Novotný
+date: `\currentdate`{=tex}
+
+\stopyaml
+
% Typeset the document `example.md` by letting the Markdown package handle
% the conversion internally. Optionally, we can specify additional options
% between the square brackets similarly to the command `\setupmarkdown`.
diff --git a/macros/generic/markdown/examples/latex-luatex.tex b/macros/generic/markdown/examples/latex-luatex.tex
index 51be09c1f6..370ce2f231 100644
--- a/macros/generic/markdown/examples/latex-luatex.tex
+++ b/macros/generic/markdown/examples/latex-luatex.tex
@@ -12,7 +12,6 @@
fencedCode,
hashEnumerators,
inlineNotes,
- jekyllData,
lineBlocks,
notes,
pipeTables,
@@ -28,13 +27,11 @@
texMathSingleBackslash,
]{markdown}
% Set the document metadata using a YAML metadata block.
-\begin{markdown}[hybrid]
----
+\begin{yaml}
title: An Example *Markdown* Document
author: Vít Starý Novotný
-date: \today
----
-\end{markdown}
+date: `\today`{=tex}
+\end{yaml}
\begin{document}
% Typeset the document `example.md` by letting the Markdown package handle
% the conversion internally.
diff --git a/macros/generic/markdown/examples/latex-pdftex.tex b/macros/generic/markdown/examples/latex-pdftex.tex
index 34f78707c3..b530443548 100644
--- a/macros/generic/markdown/examples/latex-pdftex.tex
+++ b/macros/generic/markdown/examples/latex-pdftex.tex
@@ -13,7 +13,6 @@
fencedCode,
hashEnumerators,
inlineNotes,
- jekyllData,
lineBlocks,
notes,
pipeTables,
@@ -29,13 +28,11 @@
texMathSingleBackslash,
]{markdown}
% Set the document metadata using a YAML metadata block.
-\begin{markdown}[hybrid]
----
+\begin{yaml}
title: An Example *Markdown* Document
author: Vít Starý Novotný
-date: \today
----
-\end{markdown}
+date: `\today`{=tex}
+\end{yaml}
\begin{document}
% Typeset the document `example.md` by letting the Markdown package handle
% the conversion internally.
diff --git a/macros/generic/markdown/examples/optex.tex b/macros/generic/markdown/examples/optex.tex
index d39369f6b3..afdcc70dad 100644
--- a/macros/generic/markdown/examples/optex.tex
+++ b/macros/generic/markdown/examples/optex.tex
@@ -226,9 +226,14 @@
\_let \markdownRendererJekyllDataSequenceEnd \_relax
\_def \markdownRendererJekyllDataBoolean #1#2{}
\_def \markdownRendererJekyllDataNumber #1#2{}
-\_def \markdownRendererJekyllDataString #1#2{}
+\_def \markdownRendererJekyllDataProgrammaticString #1#2{}
+\_def \markdownRendererJekyllDataTypographicString #1#2{}
\_def \markdownRendererJekyllDataEmpty #1{}
+%% Warning and Error Renderers
+\_def \markdownRendererWarning #1#2#3#4{}
+\_def \markdownRendererError #1#2#3#4{}
+
% Load the Markdown module and set TeX macros for the Markdown module
\_directlua{
kpse = require("kpse")
diff --git a/macros/generic/markdown/libraries/markdown-tinyyaml.lua b/macros/generic/markdown/libraries/markdown-tinyyaml.lua
deleted file mode 100644
index 36cef293ed..0000000000
--- a/macros/generic/markdown/libraries/markdown-tinyyaml.lua
+++ /dev/null
@@ -1,880 +0,0 @@
--- MIT License
---
--- Copyright (c) 2017 peposso
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy
--- of this software and associated documentation files (the "Software"), to deal
--- in the Software without restriction, including without limitation the rights
--- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
--- copies of the Software, and to permit persons to whom the Software is
--- furnished to do so, subject to the following conditions:
---
--- The above copyright notice and this permission notice shall be included in all
--- copies or substantial portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
--- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
--- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
--- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
--- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
--- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
--- SOFTWARE.
-
--------------------------------------------------------------------------------
--- tinyyaml - YAML subset parser
--------------------------------------------------------------------------------
-
-local table = table
-local string = string
-local schar = string.char
-local ssub, gsub = string.sub, string.gsub
-local sfind, smatch = string.find, string.match
-local tinsert, tconcat, tremove = table.insert, table.concat, table.remove
-local setmetatable = setmetatable
-local pairs = pairs
-local rawget = rawget
-local type = type
-local tonumber = tonumber
-local math = math
-local getmetatable = getmetatable
-local error = error
-local end_symbol = "..."
-local end_break_symbol = "...\n"
-
-local UNESCAPES = {
- ['0'] = "\x00", z = "\x00", N = "\x85",
- a = "\x07", b = "\x08", t = "\x09",
- n = "\x0a", v = "\x0b", f = "\x0c",
- r = "\x0d", e = "\x1b", ['\\'] = '\\',
-};
-
--------------------------------------------------------------------------------
--- utils
-local function select(list, pred)
- local selected = {}
- for i = 0, #list do
- local v = list[i]
- if v and pred(v, i) then
- tinsert(selected, v)
- end
- end
- return selected
-end
-
-local function startswith(haystack, needle)
- return ssub(haystack, 1, #needle) == needle
-end
-
-local function ltrim(str)
- return smatch(str, "^%s*(.-)$")
-end
-
-local function rtrim(str)
- return smatch(str, "^(.-)%s*$")
-end
-
-local function trim(str)
- return smatch(str, "^%s*(.-)%s*$")
-end
-
--------------------------------------------------------------------------------
--- Implementation.
---
-local class = {__meta={}}
-function class.__meta.__call(cls, ...)
- local self = setmetatable({}, cls)
- if cls.__init then
- cls.__init(self, ...)
- end
- return self
-end
-
-function class.def(base, typ, cls)
- base = base or class
- local mt = {__metatable=base, __index=base}
- for k, v in pairs(base.__meta) do mt[k] = v end
- cls = setmetatable(cls or {}, mt)
- cls.__index = cls
- cls.__metatable = cls
- cls.__type = typ
- cls.__meta = mt
- return cls
-end
-
-
-local types = {
- null = class:def('null'),
- map = class:def('map'),
- omap = class:def('omap'),
- pairs = class:def('pairs'),
- set = class:def('set'),
- seq = class:def('seq'),
- timestamp = class:def('timestamp'),
-}
-
-local Null = types.null
-function Null.__tostring() return 'yaml.null' end
-function Null.isnull(v)
- if v == nil then return true end
- if type(v) == 'table' and getmetatable(v) == Null then return true end
- return false
-end
-local null = Null()
-
-function types.timestamp:__init(y, m, d, h, i, s, f, z)
- self.year = tonumber(y)
- self.month = tonumber(m)
- self.day = tonumber(d)
- self.hour = tonumber(h or 0)
- self.minute = tonumber(i or 0)
- self.second = tonumber(s or 0)
- if type(f) == 'string' and sfind(f, '^%d+$') then
- self.fraction = tonumber(f) * math.pow(10, 3 - #f)
- elseif f then
- self.fraction = f
- else
- self.fraction = 0
- end
- self.timezone = z
-end
-
-function types.timestamp:__tostring()
- return string.format(
- '%04d-%02d-%02dT%02d:%02d:%02d.%03d%s',
- self.year, self.month, self.day,
- self.hour, self.minute, self.second, self.fraction,
- self:gettz())
-end
-
-function types.timestamp:gettz()
- if not self.timezone then
- return ''
- end
- if self.timezone == 0 then
- return 'Z'
- end
- local sign = self.timezone > 0
- local z = sign and self.timezone or -self.timezone
- local zh = math.floor(z)
- local zi = (z - zh) * 60
- return string.format(
- '%s%02d:%02d', sign and '+' or '-', zh, zi)
-end
-
-
-local function countindent(line)
- local _, j = sfind(line, '^%s+')
- if not j then
- return 0, line
- end
- return j, ssub(line, j+1)
-end
-
-local Parser = {
- timestamps=true,-- parse timestamps as objects instead of strings
-}
-
-function Parser:parsestring(line, stopper)
- stopper = stopper or ''
- local q = ssub(line, 1, 1)
- if q == ' ' or q == '\t' then
- return self:parsestring(ssub(line, 2))
- end
- if q == "'" then
- local i = sfind(line, "'", 2, true)
- if not i then
- return nil, line
- end
- -- Unescape repeated single quotes.
- while i < #line and ssub(line, i+1, i+1) == "'" do
- i = sfind(line, "'", i + 2, true)
- if not i then
- return nil, line
- end
- end
- return ssub(line, 2, i-1):gsub("''", "'"), ssub(line, i+1)
- end
- if q == '"' then
- local i, buf = 2, ''
- while i < #line do
- local c = ssub(line, i, i)
- if c == '\\' then
- local n = ssub(line, i+1, i+1)
- if UNESCAPES[n] ~= nil then
- buf = buf..UNESCAPES[n]
- elseif n == 'x' then
- local h = ssub(i+2,i+3)
- if sfind(h, '^[0-9a-fA-F]$') then
- buf = buf..schar(tonumber(h, 16))
- i = i + 2
- else
- buf = buf..'x'
- end
- else
- buf = buf..n
- end
- i = i + 1
- elseif c == q then
- break
- else
- buf = buf..c
- end
- i = i + 1
- end
- return buf, ssub(line, i+1)
- end
- if q == '{' or q == '[' then -- flow style
- return nil, line
- end
- if q == '|' or q == '>' then -- block
- return nil, line
- end
- if q == '-' or q == ':' then
- if ssub(line, 2, 2) == ' ' or ssub(line, 2, 2) == '\n' or #line == 1 then
- return nil, line
- end
- end
-
- if line == "*" then
- error("did not find expected alphabetic or numeric character")
- end
-
- local buf = ''
- while #line > 0 do
- local c = ssub(line, 1, 1)
- if sfind(stopper, c, 1, true) then
- break
- elseif c == ':' and (ssub(line, 2, 2) == ' ' or ssub(line, 2, 2) == '\n' or #line == 1) then
- break
- elseif c == '#' and (ssub(buf, #buf, #buf) == ' ') then
- break
- else
- buf = buf..c
- end
- line = ssub(line, 2)
- end
- return rtrim(buf), line
-end
-
-local function isemptyline(line)
- return line == '' or sfind(line, '^%s*$') or sfind(line, '^%s*#')
-end
-
-local function equalsline(line, needle)
- return startswith(line, needle) and isemptyline(ssub(line, #needle+1))
-end
-
-local function compactifyemptylines(lines)
- -- Appends empty lines as "\n" to the end of the nearest preceding non-empty line
- local compactified = {}
- local lastline = {}
- for i = 1, #lines do
- local line = lines[i]
- if isemptyline(line) then
- if #compactified > 0 and i < #lines then
- tinsert(lastline, "\n")
- end
- else
- if #lastline > 0 then
- tinsert(compactified, tconcat(lastline, ""))
- end
- lastline = {line}
- end
- end
- if #lastline > 0 then
- tinsert(compactified, tconcat(lastline, ""))
- end
- return compactified
-end
-
-local function checkdupekey(map, key)
- if rawget(map, key) ~= nil then
- -- print("found a duplicate key '"..key.."' in line: "..line)
- local suffix = 1
- while rawget(map, key..'_'..suffix) do
- suffix = suffix + 1
- end
- key = key ..'_'..suffix
- end
- return key
-end
-
-
-function Parser:parseflowstyle(line, lines)
- local stack = {}
- while true do
- if #line == 0 then
- if #lines == 0 then
- break
- else
- line = tremove(lines, 1)
- end
- end
- local c = ssub(line, 1, 1)
- if c == '#' then
- line = ''
- elseif c == ' ' or c == '\t' or c == '\r' or c == '\n' then
- line = ssub(line, 2)
- elseif c == '{' or c == '[' then
- tinsert(stack, {v={},t=c})
- line = ssub(line, 2)
- elseif c == ':' then
- local s = tremove(stack)
- tinsert(stack, {v=s.v, t=':'})
- line = ssub(line, 2)
- elseif c == ',' then
- local value = tremove(stack)
- if value.t == ':' or value.t == '{' or value.t == '[' then error() end
- if stack[#stack].t == ':' then
- -- map
- local key = tremove(stack)
- key.v = checkdupekey(stack[#stack].v, key.v)
- stack[#stack].v[key.v] = value.v
- elseif stack[#stack].t == '{' then
- -- set
- stack[#stack].v[value.v] = true
- elseif stack[#stack].t == '[' then
- -- seq
- tinsert(stack[#stack].v, value.v)
- end
- line = ssub(line, 2)
- elseif c == '}' then
- if stack[#stack].t == '{' then
- if #stack == 1 then break end
- stack[#stack].t = '}'
- line = ssub(line, 2)
- else
- line = ','..line
- end
- elseif c == ']' then
- if stack[#stack].t == '[' then
- if #stack == 1 then break end
- stack[#stack].t = ']'
- line = ssub(line, 2)
- else
- line = ','..line
- end
- else
- local s, rest = self:parsestring(line, ',{}[]')
- if not s then
- error('invalid flowstyle line: '..line)
- end
- tinsert(stack, {v=s, t='s'})
- line = rest
- end
- end
- return stack[1].v, line
-end
-
-function Parser:parseblockstylestring(line, lines, indent)
- if #lines == 0 then
- error("failed to find multi-line scalar content")
- end
- local s = {}
- local firstindent = -1
- local endline = -1
- for i = 1, #lines do
- local ln = lines[i]
- local idt = countindent(ln)
- if idt <= indent then
- break
- end
- if ln == '' then
- tinsert(s, '')
- else
- if firstindent == -1 then
- firstindent = idt
- elseif idt < firstindent then
- break
- end
- tinsert(s, ssub(ln, firstindent + 1))
- end
- endline = i
- end
-
- local striptrailing = true
- local sep = '\n'
- local newlineatend = true
- if line == '|' then
- striptrailing = true
- sep = '\n'
- newlineatend = true
- elseif line == '|+' then
- striptrailing = false
- sep = '\n'
- newlineatend = true
- elseif line == '|-' then
- striptrailing = true
- sep = '\n'
- newlineatend = false
- elseif line == '>' then
- striptrailing = true
- sep = ' '
- newlineatend = true
- elseif line == '>+' then
- striptrailing = false
- sep = ' '
- newlineatend = true
- elseif line == '>-' then
- striptrailing = true
- sep = ' '
- newlineatend = false
- else
- error('invalid blockstyle string:'..line)
- end
-
- if #s == 0 then
- return ""
- end
-
- local _, eonl = s[#s]:gsub('\n', '\n')
- s[#s] = rtrim(s[#s])
- if striptrailing then
- eonl = 0
- end
- if newlineatend then
- eonl = eonl + 1
- end
- for i = endline, 1, -1 do
- tremove(lines, i)
- end
- return tconcat(s, sep)..string.rep('\n', eonl)
-end
-
-function Parser:parsetimestamp(line)
- local _, p1, y, m, d = sfind(line, '^(%d%d%d%d)%-(%d%d)%-(%d%d)')
- if not p1 then
- return nil, line
- end
- if p1 == #line then
- return types.timestamp(y, m, d), ''
- end
- local _, p2, h, i, s = sfind(line, '^[Tt ](%d+):(%d+):(%d+)', p1+1)
- if not p2 then
- return types.timestamp(y, m, d), ssub(line, p1+1)
- end
- if p2 == #line then
- return types.timestamp(y, m, d, h, i, s), ''
- end
- local _, p3, f = sfind(line, '^%.(%d+)', p2+1)
- if not p3 then
- p3 = p2
- f = 0
- end
- local zc = ssub(line, p3+1, p3+1)
- local _, p4, zs, z = sfind(line, '^ ?([%+%-])(%d+)', p3+1)
- if p4 then
- z = tonumber(z)
- local _, p5, zi = sfind(line, '^:(%d+)', p4+1)
- if p5 then
- z = z + tonumber(zi) / 60
- end
- z = zs == '-' and -tonumber(z) or tonumber(z)
- elseif zc == 'Z' then
- p4 = p3 + 1
- z = 0
- else
- p4 = p3
- z = false
- end
- return types.timestamp(y, m, d, h, i, s, f, z), ssub(line, p4+1)
-end
-
-function Parser:parsescalar(line, lines, indent)
- line = trim(line)
- line = gsub(line, '^%s*#.*$', '') -- comment only -> ''
- line = gsub(line, '^%s*', '') -- trim head spaces
-
- if line == '' or line == '~' then
- return null
- end
-
- if self.timestamps then
- local ts, _ = self:parsetimestamp(line)
- if ts then
- return ts
- end
- end
-
- local s, _ = self:parsestring(line)
- -- startswith quote ... string
- -- not startswith quote ... maybe string
- if s and (startswith(line, '"') or startswith(line, "'")) then
- return s
- end
-
- if startswith('!', line) then -- unexpected tagchar
- error('unsupported line: '..line)
- end
-
- if equalsline(line, '{}') then
- return {}
- end
- if equalsline(line, '[]') then
- return {}
- end
-
- if startswith(line, '{') or startswith(line, '[') then
- return self:parseflowstyle(line, lines)
- end
-
- if startswith(line, '|') or startswith(line, '>') then
- return self:parseblockstylestring(line, lines, indent)
- end
-
- -- Regular unquoted string
- line = gsub(line, '%s*#.*$', '') -- trim tail comment
- local v = line
- if v == 'null' or v == 'Null' or v == 'NULL'then
- return null
- elseif v == 'true' or v == 'True' or v == 'TRUE' then
- return true
- elseif v == 'false' or v == 'False' or v == 'FALSE' then
- return false
- elseif v == '.inf' or v == '.Inf' or v == '.INF' then
- return math.huge
- elseif v == '+.inf' or v == '+.Inf' or v == '+.INF' then
- return math.huge
- elseif v == '-.inf' or v == '-.Inf' or v == '-.INF' then
- return -math.huge
- elseif v == '.nan' or v == '.NaN' or v == '.NAN' then
- return 0 / 0
- elseif sfind(v, '^[%+%-]?[0-9]+$') or sfind(v, '^[%+%-]?[0-9]+%.$')then
- return tonumber(v) -- : int
- elseif sfind(v, '^[%+%-]?[0-9]+%.[0-9]+$') then
- return tonumber(v)
- end
- return s or v
-end
-
-function Parser:parseseq(line, lines, indent)
- local seq = setmetatable({}, types.seq)
- if line ~= '' then
- error()
- end
- while #lines > 0 do
- -- Check for a new document
- line = lines[1]
- if startswith(line, '---') then
- while #lines > 0 and not startswith(lines, '---') do
- tremove(lines, 1)
- end
- return seq
- end
-
- -- Check the indent level
- local level = countindent(line)
- if level < indent then
- return seq
- elseif level > indent then
- error("found bad indenting in line: ".. line)
- end
-
- local i, j = sfind(line, '%-%s+')
- if not i then
- i, j = sfind(line, '%-$')
- if not i then
- return seq
- end
- end
- local rest = ssub(line, j+1)
-
- if sfind(rest, '^[^\'\"%s]*:%s*$') or sfind(rest, '^[^\'\"%s]*:%s+.') then
- -- Inline nested hash
- -- There are two patterns need to match as inline nested hash
- -- first one should have no other characters except whitespace after `:`
- -- and the second one should have characters besides whitespace after `:`
- --
- -- value:
- -- - foo:
- -- bar: 1
- --
- -- and
- --
- -- value:
- -- - foo: bar
- --
- -- And there is one pattern should not be matched, where there is no space after `:`
- -- in below, `foo:bar` should be parsed into a single string
- --
- -- value:
- -- - foo:bar
- local indent2 = j
- lines[1] = string.rep(' ', indent2)..rest
- tinsert(seq, self:parsemap('', lines, indent2))
- elseif sfind(rest, '^%-%s+') then
- -- Inline nested seq
- local indent2 = j
- lines[1] = string.rep(' ', indent2)..rest
- tinsert(seq, self:parseseq('', lines, indent2))
- elseif isemptyline(rest) then
- tremove(lines, 1)
- if #lines == 0 then
- tinsert(seq, null)
- return seq
- end
- if sfind(lines[1], '^%s*%-') then
- local nextline = lines[1]
- local indent2 = countindent(nextline)
- if indent2 == indent then
- -- Null seqay entry
- tinsert(seq, null)
- else
- tinsert(seq, self:parseseq('', lines, indent2))
- end
- else
- -- - # comment
- -- key: value
- local nextline = lines[1]
- local indent2 = countindent(nextline)
- tinsert(seq, self:parsemap('', lines, indent2))
- end
- elseif line == "*" then
- 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, indent2))
- end
- end
- return seq
-end
-
-function Parser:parseset(line, lines, indent)
- if not isemptyline(line) then
- error('not seq line: '..line)
- end
- local set = setmetatable({}, types.set)
- while #lines > 0 do
- -- Check for a new document
- line = lines[1]
- if startswith(line, '---') then
- while #lines > 0 and not startswith(lines, '---') do
- tremove(lines, 1)
- end
- return set
- end
-
- -- Check the indent level
- local level = countindent(line)
- if level < indent then
- return set
- elseif level > indent then
- error("found bad indenting in line: ".. line)
- end
-
- local i, j = sfind(line, '%?%s+')
- if not i then
- i, j = sfind(line, '%?$')
- if not i then
- return set
- end
- end
- local rest = ssub(line, j+1)
-
- if sfind(rest, '^[^\'\"%s]*:') then
- -- Inline nested hash
- local indent2 = j
- lines[1] = string.rep(' ', indent2)..rest
- set[self:parsemap('', lines, indent2)] = true
- elseif sfind(rest, '^%s+$') then
- tremove(lines, 1)
- if #lines == 0 then
- tinsert(set, null)
- return set
- end
- if sfind(lines[1], '^%s*%?') then
- local indent2 = countindent(lines[1])
- if indent2 == indent then
- -- Null array entry
- set[null] = true
- else
- set[self:parseseq('', lines, indent2)] = true
- end
- end
-
- elseif rest then
- tremove(lines, 1)
- set[self:parsescalar(rest, lines)] = true
- else
- error("failed to classify line: "..line)
- end
- end
- return set
-end
-
-function Parser:parsemap(line, lines, indent)
- if not isemptyline(line) then
- error('not map line: '..line)
- end
- local map = setmetatable({}, types.map)
- while #lines > 0 do
- -- Check for a new document
- line = lines[1]
- if line == end_symbol or line == end_break_symbol then
- for i, _ in ipairs(lines) do
- lines[i] = nil
- end
- return map
- end
-
- if startswith(line, '---') then
- while #lines > 0 and not startswith(lines, '---') do
- tremove(lines, 1)
- end
- return map
- end
-
- -- Check the indent level
- local level, _ = countindent(line)
- if level < indent then
- return map
- elseif level > indent then
- error("found bad indenting in line: ".. line)
- end
-
- -- Find the key
- local key
- local s, rest = self:parsestring(line)
-
- -- Quoted keys
- if s and startswith(rest, ':') then
- local sc = self:parsescalar(s, {}, 0)
- if sc and type(sc) ~= 'string' then
- key = sc
- else
- key = s
- end
- line = ssub(rest, 2)
- else
- error("failed to classify line: "..line)
- end
-
- key = checkdupekey(map, key)
- line = ltrim(line)
-
- if ssub(line, 1, 1) == '!' then
- -- ignore type
- local rh = ltrim(ssub(line, 3))
- local typename = smatch(rh, '^!?[^%s]+')
- line = ltrim(ssub(rh, #typename+1))
- end
-
- if not isemptyline(line) then
- tremove(lines, 1)
- line = ltrim(line)
- map[key] = self:parsescalar(line, lines, indent)
- else
- -- An indent
- tremove(lines, 1)
- if #lines == 0 then
- map[key] = null
- return map;
- end
- if sfind(lines[1], '^%s*%-') then
- local indent2 = countindent(lines[1])
- map[key] = self:parseseq('', lines, indent2)
- elseif sfind(lines[1], '^%s*%?') then
- local indent2 = countindent(lines[1])
- map[key] = self:parseset('', lines, indent2)
- else
- local indent2 = countindent(lines[1])
- if indent >= indent2 then
- -- Null hash entry
- map[key] = null
- else
- map[key] = self:parsemap('', lines, indent2)
- end
- end
- end
- end
- return map
-end
-
-
--- : (list<str>)->dict
-function Parser:parsedocuments(lines)
- lines = compactifyemptylines(lines)
-
- if sfind(lines[1], '^%%YAML') then tremove(lines, 1) end
-
- local root = {}
- local in_document = false
- while #lines > 0 do
- local line = lines[1]
- -- Do we have a document header?
- local docright;
- if sfind(line, '^%-%-%-') then
- -- Handle scalar documents
- docright = ssub(line, 4)
- tremove(lines, 1)
- in_document = true
- end
- if docright then
- if (not sfind(docright, '^%s+$') and
- not sfind(docright, '^%s+#')) then
- tinsert(root, self:parsescalar(docright, lines))
- end
- elseif #lines == 0 or startswith(line, '---') then
- -- A naked document
- tinsert(root, null)
- while #lines > 0 and not sfind(lines[1], '---') do
- tremove(lines, 1)
- end
- in_document = false
- -- XXX The final '-+$' is to look for -- which ends up being an
- -- error later.
- elseif not in_document and #root > 0 then
- -- only the first document can be explicit
- error('parse error: '..line)
- elseif sfind(line, '^%s*%-') then
- -- An array at the root
- tinsert(root, self:parseseq('', lines, 0))
- elseif sfind(line, '^%s*[^%s]') then
- -- A hash at the root
- local level = countindent(line)
- tinsert(root, self:parsemap('', lines, level))
- else
- -- Shouldn't get here. @lines have whitespace-only lines
- -- stripped, and previous match is a line with any
- -- non-whitespace. So this clause should only be reachable via
- -- a perlbug where \s is not symmetric with \S
-
- -- uncoverable statement
- error('parse error: '..line)
- end
- end
- if #root > 1 and Null.isnull(root[1]) then
- tremove(root, 1)
- return root
- end
- return root
-end
-
---- Parse yaml string into table.
-function Parser:parse(source)
- local lines = {}
- for line in string.gmatch(source .. '\n', '(.-)\r?\n') do
- tinsert(lines, line)
- end
-
- local docs = self:parsedocuments(lines)
- if #docs == 1 then
- return docs[1]
- end
-
- return docs
-end
-
-local function parse(source, options)
- local options = options or {}
- local parser = setmetatable (options, {__index=Parser})
- return parser:parse(source)
-end
-
-return {
- version = 0.1,
- parse = parse,
-}
diff --git a/macros/generic/markdown/markdown.dtx b/macros/generic/markdown/markdown.dtx
index 4685ed3ee6..e13c91809f 100644
--- a/macros/generic/markdown/markdown.dtx
+++ b/macros/generic/markdown/markdown.dtx
@@ -78,20 +78,20 @@
\usepackage[
citations,
definitionLists,
- fencedCode,
+ experimental,
notes,
headerAttributes,
- html,
hybrid,
inlineNotes,
jekyllData,
+ linkAttributes,
relativeReferences,
stripPercentSigns,
underscores = false,
]{markdown}
\markdownSetup{
import = {
- witiko/dot,
+ witiko/diagrams@v2,
witiko/graphicx/http,
witiko/markdown/techdoc = {
options as lua-options
@@ -122,7 +122,7 @@
---
title: A Markdown Interpreter for \TeX
url: https://github.com/witiko/markdown
-authors: [Vít Starý Novotný]
+authors: [Vít Starý Novotný, Andrej Genčur]
email: witiko@mail.muni.cz
revision: \markdownVersion
date: \markdownLastModified
@@ -684,118 +684,153 @@ abbr {
%</techdoc-block-diagram>
%<*techdoc-bibliography>
@online{starynovotny24,
- author = {Starý Novotný, Vít and Enrico Gregorio and Max Chernoff and P. Spratte, Jonathan},
- title = {Convert control sequence with a variable number of undelimited parameters into a token list},
- url = {https://tex.stackexchange.com/q/716362/70941},
- urldate = {2024-04-28},
+ author = {Starý Novotný, Vít and Enrico Gregorio and Max Chernoff and P. Spratte, Jonathan},
+ title = {Convert control sequence with a variable number of undelimited parameters into a token list},
+ url = {https://tex.stackexchange.com/q/716362/70941},
+ urldate = {2024-04-28},
+}
+@online{starynovotny25,
+ author = {Starý Novotný, Vít},
+ title = {Routing YAML metadata to expl3 key–values},
+ titleaddon = {Markdown Enhancement Proposal},
+ url = {https://github.com/witiko/markdown/discussions/517},
+ date = {2024-10-14},
+ urldate = {2025-01-06},
}
@book{tantau21,
- author = {Till Tantau and Joseph Wright and Vedran Miletić},
- title = {The Beamer class},
- date = {2021-02-10},
- url = {https://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf},
- urldate = {2021-02-11}}
+ author = {Till Tantau and Joseph Wright and Vedran Miletić},
+ title = {The Beamer class},
+ date = {2021-02-10},
+ url = {https://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf},
+ urldate = {2021-02-11}}
@online{sotkov17,
- author = {Sotkov, Anton},
- title = {File transclusion syntax for Markdown},
- date = {2017-01-19},
- url = {https://github.com/iainc/Markdown-Content-Blocks},
- urldate = {2018-01-08}}
+ author = {Sotkov, Anton},
+ title = {File transclusion syntax for Markdown},
+ date = {2017-01-19},
+ url = {https://github.com/iainc/Markdown-Content-Blocks},
+ urldate = {2018-01-08}}
@book{luatex21,
- author = {{Lua\TeX{} development team}},
- title = {Lua\TeX{} reference manual},
- date = {2021-07-23},
- note = {Version 1.10 (stable)},
- url = {https://www.pragma-ade.com/general/manuals/luatex.pdf},
- urldate = {2022-09-30}}
+ author = {{Lua\TeX{} development team}},
+ title = {Lua\TeX{} reference manual},
+ date = {2021-07-23},
+ note = {Version 1.10 (stable)},
+ url = {https://www.pragma-ade.com/general/manuals/luatex.pdf},
+ urldate = {2022-09-30}}
@book{latex17,
- author = {Braams, Johannes and Carlisle, David and Jeffrey, Alan and
+ author = {Braams, Johannes and Carlisle, David and Jeffrey, Alan and
Lamport, Leslie and Mittelbach, Frank and Rowley, Chris and
Schöpf, Rainer},
- title = {The \Hologo{LaTeX2e} Sources},
- date = {2017-04-15},
- url = {https://mirrors.ctan.org/macros/latex/base/source2e.pdf},
- urldate = {2018-01-08}}
+ title = {The \Hologo{LaTeX2e} Sources},
+ date = {2017-04-15},
+ url = {https://mirrors.ctan.org/macros/latex/base/source2e.pdf},
+ urldate = {2018-01-08}}
@book{mittelbach17,
- author = {Mittelbach, Frank},
- title = {The \texttt{doc} and \texttt{shortvrb} Packages},
- date = {2017-04-15},
- url = {https://mirrors.ctan.org/macros/latex/base/doc.pdf},
- urldate = {2018-02-19}}
+ author = {Mittelbach, Frank},
+ title = {The \texttt{doc} and \texttt{shortvrb} Packages},
+ date = {2017-04-15},
+ url = {https://mirrors.ctan.org/macros/latex/base/doc.pdf},
+ urldate = {2018-02-19}}
+@book{mittelbach24,
+ author = {Mittelbach, Frank},
+ title = {\LaTeX's hook management},
+ date = {2024-06-26},
+ url = {https://mirrors.ctan.org/macros/latex/base/lthooks-code.pdf},
+ urldate = {2024-10-02}}
@book{poore17,
- author = {Poore, Geoffrey M.},
- title = {The \texttt{minted} Package},
- subtitle = {Highlighted source code in \LaTeX},
- date = {2017-07-19},
- version = {v2.5},
- url = {https://mirrors.ctan.org/macros/latex/contrib/minted/minted.pdf},
- urldate = {2020-09-01}}
+ author = {Poore, Geoffrey M.},
+ title = {The \texttt{minted} Package},
+ subtitle = {Highlighted source code in \LaTeX},
+ date = {2017-07-19},
+ version = {v2.5},
+ url = {https://mirrors.ctan.org/macros/latex/contrib/minted/minted.pdf},
+ urldate = {2020-09-01}}
@online{macfarlane22,
- title = {Pandoc},
- subtitle = {a universal document converter},
- author = {John MacFarlane},
- year = {2022},
- url = {https://pandoc.org/},
- urldate = {2022-10-05}}
+ title = {Pandoc},
+ subtitle = {a universal document converter},
+ author = {John MacFarlane},
+ year = {2022},
+ url = {https://pandoc.org/},
+ urldate = {2022-10-05}}
@online{novotny15,
- author = {Novotný, Vít},
- year = {2015},
- title = {TeXový interpret jazyka Markdown (markdown.sty)},
- location = {Brno, Czech Republic},
- publisher = {Masaryk University},
- url = {https://www.muni.cz/en/research/projects/32984},
- urldate = {2018-02-19}}
+ author = {Novotný, Vít},
+ year = {2015},
+ title = {TeXový interpret jazyka Markdown (markdown.sty)},
+ location = {Brno, Czech Republic},
+ publisher = {Masaryk University},
+ url = {https://www.muni.cz/en/research/projects/32984},
+ urldate = {2018-02-19}}
@book{ierusalimschy13,
- author = {Ierusalimschy, Roberto},
- year = {2013},
- title = {Programming in Lua},
- edition = {3},
- isbn = {978-85-903798-5-0},
- pagetotal = {xviii, 347},
- location = {Rio de Janeiro},
- publisher = {PUC-Rio}}
+ author = {Ierusalimschy, Roberto},
+ year = {2013},
+ title = {Programming in Lua},
+ edition = {3},
+ isbn = {978-85-903798-5-0},
+ pagetotal = {xviii, 347},
+ location = {Rio de Janeiro},
+ publisher = {PUC-Rio}}
@book{knuth86a,
- author = {Knuth, Donald Ervin},
- year = {1986},
- title = {The \TeX{}book},
- edition = {3},
- isbn = {0-201-13447-0},
- pagetotal = {ix, 479},
- series = {Computers \& Typesetting},
- volume = {A},
- location = {Reading, MA},
- publisher = {Addison-Wesley}}
+ author = {Knuth, Donald Ervin},
+ year = {1986},
+ title = {The \TeX{}book},
+ edition = {3},
+ isbn = {0-201-13447-0},
+ pagetotal = {ix, 479},
+ series = {Computers \& Typesetting},
+ volume = {A},
+ location = {Reading, MA},
+ publisher = {Addison-Wesley}}
@book{knuth86b,
- author = {Knuth, Donald Ervin},
- year = {1986},
- title = {\TeX: The Program},
- isbn = {978-0-201-13437-7},
- pagetotal = {xvi, 594},
- series = {Computers \& Typesetting},
- volume = {B},
- location = {Reading, MA},
- publisher = {Addison-Wesley}}
+ author = {Knuth, Donald Ervin},
+ year = {1986},
+ title = {\TeX: The Program},
+ isbn = {978-0-201-13437-7},
+ pagetotal = {xvi, 594},
+ series = {Computers \& Typesetting},
+ volume = {B},
+ location = {Reading, MA},
+ publisher = {Addison-Wesley}}
@book{eijkhout92,
- author = {Victor Eijkhout},
- title = {\TeX{} by Topic},
- subtitle = {A \TeX nician's Reference},
- isbn = {978-0-201-56882-0},
- pagetotal = {307},
- date = {1992-02-01},
- location = {Wokingham, England},
- publisher = {Addison-Wesley}}
+ author = {Victor Eijkhout},
+ title = {\TeX{} by Topic},
+ subtitle = {A \TeX nician's Reference},
+ isbn = {978-0-201-56882-0},
+ pagetotal = {307},
+ date = {1992-02-01},
+ location = {Wokingham, England},
+ publisher = {Addison-Wesley}}
@inproceedings{sharif10,
- author = {Sharif, Bonita and Maletic, Jonathan I.},
- booktitle = {2010 IEEE 18th International Conference on Program Comprehension},
- title = {An Eye Tracking Study on camelCase and under\_score Identifier Styles},
- year = {2010},
- pages = {196-205},
- doi = {10.1109/ICPC.2010.41}}
+ author = {Sharif, Bonita and Maletic, Jonathan I.},
+ booktitle = {2010 IEEE 18th International Conference on Program Comprehension},
+ title = {An Eye Tracking Study on camelCase and under\_score Identifier Styles},
+ year = {2010},
+ pages = {196-205},
+ doi = {10.1109/ICPC.2010.41}}
+@online{novotny24,
+ author = {Starý Novotný, Vít},
+ title = {Versioned Themes},
+ titleaddon = {Markdown Enhancement Proposal},
+ date = {2024-10-13},
+ urldate = {2024-10-21},
+ url = {https://github.com/Witiko/markdown/discussions/514}}
+@book{latex24,
+ author = {Frank Mittelbach and Ulrike Fischer and {\LaTeX{} Project}},
+ title = {The \texttt{documentmetadata-support} code},
+ date = {2024-06-01},
+ url = {https://mirrors.ctan.org/macros/latex/required/latex-lab/documentmetadata-support-code.pdf},
+ urldate = {2024-10-21}}
+@online{latex25,
+ author = {{\LaTeX{} Project}},
+ title = {l3kernel},
+ subtitle = {\LaTeX3 programming conventions},
+ date = {2024-12-25},
+ url = {https://ctan.org/pkg/l3kernel},
+ urldate = {2025-01-06}}
%</techdoc-bibliography>
%<@@=markdown>
%<*themes-witiko-markdown-techdoc>
\ProvidesPackage{markdownthemewitiko_markdown_techdoc}[2022/12/13]
\RequirePackage{etoolbox}
+\gdef\ltd@title@author{\@gobble}%
\markdownSetup{
renderers = {
head*Four = {\paragraph{#1}\leavevmode},
@@ -804,40 +839,55 @@ abbr {
codeSpan = {\inline{#1}},
jekyllData(End) = {%
\AfterEndPreamble{%
+ \hypersetup{pdfauthor=\ltd@title@author}%
\printtitlepage
\tableofcontents
{\def\addcontentsline##1##2##3{}\listoffigures}%
}%
},
},
- jekyllDataRenderers = {
- /authors/* = {%
- \gdef\ltd@title@author{#1}%
- \hypersetup{pdfauthor={#1}}%
+}
+\ExplSyntaxOn
+\keys_define:nn
+ { markdown / techdoc }
+ {
+ authors / unknown .code:n = {
+ \tl_gput_right:Nn
+ \ltd@title@author
+ { ,~#1 }
},
- title = {%
- \gdef\ltd@title@title{#1}%
- \gdef\ltd@title@subtitle{}%
- \hypersetup{pdftitle={#1}}%
+ title .code:n = {
+ \tl_gset:Nn
+ \ltd@title@title
+ { #1 }
+ \tl_gset:Nn
+ \ltd@title@subtitle
+ { }
+ \hypersetup
+ { pdftitle = { #1 } }
},
- date = {\gdef\ltd@title@date{#1}},
- email = {\gdef\ltd@title@email{#1}},
- revision = {\gdef\ltd@title@revision{#1}},
- url = {\gdef\ltd@title@url{#1}},
+ date .tl_gset:N = \ltd@title@date,
+ email .tl_gset:N = \ltd@title@email,
+ revision .tl_gset:N = \ltd@title@revision,
+ url .tl_gset:N = \ltd@title@url,
}
-}
-\ExplSyntaxOn
-\markdownSetup{
- rendererPrototypes = {
- headerAttributeContextEnd = {
- \seq_map_inline:Nn
- \l_@@_header_identifiers_seq
- { \label { sec:##1 } }
- \seq_clear:N
- \l_@@_header_identifiers_seq
+\cs_generate_variant:Nn
+ \cs_gset:Npn
+ { NpV }
+\yamlSetup
+ { jekyllDataKeyValue = markdown / techdoc }
+\markdownSetup
+ {
+ rendererPrototypes = {
+ headerAttributeContextEnd = {
+ \seq_map_inline:Nn
+ \g_@@_header_identifiers_seq
+ { \label { sec:##1 } }
+ \seq_gclear:N
+ \g_@@_header_identifiers_seq
+ },
},
- },
-}
+ }
\ExplSyntaxOff
\renewcommand\markdownLaTeXRendererDirectOrIndirectLink[4]{%
#1\footnote{See \url{#3}.}}
@@ -875,14 +925,13 @@ abbr {
---
title: Markdown Package User Manual
-author: Vít Starý Novotný
+author: Vít Starý Novotný, Andrej Genčur
date: \markdownVersion{} \markdownLastModified{}
---
<link href="https://afeld.github.io/emoji-css/emoji.css" rel="stylesheet" />
% \fi
-% \par
% \begin{markdown}
Introduction
@@ -890,7 +939,7 @@ Introduction
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
+containing markdown markup. Unlike other converters, 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. 😉
@@ -922,21 +971,23 @@ documentation][techdoc].
(A Markdown Interpreter for TeX)
%</manual>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader,lua-unicode-data>
% \fi
% \begin{macrocode}
local metadata = {
version = "(((VERSION)))",
- comment = "A module for the conversion from markdown to plain TeX",
- author = "John MacFarlane, Hans Hagen, Vít Starý Novotný",
+ comment = "A module for the conversion from markdown "
+ .. "to plain TeX",
+ author = "John MacFarlane, Hans Hagen, Vít Starý Novotný, "
+ .. "Andrej Genčur",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
- "2016-2023 Vít Starý Novotný"},
+ "2016-2024 Vít Starý Novotný, Andrej Genčur"},
license = "LPPL 1.3c"
}
% \end{macrocode}
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader,lua-unicode-data>
%<*lua>
% \fi
% \begin{macrocode}
@@ -952,7 +1003,7 @@ Requirements
The package requires either [our official Docker image][docker], which contains
the latest development version of the Markdown package, or a \TeX{}
-distribution: [\TeX{} Live][tl] ≥ 2022 is known to work with the current
+distribution: [\TeX{} Live][tl] ≥ 2023 is known to work with the current
version of the Markdown package and so are recent versions of [Mik\TeX{}][mik].
If you are using an older, incomplete, or atypical \TeX{} distribution, please
consult the [technical documentation][techdoc] for a detailed list of
@@ -988,14 +1039,10 @@ make base
Either of the two abovelisted approaches 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.lua`, `markdown-parser.lua`, and `markdown-unicode-data.lua`: The Lua module
+* `markdown-cli.lua` and `markdown2tex.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`
@@ -1009,14 +1056,13 @@ directory structure. This is generally where the individual files should be
placed:
* `⟨TEXMF⟩/tex/luatex/markdown/markdown.lua`
-* `⟨TEXMF⟩/tex/luatex/markdown/markdown-tinyyaml.lua`
+* `⟨TEXMF⟩/tex/luatex/markdown/markdown-parser.lua`
+* `⟨TEXMF⟩/tex/luatex/markdown/markdown-unicode-data.lua`
* `⟨TEXMF⟩/scripts/markdown/markdown-cli.lua`
+* `⟨TEXMF⟩/scripts/markdown/markdown2tex.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_markdown_defaults.sty`
* `⟨TEXMF⟩/tex/context/third/markdown/t-markdown.tex`
* `⟨TEXMF⟩/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex`
@@ -1035,14 +1081,13 @@ portably typeset on legacy \TeX{} distributions.
This is where the individual files should be placed:
* `./markdown.lua`
-* `./markdown-tinyyaml.lua`
+* `./markdown-parser.lua`
+* `./markdown-unicode-data.lua`
* `./markdown-cli.lua`
+* `./markdown2tex.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`
@@ -1052,7 +1097,6 @@ The file `markdown.tex` *must* be placed in a directory named `markdown`.
%</manual>
%<*lua>
% \fi
-% \par
% \begin{markdown}
%
% Requirements
@@ -1075,10 +1119,13 @@ The file `markdown.tex` *must* be placed in a directory named `markdown`.
% Live${}\geq{}2013$).
%
% \end{markdown}
+% \iffalse
+%</lua>
+%<*lua,lua-unicode-data>
+% \fi
% \begin{macrocode}
local lpeg = require("lpeg")
% \end{macrocode}
-% \par
% \begin{markdown}
%
% \pkg{Selene Unicode}
@@ -1089,10 +1136,13 @@ local lpeg = require("lpeg")
% Lua\TeX{} (\TeX Live${}\geq{}2008$).
%
% \end{markdown}
+% \iffalse
+%</lua,lua-unicode-data>
+%<*lua,lua-unicode-data-generator>
+% \fi
% \begin{macrocode}
local unicode = require("unicode")
% \end{macrocode}
-% \par
% \begin{markdown}
%
% \pkg{MD5}
@@ -1103,9 +1153,17 @@ local unicode = require("unicode")
% Live${}\geq{}2008$).
%
% \end{markdown}
+% \iffalse
+%</lua,lua-unicode-data-generator>
+%<*lua,lua-loader>
+% \fi
% \begin{macrocode}
-local md5 = require("md5");
+local md5 = require("md5")
% \end{macrocode}
+% \iffalse
+%</lua,lua-loader>
+%<*lua,lua-unicode-data-generator>
+% \fi
% \begin{markdown}
%
% \pkg{Kpathsea}
@@ -1115,7 +1173,7 @@ local md5 = require("md5");
%
% \end{markdown}
% \begin{macrocode}
-(function()
+;(function()
% \end{macrocode}
% \begin{markdown}
%
@@ -1136,7 +1194,6 @@ local md5 = require("md5");
end
end)()
% \end{macrocode}
-% \par
% \begin{markdown}
%
% All the abovelisted modules are statically linked into the current version of
@@ -1148,27 +1205,40 @@ end)()
%: A package that implements Unicode case-folding in \TeX{} Live${}\geq{}2020$.
%
% \end{markdown}
+% \iffalse
+%</lua,lua-unicode-data-generator>
+%<*depends>
+% \fi
+% \begin{macrocode}
+hard lua-uni-algos
+% \end{macrocode}
+% \iffalse
+%</depends>
+%<*lua>
+% \fi
% \begin{macrocode}
local uni_algos = require("lua-uni-algos")
% \end{macrocode}
-% \par
% \begin{markdown}
%
% \pkg{api7/lua-tinyyaml}
%
%: A library that provides a regex-based recursive descent \acro{yaml}
% (subset) parser that is used to read \acro{yaml} metadata when the
-% \Opt{jekyllData} option is enabled. We carry a copy of the library
-% in file `markdown-tinyyaml.lua` distributed together with the Markdown
-% package. <!-- TODO: Stop carrying the copy of the library in TeX Live
-% 2023. -->
+% \Opt{jekyllData} option is enabled.
%
% \end{markdown}
% \iffalse
%</lua>
+%<*depends>
+% \fi
+% \begin{macrocode}
+hard lua-tinyyaml
+% \end{macrocode}
+% \iffalse
+%</depends>
%<*tex>
% \fi
-% \par
% \begin{markdown}
%
%### Plain \TeX{} Requirements {#tex-prerequisites}
@@ -1179,24 +1249,39 @@ local uni_algos = require("lua-uni-algos")
%
% \pkg{expl3}
%
-%: A package that enables the expl3 language from the \LaTeX3 kernel in
-% \TeX{} Live${}\leq{}2019$. It is used to implement reflection
+%: A package that enables the expl3 language [@latex25] from the \LaTeX3
+% kernel in \TeX{} Live${}\leq{}2019$. It is used to implement reflection
% capabilities that allow us to enumerate and inspect high-level concepts
% such as options, renderers, and renderer prototypes.
%
% \end{markdown}
-% \begin{macrocode}
+% \iffalse
%</tex>
+%<*depends>
+% \fi
+% \begin{macrocode}
+hard l3kernel
+% \end{macrocode}
+% \iffalse
+%</depends>
%<*context>
+% \fi
+% \begin{macrocode}
\unprotect
+% \end{macrocode}
+% \iffalse
%</context>
%<*context,tex>
-\ifx\ExplSyntaxOn\undefined
+% \fi
+% \begin{macrocode}
+\expandafter\ifx\csname ExplSyntaxOn\endcsname\relax
\input expl3-generic
\fi
+% \end{macrocode}
+% \iffalse
%</context,tex>
%<*tex>
-% \end{macrocode}
+% \fi
% \begin{markdown}
%
% \pkg{lt3luabridge}
@@ -1205,6 +1290,20 @@ local uni_algos = require("lua-uni-algos")
% with other TeX engines that provide the *shell escape* capability,
% which allows them to execute code with the system's shell.
%
+% \end{markdown}
+% \iffalse
+%</tex>
+%<*depends>
+% \fi
+% \begin{macrocode}
+hard lt3luabridge
+% \end{macrocode}
+% \iffalse
+%</depends>
+%<*tex>
+% \fi
+% \begin{markdown}
+%
% The plain \TeX{} part of the package also requires the following Lua module:
%
% \pkg{Lua File System}
@@ -1237,26 +1336,25 @@ local uni_algos = require("lua-uni-algos")
%</tex>
%<*latex>
% \fi
-% \par
% \begin{markdown}
%
%### \LaTeX{} Requirements {#latex-prerequisites}
%
% The \LaTeX{} part of the package requires that the \Hologo{LaTeX2e} format is
-% loaded,
+% loaded, a \TeX{} engine that extends \Hologo{eTeX}, and all the plain \TeX{}
+% prerequisites (see Section <#sec:tex-prerequisites>).
% \end{markdown}
% \iffalse
-%<*themes-witiko-dot,latex-themes-witiko-graphicx-http>
% \fi
% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
% \end{macrocode}
% \iffalse
-%</themes-witiko-dot,latex-themes-witiko-graphicx-http>
+%</latex>
+%<*depends>
% \fi
% \begin{markdown}
-% a \TeX{} engine that extends \Hologo{eTeX}, and all the plain \TeX{}
-% prerequisites (see Section <#sec:tex-prerequisites>):
%
% The following packages are soft prerequisites. They are only used to provide
% default token renderer prototypes (see sections
@@ -1269,78 +1367,117 @@ local uni_algos = require("lua-uni-algos")
%
%: A package that provides the `\url` macro for the typesetting of links.
%
+% \end{markdown}
+% \begin{macrocode}
+soft url
+% \end{macrocode}
+% \begin{markdown}
+%
% \pkg{graphicx}
%
%: A package that provides the `\includegraphics` macro for the typesetting
-% of images.
+% of images. Furthermore, it also provides a key--value interface that is
+% used in the default renderer prototypes for image attribute contexts.
%
-% \pkg{paralist}
+% \end{markdown}
+% \begin{macrocode}
+soft graphics
+% \end{macrocode}
+% \begin{markdown}
%
-%: A package that provides the `compactitem`, `compactenum`, and
-% `compactdesc` macros for the typesetting of tight bulleted lists,
-% ordered lists, and definition lists as well as the rendering of
-% fancy lists.
+% \pkg{enumitem} and \pkg{paralist}
%
-% \pkg{ifthen}
+%: Packages that provide macros for the default renderer prototypes for
+% tight and fancy lists.
%
-%: A package that provides a concise syntax for the inspection of macro
-% values. It is used in the `witiko/dot` \LaTeX{} theme (see Section
-% <#sec:latexthemes>).
+% The package \pkg{paralist} will be used unless the option
+% \Opt{experimental} has been enabled, in which case, the package
+% \pkg{enumitem} will be used. Furthermore, enabling any test phase
+% [@latex24] will also cause \pkg{enumitem} to be used. In a future
+% major version, \pkg{enumitem} will replace \pkg{paralist} altogether.
+%
+% \end{markdown}
+% \begin{macrocode}
+soft enumitem
+soft paralist
+% \end{macrocode}
+% \begin{markdown}
%
% \pkg{fancyvrb}
%
%: A package that provides the `\VerbatimInput` macros for the verbatim
% inclusion of files containing code.
%
+% \end{markdown}
+% \begin{macrocode}
+soft fancyvrb
+% \end{macrocode}
+% \begin{markdown}
+%
% \pkg{csvsimple}
%
%: A package that provides the `\csvautotabular` macro for typesetting
% \acro{csv} files in the default renderer prototypes for iA\\,Writer
% content blocks.
%
-% \pkg{gobble}
-%
-%: A package that provides the `\@gobblethree` \TeX{} command that
-% is used in the default renderer prototype for citations. The package
-% is included in \TeX Live${}\geq{}2016$.
+% \end{markdown}
+% \begin{macrocode}
+soft csvsimple
+soft pgf # required by `csvsimple`, which loads `pgfkeys.sty`
+soft tools # required by `csvsimple`, which loads `shellesc.sty`
+soft etoolbox # required by `csvsimple`, which loads `etoolbox.sty`
+% \end{macrocode}
+% \begin{markdown}
%
% \pkg{amsmath} and \pkg{amssymb}
%
%: Packages that provide symbols used for drawing ticked and unticked
% boxes.
%
-% \pkg{catchfile}
-%
-%: A package that catches the contents of a file and puts it in a macro. It
-% is used in the `witiko/graphicx/http` \LaTeX{} theme, see Section
-% <#sec:latexthemes>.
+% \end{markdown}
+% \begin{macrocode}
+soft amsmath
+soft amsfonts
+% \end{macrocode}
+% \begin{markdown}
%
% \pkg{graphicx}
%
-%: A package that builds upon the \pkg{graphics} package, which is part of
-% the \LaTeXe{} kernel. It provides a key-value interface that is used in
-% the default renderer prototypes for image attribute contexts.
+%: A package that provides extended support for graphics. It is used in
+% the `witiko/diagrams`, and `witiko/graphicx/http` plain \TeX{} themes,
+% see Section <#sec:themes>.
%
-% \pkg{grffile}
+% \end{markdown}
+% \begin{macrocode}
+soft graphics
+soft epstopdf # required by `graphics` and `graphicx`, which load `epsopdf-base.sty`
+soft epstopdf-pkg # required by `graphics` and `graphicx`, which load `epsopdf-base.sty`
+% \end{macrocode}
+% \begin{markdown}
+%
+% \pkg{soul} and \pkg{xcolor}
%
-%: A package that extends the name processing of the \pkg{graphics} package
-% to support a larger range of file names in $2006\leq{}$\TeX{}
-% Live${}\leq{}2019$. Since \TeX{} Live${}\geq{}2020$, the functionality
-% of the package has been integrated in the \LaTeXe{} kernel. It is used in
-% the `witiko/dot` and `witiko/graphicx/http` \LaTeX{} themes, see Section
-% <#sec:latexthemes>.
+%: Packages that are used in the default renderer prototypes for
+% strike-throughs and marked text in pdf\TeX.
%
-% \pkg{etoolbox}
+% \end{markdown}
+% \begin{macrocode}
+soft soul
+soft xcolor
+% \end{macrocode}
+% \begin{markdown}
%
-%: A package that is used to polyfill the general hook management system in
-% the default renderer prototypes for \acro{yaml} metadata, see Section
-% <#sec:latex-yaml-metadata>, and also in the default renderer prototype
-% for identifier attributes.
+% \pkg{lua-ul} and \pkg{luacolor}
%
-% \pkg{soulutf8}
+%: Packages that are used in the default renderer prototypes for
+% strike-throughs and marked text in Lua\TeX.
%
-%: A package that is used in the default renderer prototype for
-% strike-throughs and marked text.
+% \end{markdown}
+% \begin{macrocode}
+soft lua-ul
+soft luacolor
+% \end{macrocode}
+% \begin{markdown}
%
% \pkg{ltxcmds}
%
@@ -1348,6 +1485,23 @@ local uni_algos = require("lua-uni-algos")
% \pkg{listings} packages are loaded in the default renderer prototype
% for fenced code blocks.
%
+% \end{markdown}
+% \begin{macrocode}
+soft ltxcmds
+% \end{macrocode}
+% \begin{markdown}
+%
+% \pkg{luaxml}
+%
+%: A package that is used to convert \acro{HTML} to \LaTeX{} in the default
+% renderer prototypes for content blocks, raw blocks, and inline raw spans.
+%
+% \end{markdown}
+% \begin{macrocode}
+soft luaxml
+% \end{macrocode}
+% \begin{markdown}
+%
% \pkg{verse}
%
%: A package that is used in the default renderer prototypes for
@@ -1355,13 +1509,15 @@ local uni_algos = require("lua-uni-algos")
%
% \end{markdown}
% \begin{macrocode}
-\RequirePackage{expl3}
+soft verse
% \end{macrocode}
+% \begin{markdown}
+%
+% \end{markdown}
% \iffalse
-%</latex>
+%</depends>
%<*context>
% \fi
-% \par
% \begin{markdown}
%
%### \Hologo{ConTeXt} Prerequisites
@@ -1501,21 +1657,14 @@ Hello *world*!
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- hello.md hello.tex
+markdown2tex -- hello.md hello.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][].
-
- [Kpathsea]: https://tug.org/kpathsea/ (Kpathsea - TeX Users Group)
A PDF document named `document.pdf` should be produced and contain the text “Hello
*world*!” Invoking pdfTeX should have the same effect:
``` sh
-texlua ⟨CLI pathname⟩ -- hello.md hello.tex
+markdown2tex -- hello.md hello.tex
pdftex document.tex
``````
@@ -1708,7 +1857,6 @@ Each part will be shown by example, leaving the implementation details to the
%</manual>
%<*lua>
% \fi
-% \par
% \begin{markdown}
%
% Lua Interface {#luainterface}
@@ -1739,7 +1887,7 @@ module and a command-line interface (CLI).
(Lua library for conversion between markup formats)
%</manual-interfaces>
-%<*lua>
+%<*lua,lua-loader,lua-unicode-data>
% \fi
% \begin{markdown}
%
@@ -1754,7 +1902,10 @@ module and a command-line interface (CLI).
% \begin{macrocode}
local M = {metadata = metadata}
% \end{macrocode}
-% \par
+% \iffalse
+%</lua,lua-loader,lua-unicode-data>
+%<*lua>
+% \fi
% \begin{markdown}
%
%### Conversion from Markdown to Plain \TeX{} {#lua-conversion}
@@ -1823,7 +1974,6 @@ local walkable_syntax = {
},
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamref{reader->insert_pattern} method inserts a \acro{peg} pattern into
@@ -1983,15 +2133,10 @@ $\sqrt{-1}$ *equals* $i$.
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- example.md nomath.tex
-texlua ⟨CLI pathname⟩ tex_math_dollars=true -- example.md math.tex
+markdown2tex -- example.md nomath.tex
+markdown2tex 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,
-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:
@@ -2004,8 +2149,8 @@ following text:
Invoking pdfTeX should have the same effect:
``` sh
-texlua ⟨CLI pathname⟩ -- example.md nomath.tex
-texlua ⟨CLI pathname⟩ tex_math_dollars=true -- example.md math.tex
+markdown2tex -- example.md nomath.tex
+markdown2tex tex_math_dollars=true -- example.md math.tex
pdftex document.tex
``````
@@ -2030,16 +2175,15 @@ In this section, I will describe all the options recognized by the Markdown
package.
%</manual-options>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
local defaultOptions = {}
% \end{macrocode}
% \begingroup
% \markdownSetup{snippet=lua-options}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
### Lua
@@ -2073,7 +2217,9 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
\prop_new:N \g_@@_default_lua_options_prop
\seq_new:N \g_@@_option_layers_seq
\tl_const:Nn \c_@@_option_layer_lua_tl { lua }
-\seq_gput_right:NV \g_@@_option_layers_seq \c_@@_option_layer_lua_tl
+\seq_gput_right:NV
+ \g_@@_option_layers_seq
+ \c_@@_option_layer_lua_tl
\cs_new:Nn
\@@_add_lua_option:nnn
{
@@ -2150,21 +2296,50 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
\cs_generate_variant:Nn
\msg_error:nnnn
{ nnnV }
-\seq_new:N \g_@@_option_types_seq
-\tl_const:Nn \c_@@_option_type_clist_tl { clist }
-\seq_gput_right:NV \g_@@_option_types_seq \c_@@_option_type_clist_tl
-\tl_const:Nn \c_@@_option_type_counter_tl { counter }
-\seq_gput_right:NV \g_@@_option_types_seq \c_@@_option_type_counter_tl
-\tl_const:Nn \c_@@_option_type_boolean_tl { boolean }
-\seq_gput_right:NV \g_@@_option_types_seq \c_@@_option_type_boolean_tl
-\tl_const:Nn \c_@@_option_type_number_tl { number }
-\seq_gput_right:NV \g_@@_option_types_seq \c_@@_option_type_number_tl
-\tl_const:Nn \c_@@_option_type_path_tl { path }
-\seq_gput_right:NV \g_@@_option_types_seq \c_@@_option_type_path_tl
-\tl_const:Nn \c_@@_option_type_slice_tl { slice }
-\seq_gput_right:NV \g_@@_option_types_seq \c_@@_option_type_slice_tl
-\tl_const:Nn \c_@@_option_type_string_tl { string }
-\seq_gput_right:NV \g_@@_option_types_seq \c_@@_option_type_string_tl
+\seq_new:N
+ \g_@@_option_types_seq
+\tl_const:Nn
+ \c_@@_option_type_clist_tl
+ { clist }
+\seq_gput_right:NV
+ \g_@@_option_types_seq
+ \c_@@_option_type_clist_tl
+\tl_const:Nn
+ \c_@@_option_type_counter_tl
+ { counter }
+\seq_gput_right:NV
+ \g_@@_option_types_seq
+ \c_@@_option_type_counter_tl
+\tl_const:Nn
+ \c_@@_option_type_boolean_tl
+ { boolean }
+\seq_gput_right:NV
+ \g_@@_option_types_seq
+ \c_@@_option_type_boolean_tl
+\tl_const:Nn
+ \c_@@_option_type_number_tl
+ { number }
+\seq_gput_right:NV
+ \g_@@_option_types_seq
+ \c_@@_option_type_number_tl
+\tl_const:Nn
+ \c_@@_option_type_path_tl
+ { path }
+\seq_gput_right:NV
+ \g_@@_option_types_seq
+ \c_@@_option_type_path_tl
+\tl_const:Nn
+ \c_@@_option_type_slice_tl
+ { slice }
+\seq_gput_right:NV
+ \g_@@_option_types_seq
+ \c_@@_option_type_slice_tl
+\tl_const:Nn
+ \c_@@_option_type_string_tl
+ { string }
+\seq_gput_right:NV
+ \g_@@_option_types_seq
+ \c_@@_option_type_string_tl
\cs_new:Nn
\@@_get_option_type:nN
{
@@ -2270,7 +2445,7 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
\l_tmpa_tl
\tl_set:Nx
#2
- { \the \cs:w \l_tmpa_tl \cs_end: }
+ { \the \cs:w \l_tmpa_tl \cs_end: } % noqa: W200
}
{
\@@_option_tl_to_csname:nN
@@ -2296,7 +2471,6 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
}
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% To make it easier to support different coding styles in the interface,
@@ -2327,7 +2501,6 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
{ #2 }
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% To interrupt the \mref{\@\@_with_various_cases:nn} function
@@ -2381,25 +2554,27 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
%### General Behavior
%
% \end{markdown}
-% \par
% \iffalse
#### Option `eagerCache`
-`eagerCache` (default value: `false`)
+`eagerCache` (default value: `true`)
% \fi
% \begin{markdown}
%
-% \Optitem[false]{eagerCache}{\opt{true}, \opt{false}}
+% \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.
+ historical versions of the documents from the cache. Furthermore, it can
+ also significantly improve the processing speed for documents that require
+ multiple compilation runs, since each markdown document is only converted once.
+ 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.
@@ -2408,7 +2583,11 @@ interfaces and all the way up to the \LaTeX{} and \Hologo{ConTeXt} interfaces.
: 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.
+ command-line interface for plumbing. However, it makes it impossible to
+ post-process the converted documents and recover historical versions of
+ the documents from the cache. Furthermore, it can significantly reduce
+ the processing speed for documents that require multiple compilation
+ runs, since each markdown document is converted multiple times needlessly.
This behavior will only be used when the \Opt{finalizeCache} option is
disabled.
@@ -2426,13 +2605,8 @@ Hello *world*!
Next, invoke LuaTeX from the terminal with the \Opt{eagerCache} option
disabled:
``` sh
-texlua ⟨CLI pathname⟩ eagerCache=false -- hello.md hello.tex
+markdown2tex 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:
@@ -2446,7 +2620,7 @@ Invoke LuaTeX from the terminal again, this time with the \Opt{eagerCache}
option enabled:
``` tex
-texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex
+markdown2tex eagerCache=true -- hello.md hello.tex
```
A \TeX{} document named `hello.tex` should be produced and contain the
@@ -2470,18 +2644,62 @@ Hello \markdownRendererEmphasis{world}!\relax
\@@_add_lua_option:nnn
{ eagerCache }
{ boolean }
+ { true }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli,lua-loader>
+% \fi
+% \begin{macrocode}
+defaultOptions.eagerCache = true
+% \end{macrocode}
+% \iffalse
+%</lua,lua-cli,lua-loader>
+%<*manual-options>
+
+#### Option `experimental`
+
+`experimental` (default value: `false`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[false]{experimental}{\opt{true}, \opt{false}}
+%
+: true
+
+ : Experimental features that are planned to be the new default in the
+ next major release of the Markdown package will be enabled.
+
+ At the moment, this just means that the version `experimental` of the
+ theme `witiko/markdown/defaults` will be loaded and warnings for
+ hard-deprecated features will become errors. However, the effects may
+ extend to other areas in the future as well.
+
+: false
+
+ : Experimental features will be disabled.
+
+% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { experimental }
+ { boolean }
{ false }
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
-defaultOptions.eagerCache = false
+defaultOptions.experimental = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `singletonCache`
@@ -2509,12 +2727,11 @@ defaultOptions.eagerCache = 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][issue-226].
+ leaks in the creation of conversion functions, see also [#226 (comment)][226-comment].
This was the default behavior until version 3.0.0 of the Markdown package.
- [issue-226]: https://github.com/witiko/markdown/pull/226#issuecomment-1599641634
+ [226-comment]: https://github.com/witiko/markdown/pull/226#issuecomment-1599641634
% \end{markdown}
% \iffalse
@@ -2563,13 +2780,13 @@ conversion function.
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.singletonCache = true
% \end{macrocode}
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*lua>
% \fi
% \begin{macrocode}
@@ -2578,7 +2795,6 @@ local singletonCache = {
options = nil,
}
% \end{macrocode}
-% \par
% \iffalse
%</lua>
%<*manual-options>
@@ -2618,14 +2834,13 @@ local singletonCache = {
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.unicodeNormalization = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `unicodeNormalizationForm`
@@ -2674,14 +2889,13 @@ defaultOptions.unicodeNormalization = true
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.unicodeNormalizationForm = "nfc"
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
% \fi
% \begin{markdown}
@@ -2689,7 +2903,6 @@ defaultOptions.unicodeNormalizationForm = "nfc"
%### File and Directory Names
%
% \end{markdown}
-% \par
% \iffalse
#### Option `cacheDir`
@@ -2760,14 +2973,9 @@ Hello *world*!
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ cacheDir=cache -- hello.md hello.tex
+markdown2tex cacheDir=cache -- hello.md hello.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 text
“Hello *world*!” A directory named `cache` containing several cache files of
@@ -2850,14 +3058,13 @@ option.
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.cacheDir = "."
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `contentBlocksLanguageMap`
@@ -3014,14 +3221,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.contentBlocksLanguageMap = "markdown-languages.json"
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `debugExtensionsFileName`
@@ -3063,14 +3269,13 @@ defaultOptions.contentBlocksLanguageMap = "markdown-languages.json"
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.debugExtensionsFileName = "debug-extensions.json"
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `frozenCacheFileName`
@@ -3142,14 +3347,9 @@ Hello *world*!
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ finalizeCache=true frozenCacheFileName=cache.tex -- hello.md hello.tex
+markdown2tex finalizeCache=true frozenCacheFileName=cache.tex -- hello.md hello.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 text
“Hello *world*!” A frozen cache will also be produced in the `cache.tex`
@@ -3305,14 +3505,13 @@ the markdown document from “Hello *world*!” to “Hi *world*!” was not ref
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.frozenCacheFileName = "frozenCache.tex"
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
% \fi
% \begin{markdown}
@@ -3320,7 +3519,6 @@ defaultOptions.frozenCacheFileName = "frozenCache.tex"
%### Parser Options
%
% \end{markdown}
-% \par
% \iffalse
#### Option `autoIdentifiers`
@@ -3362,14 +3560,13 @@ See also the option \Opt{gfmAutoIdentifiers}.
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.autoIdentifiers = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `blankBeforeBlockquote`
@@ -3455,15 +3652,10 @@ A paragraph.
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ blankBeforeBlockquote=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex blankBeforeBlockquote=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:
@@ -3586,14 +3778,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.blankBeforeBlockquote = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `blankBeforeCodeFence`
@@ -3690,15 +3881,10 @@ A code fence?
```````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ fencedCode=true -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ fencedCode=true blankBeforeCodeFence=true -- content.md optiontrue.tex
+markdown2tex fencedCode=true -- content.md optionfalse.tex
+markdown2tex fencedCode=true blankBeforeCodeFence=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:
@@ -3843,14 +4029,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.blankBeforeCodeFence = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `blankBeforeDivFence`
@@ -3926,14 +4111,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.blankBeforeDivFence = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `blankBeforeHeading`
@@ -4025,15 +4209,10 @@ A heading?
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ blankBeforeHeading=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex blankBeforeHeading=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:
@@ -4166,14 +4345,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.blankBeforeHeading = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `blankBeforeList`
@@ -4261,15 +4439,10 @@ A paragraph.
```````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ blankBeforeList=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex 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:
@@ -4392,14 +4565,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.blankBeforeList = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `bracketedSpans`
@@ -4488,14 +4660,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.bracketedSpans = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `breakableBlockquotes`
@@ -4583,15 +4754,10 @@ following content:
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ breakableBlockquotes=false -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex
+markdown2tex breakableBlockquotes=false -- content.md optionfalse.tex
+markdown2tex -- 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:
@@ -4722,14 +4888,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.breakableBlockquotes = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `citationNbsps`
@@ -4816,14 +4981,13 @@ following text, where the middot (`·`) denotes a non-breaking space:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.citationNbsps = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `citations`
@@ -4919,14 +5083,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.citations = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `codeSpans`
@@ -5022,15 +5185,10 @@ following content:
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ codeSpans=false -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex
+markdown2tex codeSpans=false -- content.md optionfalse.tex
+markdown2tex -- 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:
@@ -5145,14 +5303,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.codeSpans = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `contentBlocks`
@@ -5319,14 +5476,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.contentBlocks = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `contentLevel`
@@ -5456,14 +5612,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.contentLevel = "block"
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `debugExtensions`
@@ -5611,14 +5766,13 @@ inserted to the grammar of markdown.
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.debugExtensions = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `definitionLists`
@@ -5750,14 +5904,58 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.definitionLists = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
+%<*manual-options>
+
+#### Option `ensureJekyllData`
+
+`ensureJekyllData` (default value: `false`)
+
+% \fi
+% \begin{markdown}
+%
+% \Optitem[false]{ensureJekyllData}{\opt{true}, \opt{false}}
+%
+: false
+
+ : When the \Opt{jekyllData} and \Opt{expectJekyllData} options are
+ enabled, then a markdown document may begin directly with \acro{yaml}
+ metadata and may contain nothing but \acro{yaml} metadata. Otherwise,
+ the markdown document is processed as markdown text.
+
+: true
+
+ : When the \Opt{jekyllData} and \Opt{expectJekyllData} options are
+ enabled, then a markdown document must begin directly with \acro{yaml}
+ metadata and must contain nothing but \acro{yaml} metadata. Otherwise,
+ an error is produced.
+
+% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*tex>
+% \fi
+% \begin{macrocode}
+\@@_add_lua_option:nnn
+ { ensureJekyllData }
+ { boolean }
+ { false }
+% \end{macrocode}
+% \iffalse
+%</tex>
+%<*lua,lua-cli,lua-loader>
+% \fi
+% \begin{macrocode}
+defaultOptions.ensureJekyllData = false
+% \end{macrocode}
+% \iffalse
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `expectJekyllData`
@@ -5874,14 +6072,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.expectJekyllData = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `extensions`
@@ -6025,14 +6222,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.extensions = {}
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `fancyLists`
@@ -6127,14 +6323,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.fancyLists = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `fencedCode`
@@ -6294,14 +6489,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.fencedCode = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `fencedCodeAttributes`
@@ -6394,14 +6588,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.fencedCodeAttributes = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `fencedDivs` {#fenced-divs}
@@ -6473,14 +6666,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.fencedDivs = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `finalizeCache`
@@ -6637,14 +6829,13 @@ the markdown document from “Hello *world*!” to “Hi *world*!” was not ref
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.finalizeCache = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `frozenCacheCounter`
@@ -6706,14 +6897,13 @@ requested using the `frozenCacheCounter` option.
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.frozenCacheCounter = 0
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `gfmAutoIdentifiers`
@@ -6755,14 +6945,13 @@ See also the option \Opt{autoIdentifiers}.
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.gfmAutoIdentifiers = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `hashEnumerators`
@@ -6886,14 +7075,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.hashEnumerators = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `headerAttributes` {#header-attributes}
@@ -6935,14 +7123,13 @@ defaultOptions.hashEnumerators = false
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.headerAttributes = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `html`
@@ -7045,15 +7232,10 @@ _Is there <? HTML instruction ?> support?_
````````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ html=false -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ -- content.md optiontrue.tex
+markdown2tex html=false -- content.md optionfalse.tex
+markdown2tex -- 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:
@@ -7207,14 +7389,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.html = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `hybrid`
@@ -7237,10 +7418,62 @@ defaultOptions.html = true
: false
: Enable the escaping of special plain \TeX{} characters outside verbatim
- environments, so that they are not interpretted by \TeX{}. This is
+ environments, so that they are not interpreted by \TeX{}. This is
encouraged when typesetting automatically generated content or
markdown documents that were not prepared with this package in mind.
+The \Opt{hybrid} option makes it difficult to untangle \TeX{} input from
+markdown text, which makes documents written with the \Opt{hybrid} option
+less interoperable and more difficult to read for authors. Therefore, the
+option has been soft-deprecated in version 3.7.1 of the Markdown package:
+It will never be removed but using it prints a warning and is discouraged.
+
+Consider one of the following better alternatives for mixing \TeX{} and
+markdown:
+
+- With the \Opt{contentBlocks} option, authors can move large blocks of TeX
+ code to separate files and include them in their markdown documents as
+ external resources:
+
+ ``` md
+ Here is a mathematical formula:
+
+ /math-formula.tex
+ ```
+
+- With the \Opt{rawAttribute} option, authors can denote raw text spans and
+ code blocks that will be interpreted as \TeX{} code:
+
+ `````` md
+ `$H_2 O$`{=tex} is a liquid.
+
+ Here is a mathematical formula:
+ ``` {=tex}
+ \[distance[i] =
+ \begin{dcases}
+ a & b \\
+ c & d
+ \end{dcases}
+ \]
+ ```
+ ``````
+
+- With options \Opt{texMathDollars}, \Opt{texMathSingleBackslash}, and
+ \Opt{texMathDoubleBackslash}, authors can freely type \TeX{} commands between
+ dollar signs or backslash-escaped brackets:
+
+ ``` md
+ $H_2 O$ is a liquid.
+
+ Here is a mathematical formula:
+ \[distance[i] =
+ \begin{dcases}
+ a & b \\
+ c & d
+ \end{dcases}
+ \]
+ ```
+
% \end{markdown}
% \iffalse
@@ -7307,15 +7540,10 @@ $\sqrt{-1}$ *equals* $i$.
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ hybrid=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex hybrid=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:
@@ -7433,14 +7661,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.hybrid = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `inlineCodeAttributes`
@@ -7529,14 +7756,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.inlineCodeAttributes = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `inlineNotes`
@@ -7630,14 +7856,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.inlineNotes = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `jekyllData`
@@ -7797,14 +8022,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.jekyllData = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `linkAttributes`
@@ -7894,14 +8118,13 @@ image (from [Martin Scharrer's mwe package][mwe]) displayed at size 5cm × 4cm.
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.linkAttributes = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `lineBlocks`
@@ -8029,14 +8252,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.lineBlocks = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `mark`
@@ -8100,14 +8322,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.mark = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `notes`
@@ -8263,14 +8484,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.notes = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `pipeTables` {#pipe-tables}
@@ -8372,14 +8592,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.pipeTables = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `preserveTabs`
@@ -8412,14 +8631,13 @@ defaultOptions.pipeTables = false
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.preserveTabs = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `rawAttribute`
@@ -8507,14 +8725,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.rawAttribute = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `relativeReferences`
@@ -8596,14 +8813,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.relativeReferences = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `shiftHeadings`
@@ -8736,14 +8952,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.shiftHeadings = 0
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `slice`
@@ -8954,14 +9169,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.slice = "^ $"
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `smartEllipses`
@@ -9045,15 +9259,10 @@ Are these just three regular dots, a victorian ellipsis, or ... ?
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ smartEllipses=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex smartEllipses=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:
@@ -9169,14 +9378,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.smartEllipses = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `startNumber`
@@ -9305,14 +9513,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.startNumber = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `strikeThrough`
@@ -9349,7 +9556,7 @@ following content:
``` tex
\input markdown
\def\markdownOptionStrikeThrough{true}
-\input soulutf8.sty
+\input soul.sty
\def\markdownRendererStrikeThrough#1{\st{#1}}
\markdownBegin
This is ~~a lunar roving vehicle~~ strike-through text.
@@ -9372,7 +9579,7 @@ following content:
``` tex
\documentclass{article}
\usepackage[strikeThrough]{markdown}
-\usepackage{soulutf8}
+\usepackage{soul}
\markdownSetup{
renderers = {
strikeThrough = {\st{#1}},
@@ -9427,14 +9634,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.strikeThrough = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `stripIndent`
@@ -9540,14 +9746,13 @@ text “Hello *world*!”
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.stripIndent = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `subscripts`
@@ -9632,14 +9837,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.subscripts = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `superscripts`
@@ -9724,14 +9928,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.superscripts = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `tableAttributes`
@@ -9849,14 +10052,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.tableAttributes = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `tableCaptions` {#table-captions}
@@ -9979,14 +10181,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.tableCaptions = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `taskLists`
@@ -10092,14 +10293,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.taskLists = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `texComments`
@@ -10208,14 +10408,13 @@ text “Hello *world*!”
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.texComments = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `texMathDollars`
@@ -10304,15 +10503,10 @@ $$\hat{f} \left ( \xi \right )= \int_{-\infty}^{\infty} f\left ( x \right ) e^
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ texMathDollars=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex texMathDollars=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:
@@ -10419,14 +10613,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.texMathDollars = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `texMathDoubleBackslash`
@@ -10515,15 +10708,10 @@ following content:
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ texMathDoubleBackslash=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex texMathDoubleBackslash=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:
@@ -10630,14 +10818,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.texMathDoubleBackslash = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `texMathSingleBackslash`
@@ -10726,15 +10913,10 @@ following content:
``````
Next, invoke LuaTeX from the terminal:
``` sh
-texlua ⟨CLI pathname⟩ -- content.md optionfalse.tex
-texlua ⟨CLI pathname⟩ texMathSingleBackslash=true -- content.md optiontrue.tex
+markdown2tex -- content.md optionfalse.tex
+markdown2tex texMathSingleBackslash=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:
@@ -10841,14 +11023,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.texMathSingleBackslash = false
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `tightLists`
@@ -10962,14 +11143,13 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.tightLists = true
% \end{macrocode}
-% \par
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*manual-options>
#### Option `underscores`
@@ -11105,17 +11285,16 @@ following text:
% \end{macrocode}
% \iffalse
%</tex>
-%<*lua,lua-cli>
+%<*lua,lua-cli,lua-loader>
% \fi
% \begin{macrocode}
defaultOptions.underscores = true
% \end{macrocode}
% \endgroup
% \iffalse
-%</lua,lua-cli>
+%</lua,lua-cli,lua-loader>
%<*lua-cli>
% \fi
-% \par
% \begin{markdown}
%
%### Command-Line Interface {#lua-cli-interface}
@@ -11190,7 +11369,7 @@ Report bugs to: witiko@mail.muni.cz
Markdown package home page: <https://github.com/witiko/markdown>]]
local VERSION_STRING = [[
-markdown-cli.lua (Markdown) ]] .. metadata.version .. [[
+markdown-cli (Markdown) ]] .. metadata.version .. [[
Copyright (C) ]] .. table.concat(metadata.copyright,
"\nCopyright (C) ") .. [[
@@ -11198,7 +11377,8 @@ Copyright (C) ]] .. table.concat(metadata.copyright,
License: ]] .. metadata.license
local function warn(s)
- io.stderr:write("Warning: " .. s .. "\n") end
+ io.stderr:write("Warning: " .. s .. "\n")
+end
local function error(s)
io.stderr:write("Error: " .. s .. "\n")
@@ -11289,8 +11469,8 @@ for i = 1, #arg do
if default_type == "nil" then
warn('Option "' .. key .. '" not recognized.')
else
- warn('Option "' .. key .. '" type not recognized, please file ' ..
- 'a report to the package maintainer.')
+ warn('Option "' .. key .. '" type not recognized, ' ..
+ 'please file a report to the package maintainer.')
end
warn('Parsing the ' .. 'value "' .. value ..'" of option "' ..
key .. '" as a string.')
@@ -11322,7 +11502,7 @@ for i = 1, #arg do
end
% \end{macrocode}
% \begin{markdown}
-% The first argument that matches none of the above patters is assumed to be
+% The first argument that matches none of the above patterns is assumed to be
% the input filename. The input filename should correspond to the Markdown
% document that is going to be converted to a \TeX{} document.
% \end{markdown}
@@ -11331,7 +11511,7 @@ for i = 1, #arg do
input_filename = arg[i]
% \end{macrocode}
% \begin{markdown}
-% The first argument that matches none of the above patters is assumed to be
+% The first argument that matches none of the above patterns is assumed to be
% the output filename. The output filename should correspond to the \TeX{}
% document that will result from the conversion.
% \end{markdown}
@@ -11344,7 +11524,6 @@ for i = 1, #arg do
::continue::
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The command-line Lua interface is implemented by the `markdown-cli.lua`
@@ -11364,7 +11543,6 @@ end
%</lua-cli>
%<*tex>
% \fi
-% \par
% \begin{markdown}
%
% Plain \TeX{} Interface {#texinterface}
@@ -11437,7 +11615,6 @@ pdftex --shell-escape document.tex
\def\markdownLastModified{(((LASTMODIFIED)))}%
\def\markdownVersion{(((VERSION)))}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The plain \TeX{} interface is implemented by the `markdown.tex` file that can
@@ -11448,10 +11625,13 @@ pdftex --shell-escape document.tex
% \noindent It is expected that the special plain \TeX{} characters have the
% expected category codes, when `\input`ting the file.
%
-%### Typesetting Markdown {#tex-typesetting}
+%### Typesetting Markdown and YAML {#tex-typesetting}
%
% The interface exposes the \mdef{markdownBegin}, \mdef{markdownEnd},
-% \mdef{markinline}, \mdef{markdownInput}, and \mdef{markdownEscape} macros.
+% \mdef{yamlBegin}, \mref{yamlEnd}, \mdef{markinline}, \mdef{markdownInput},
+% \mdef{yamlInput}, and \mdef{markdownEscape} macros.
+%
+%#### Typesetting Markdown and YAML directly
%
% The \mref{markdownBegin} macro marks the beginning of a markdown document
% fragment and the \mref{markdownEnd} macro marks its end.
@@ -11461,7 +11641,6 @@ pdftex --shell-escape document.tex
\let\markdownBegin\relax
\let\markdownEnd\relax
% \end{macrocode}
-% \par
% \begin{markdown}
%
% You may prepend your own code to the \mref{markdownBegin} macro and redefine the
@@ -11509,13 +11688,49 @@ pdftex --shell-escape document.tex
% \bye
% ```````
%
+% The \mref{yamlBegin} macro marks the beginning of an \acro{YAML} document
+% fragment and the \mref{yamlEnd} macro marks its end.
+%
+% \end{markdown}
+% \begin{macrocode}
+\let\yamlBegin\relax
+\def\yamlEnd{\markdownEnd\endgroup}
+% \end{macrocode}
+% \begin{markdown}
+%
+% The \mref{yamlBegin} and \mref{yamlEnd} macros are subject to the same
+% limitations as the \mref{markdownBegin} and \mref{markdownEnd} macros.
+%
+% The following example plain \TeX{} code showcases the usage of the
+% \mref{markdownBegin} and \mref{markdownEnd} macros:
+%
+% ``` tex
+% \input markdown
+% \yamlBegin
+% title: _Hello_ **world** ...
+% author: John Doe
+% \yamlEnd
+% \bye
+% ```````
+%
+% The above code has the same effect as the below code:
+%
+% ``` tex
+% \input markdown
+% \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}
+% \markdownBegin
+% title: _Hello_ **world** ...
+% author: John Doe
+% \markdownEnd
+% \bye
+% ```````
+%
% You can use the \mref{markinline} macro to input inline markdown content.
%
% \end{markdown}
% \begin{macrocode}
\let\markinline\relax
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The following example plain \TeX{} code showcases the usage of the
@@ -11541,6 +11756,8 @@ pdftex --shell-escape document.tex
% The \mref{markinline} macro is subject to the same limitations as the
% \mref{markdownBegin} and \mref{markdownEnd} macros.
%
+%#### Typesetting Markdown and YAML from external documents
+%
% 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
@@ -11551,10 +11768,9 @@ pdftex --shell-escape document.tex
% \begin{macrocode}
\let\markdownInput\relax
% \end{macrocode}
-% \par
% \begin{markdown}
%
-% This macro is not subject to the limitations of the
+% The macro \mref{markdownInput} is not subject to the limitations of the
% \mref{markdownBegin} and \mref{markdownEnd} macros.
%
% The following example plain \TeX{} code showcases the usage of the
@@ -11566,6 +11782,46 @@ pdftex --shell-escape document.tex
% \bye
% ```````
%
+% You can use the \mref{yamlInput} macro to include \acro{YAML} documents.
+% similarly to how you might use the \mref{input} \TeX{} primitive to include
+% \TeX{} documents. The \mref{yamlInput} macro accepts a single parameter with
+% the filename of a \acro{YAML} document and expands to the result of the
+% conversion of the input \acro{YAML} document to plain \TeX{}.
+%
+% \end{markdown}
+% \begin{macrocode}
+\def\yamlInput#1{%
+ \begingroup
+ \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}%
+ \markdownInput{#1}%
+ \endgroup
+}%
+% \end{macrocode}
+% \begin{markdown}
+%
+% The macro \mref{yamlInput} is also not subject to the limitations of the
+% \mref{markdownBegin} and \mref{markdownEnd} macros.
+%
+% The following example plain \TeX{} code showcases the usage of the
+% \mref{markdownInput} macro:
+%
+% ``` tex
+% \input markdown
+% \yamlInput{hello.yml}
+% \bye
+% ```````
+%
+% The above code has the same effect as the below code:
+%
+% ``` tex
+% \input markdown
+% \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}
+% \markdownInput{hello.yml}
+% \bye
+% ```````
+%
+%#### Typesetting TeX from inside Markdown and YAML documents
+%
% The \mref{markdownEscape} macro accepts a single parameter with the filename
% of a \TeX{} document and executes the \TeX{} document in the middle of a
% markdown document fragment. Unlike the `\input` built-in of \TeX,
@@ -11576,7 +11832,6 @@ pdftex --shell-escape document.tex
% \begin{macrocode}
\let\markdownEscape\relax
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Options {#tex-options}
@@ -11625,7 +11880,9 @@ 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
-\seq_gput_right:NV \g_@@_option_layers_seq \c_@@_option_layer_plain_tex_tl
+\seq_gput_right:NV
+ \g_@@_option_layers_seq
+ \c_@@_option_layer_plain_tex_tl
\cs_new:Nn
\@@_add_plain_tex_option:nnn
{
@@ -11660,7 +11917,6 @@ following code in your plain \TeX{} document:
%</manual-options>
%<*tex>
% \fi
-% \par
% \begin{markdown}
%
% The plain \TeX{} options may be also be specified via the \mdef{markdownSetup}
@@ -11684,6 +11940,18 @@ following code in your plain \TeX{} document:
\markdownSetup
\@@_setup:n
% \end{macrocode}
+% \begin{markdown}
+%
+% The command \mdef{yamlSetup} is also available as an alias for the command
+% \mref{markdownSetup}.
+%
+% \end{markdown}
+% \begin{macrocode}
+\cs_gset_eq:NN
+ \yamlSetup
+ \markdownSetup
+% \end{macrocode}
+%
% \iffalse
%</tex>
%<*manual-options>
@@ -11699,7 +11967,6 @@ you would include the following code in your plain \TeX{} document:
%</manual-options>
%<*tex>
% \fi
-% \par
% \begin{markdown}
%
% The
@@ -11743,7 +12010,9 @@ you would include the following code in your plain \TeX{} document:
Option~#1~has~type~#2,~
but~a~boolean~was~expected.
}
-\let\markdownIfOption=\@@_if_option:nTF
+\let
+ \markdownIfOption
+ \@@_if_option:nTF
% \end{macrocode}
% \begin{markdown}
%
@@ -11834,7 +12103,6 @@ For more information, see the examples for the \Opt{finalizeCache} option.
{ path }
{ \jobname.markdown.in }
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \mdef{markdownOptionOutputDir} macro sets the path to the directory that
@@ -11850,53 +12118,14 @@ For more information, see the examples for the \Opt{finalizeCache} option.
% \Opt{inputTempFileName} macro.
%
% 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. -->
+% removed in the next major version of the Markdown package.
%
% \end{markdown}
% \begin{macrocode}
-\cs_generate_variant:Nn
- \@@_add_plain_tex_option:nnn
- { nnV }
-% \end{macrocode}
-% \begin{markdown}
-%
-% 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}
-\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
+\@@_add_plain_tex_option:nnn
{ outputDir }
{ path }
- \l_tmpa_tl
+ { . }
% \end{macrocode}
% \iffalse
%</tex>
@@ -12114,16 +12343,16 @@ A PDF document named `document.pdf` should be produced and contain the text
%#### Generating Plain \TeX{} Option Macros and Key-Values
%
% We define the command \mdef{@@_define_option_commands_and_keyvals:} that
-% defines plain \TeX{} macros and the key-value interface
+% defines plain \TeX{} macros and the key--value interface
% of the \mref{markdownSetup} macro for the above plain \TeX{} options.
%
-% The command also defines macros and key-values that map
+% 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.
%
-% Furthermore, the command also defines options and key-values
+% 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}.
%
@@ -12172,22 +12401,95 @@ A PDF document named `document.pdf` should be produced and contain the text
% \end{macrocode}
% \begin{markdown}
%
-% Do not override options defined before loading the package.
+% 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}
- \@@_option_tl_to_csname:nN
+ \str_if_eq:nnTF
{ #1 }
- \l_tmpa_tl
- \cs_if_exist:cF
- { \l_tmpa_tl }
+ { outputDir }
+ { \@@_define_option_command_output_dir: }
{
- \@@_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
+ }
+ }
+ }
+\ExplSyntaxOff
+\input lt3luabridge.tex
+% \end{macrocode}
+% \begin{markdown}
+%
+% 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}
+\ExplSyntaxOn
+\cs_new:Nn
+ \@@_define_option_command_output_dir:
+ {
+ \cs_if_free:NT
+ \markdownOptionOutputDir
+ {
+ \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:
+ )
+ }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% Set most catcodes to category 12 (other) to ensure that special characters in
+% `TEXMF_OUTPUT_DIRECTORY` such as backslashes (`\`) are not interpreted as
+% control sequences.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \group_begin:
+ \cctab_select:N
+ \c_str_cctab
+ \luabridge_tl_set:Nn
+ \l_tmpa_tl
+ { print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") }
+ \tl_gset:NV
+ \markdownOptionOutputDir
+ \l_tmpa_tl
+ \group_end:
+ }
+ {
+ \tl_gset:Nn
+ \markdownOptionOutputDir
+ { . }
+ }
}
}
\cs_new:Nn
@@ -12347,7 +12649,7 @@ A PDF document named `document.pdf` should be produced and contain the text
\l_tmpa_tl
\clist_set:NV
\l_tmpa_clist
- { \l_tmpa_tl, { ##1 } }
+ { \l_tmpa_tl , { ##1 } }
\@@_set_option_value:nV
{ #2 }
\l_tmpa_clist
@@ -12370,7 +12672,7 @@ A PDF document named `document.pdf` should be produced and contain the text
\prg_generate_conditional_variant:Nnn
\str_if_eq:nn
{ en }
- { F }
+ { p, F }
\msg_new:nnn
{ markdown }
{ malformed-name-for-clist-option }
@@ -12382,7 +12684,7 @@ A PDF document named `document.pdf` should be produced and contain the text
%
% 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
+% option macros and key--values immediately. Otherwise, we
% postpone the definition until the upper layers have been loaded.
%
% \end{markdown}
@@ -12401,34 +12703,43 @@ A PDF document named `document.pdf` should be produced and contain the text
% \fi
% \begin{markdown}
-### Themes {#themes}
+%### Themes {#themes}
+% \iffalse
+#### Themes {#themes}
+% \fi
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 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`.
+% The key--values `theme`=\meta{theme name} and `import`=\meta{theme name},
+% optionally followed by `@`\meta{theme version}, 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 must be *qualified* and contain no underscores or at signs
+% (`@`). Themes are inspired by the Beamer \LaTeX{} package, which provides
+% similar functionality with its `\usetheme` macro [@tantau21, Section 15.1].
+%
+% A theme name is qualified if and only if it contains at least one forward
+% slash. 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`.
%
+% If `@`\meta{theme version} is specified after \meta{theme name}, then the
+% text *theme version* will be available in the macro
+% \mdef{markdownThemeVersion} when the theme is loaded. If `@`\meta{theme
+% version} is not specified, the macro \mref{markdownThemeVersion} will
+% contain the text `latest` [@novotny24].
+%
% \end{markdown}
% \iffalse
%</manual-options>
@@ -12471,21 +12782,31 @@ a specific look and other high-level goals without low-level programming.
% \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.
+% maintain the stacks \mdef{g_\@\@_theme_names_seq} and
+% \mdef{g_\@\@_theme_versions_seq} stack of theme names and versions,
+% respectively. For convenience, the name of the current theme and version is
+% also available in the macros \mdef{g_@@_current_theme_tl} and
+% \mref{markdownThemeVersion}, respectively.
%
% \end{markdown}
% \begin{macrocode}
\seq_new:N
- \g_@@_themes_seq
+ \g_@@_theme_names_seq
+\seq_new:N
+ \g_@@_theme_versions_seq
\tl_new:N
\g_@@_current_theme_tl
\tl_gset:Nn
\g_@@_current_theme_tl
{ }
\seq_gput_right:NV
- \g_@@_themes_seq
+ \g_@@_theme_names_seq
+ \g_@@_current_theme_tl
+\cs_new:Npn
+ \markdownThemeVersion
+ { }
+\seq_gput_right:NV
+ \g_@@_theme_versions_seq
\g_@@_current_theme_tl
\cs_new:Nn
\@@_set_theme:n
@@ -12518,13 +12839,55 @@ a specific look and other high-level goals without low-level programming.
% \end{macrocode}
% \begin{markdown}
%
+% Next, we extract the theme version.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \str_if_in:nnTF
+ { #1 }
+ { @ }
+ {
+ \regex_extract_once:nnN
+ { (.*) @ (.*) }
+ { #1 }
+ \l_tmpa_seq
+ \seq_gpop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \seq_gpop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \tl_gset:NV
+ \g_@@_current_theme_tl
+ \l_tmpa_tl
+ \seq_gpop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \cs_gset:Npe
+ \markdownThemeVersion
+ {
+ \tl_use:N
+ \l_tmpa_tl
+ }
+ }
+ {
+ \tl_gset:Nn
+ \g_@@_current_theme_tl
+ { #1 }
+ \cs_gset:Npn
+ \markdownThemeVersion
+ { latest }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
% Next, we munge the theme name.
%
% \end{markdown}
% \begin{macrocode}
- \str_set:Nn
+ \str_set:NV
\l_tmpa_str
- { #1 }
+ \g_@@_current_theme_tl
\str_replace_all:Nnn
\l_tmpa_str
{ / }
@@ -12532,28 +12895,56 @@ a specific look and other high-level goals without low-level programming.
% \end{macrocode}
% \begin{markdown}
%
-% Finally, we load the theme.
+% Finally, we load the theme. Before loading the theme, we push down the
+% current name and version of the theme on the stack.
%
% \end{markdown}
% \begin{macrocode}
- \tl_gset:Nn
+ \tl_set:NV
+ \l_tmpa_tl
+ \g_@@_current_theme_tl
+ \tl_put_right:Nn
\g_@@_current_theme_tl
- { #1 / }
+ { / }
\seq_gput_right:NV
- \g_@@_themes_seq
+ \g_@@_theme_names_seq
\g_@@_current_theme_tl
- \@@_load_theme:nV
- { #1 }
+ \seq_gput_right:NV
+ \g_@@_theme_versions_seq
+ \markdownThemeVersion
+ \@@_load_theme:VeV
+ \l_tmpa_tl
+ { \markdownThemeVersion }
\l_tmpa_str
+% \end{macrocode}
+% \begin{markdown}
+%
+% After the theme has been loaded, we recover the name and version of the
+% previous theme from the stack.
+%
+% \end{markdown}
+% \begin{macrocode}
\seq_gpop_right:NN
- \g_@@_themes_seq
+ \g_@@_theme_names_seq
\l_tmpa_tl
\seq_get_right:NN
- \g_@@_themes_seq
+ \g_@@_theme_names_seq
\l_tmpa_tl
\tl_gset:NV
\g_@@_current_theme_tl
\l_tmpa_tl
+ \seq_gpop_right:NN
+ \g_@@_theme_versions_seq
+ \l_tmpa_tl
+ \seq_get_right:NN
+ \g_@@_theme_versions_seq
+ \l_tmpa_tl
+ \cs_gset:Npe
+ \markdownThemeVersion
+ {
+ \tl_use:N
+ \l_tmpa_tl
+ }
}
\msg_new:nnnn
{ markdown }
@@ -12568,17 +12959,324 @@ a specific look and other high-level goals without low-level programming.
\cs_generate_variant:Nn
\tl_replace_all:Nnn
{ NnV }
-\ExplSyntaxOff
+\cs_generate_variant:Nn
+ \cs_gset:Npn
+ { Npe }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We also define the prop \mdef{g_@@_plain_tex_built_in_themes_prop} that
+% contains the code of built-in themes. This is a packaging optimization,
+% so that built-in themes does not need to be distributed in many small files.
+%
+% \end{markdown}
+% \begin{macrocode}
+\prop_new:N
+ \g_@@_plain_tex_built_in_themes_prop
% \end{macrocode}
% \iffalse
%</tex>
%<*manual-options>
% \fi
-% \par
-% \begin{markdown}
+% \markdownBegin
Built-in plain \TeX{} themes provided with the Markdown package include:
+\pkg{witiko/diagrams}
+
+: A theme that typesets fenced code blocks with the infostrings
+ `dot`, `mermaid`, and `plantuml` as figures with diagrams produced with
+ the command `dot` from Graphviz tools, the command `mmdc` from the npm
+ package `@mermaid-js/mermaid-cli`, and the command `plantuml` from the
+ package PlantUML, respectively. The key-value attribute `caption` can be
+ used to specify the caption of the figure. The remaining attributes are
+ treated as image attributes.
+
+% ```` tex
+% \documentclass{article}
+% \usepackage[import=witiko/diagrams@v2, relativeReferences]{markdown}
+% \begin{document}
+% \begin{markdown}
+% ``` dot {caption="An example directed graph" width=12cm #dot}
+% digraph tree {
+% margin = 0;
+% rankdir = "LR";
+%
+% latex -> pmml;
+% latex -> cmml;
+% pmml -> slt;
+% cmml -> opt;
+% cmml -> prefix;
+% cmml -> infix;
+% pmml -> mterms [style=dashed];
+% cmml -> mterms;
+%
+% latex [label = "LaTeX"];
+% pmml [label = "Presentation MathML"];
+% cmml [label = "Content MathML"];
+% slt [label = "Symbol Layout Tree"];
+% opt [label = "Operator Tree"];
+% prefix [label = "Prefix"];
+% infix [label = "Infix"];
+% mterms [label = "M-Terms"];
+% }
+% ```
+%
+% ``` mermaid {caption="An example mindmap" width=9cm #mermaid}
+% mindmap
+% root )base-idea(
+% sub<br/>idea 1
+% ((?))
+% sub<br/>idea 2
+% ((?))
+% sub<br/>idea 3
+% ((?))
+% sub<br/>idea 4
+% ((?))
+% ```
+%
+% ``` plantuml {caption="An example UML sequence diagram" width=7cm #plantuml}
+% @startuml
+% ' Define participants (actors)
+% participant "Client" as C
+% participant "Server" as S
+% participant "Database" as DB
+%
+% ' Diagram title
+% title Simple Request-Response Flow
+%
+% ' Messages
+% C -> S: Send Request
+% note over S: Process request
+%
+% alt Request is valid
+% S -> DB: Query Data
+% DB -> S: Return Data
+% S -> C: Respond with Data
+% else Request is invalid
+% S -> C: Return Error
+% end
+% @enduml
+% ```
+%
+% See the diagrams in figures <#dot>, <#mermaid>, and <#plantuml>.
+% \end{markdown}
+% \end{document}
+% ````````
+%
+% Typesetting the above document produces the output shown in
+% figures <#fig:witiko-diagrams-dot>, <#fig:witiko-diagrams-mermaid>, and
+% <#fig:witiko-diagrams-plantuml>.
+%
+% ``` dot {caption="An example directed graph" #fig:witiko-diagrams-dot}
+% digraph tree {
+% margin = 0;
+% rankdir = "LR";
+%
+% latex -> pmml;
+% latex -> cmml;
+% pmml -> slt;
+% cmml -> opt;
+% cmml -> prefix;
+% cmml -> infix;
+% pmml -> mterms [style=dashed];
+% cmml -> mterms;
+%
+% latex [label = "LaTeX"];
+% pmml [label = "Presentation MathML"];
+% cmml [label = "Content MathML"];
+% slt [label = "Symbol Layout Tree"];
+% opt [label = "Operator Tree"];
+% prefix [label = "Prefix"];
+% infix [label = "Infix"];
+% mterms [label = "M-Terms"];
+% }
+% ```
+%
+% ``` mermaid {caption="An example mindmap" #fig:witiko-diagrams-mermaid}
+% mindmap
+% root )base-idea(
+% sub<br/>idea 1
+% ((?))
+% sub<br/>idea 2
+% ((?))
+% sub<br/>idea 3
+% ((?))
+% sub<br/>idea 4
+% ((?))
+% ```
+%
+% ``` plantuml {caption="An example UML sequence diagram" #fig:witiko-diagrams-plantuml}
+% @startuml
+% ' Define participants (actors)
+% participant "Client" as C
+% participant "Server" as S
+% participant "Database" as DB
+%
+% ' Diagram title
+% title Simple Request-Response Flow
+%
+% ' Messages
+% C -> S: Send Request
+% note over S: Process request
+%
+% alt Request is valid
+% S -> DB: Query Data
+% DB -> S: Return Data
+% S -> C: Respond with Data
+% else Request is invalid
+% S -> C: Return Error
+% end
+% @enduml
+% ```
+
+ The theme requires a Unix-like operating system with GNU Diffutils,
+ Graphviz, the npm package `@mermaid-js/mermaid-cli`, and PlantUML
+ installed. All these packages are already included in the Docker image
+ `witiko/markdown`; consult `Dockerfile` to see how they are installed.
+ The theme also requires shell access unless the \Opt{frozenCache} plain
+ \TeX{} option is enabled.
+
+% \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/diagrams@v2, relativeReferences]{markdown}
+\begin{document}
+\begin{markdown}
+``` dot {caption="An example directed graph" width=12cm #dot}
+digraph tree {
+ margin = 0;
+ rankdir = "LR";
+
+ latex -> pmml;
+ latex -> cmml;
+ pmml -> slt;
+ cmml -> opt;
+ cmml -> prefix;
+ cmml -> infix;
+ pmml -> mterms [style=dashed];
+ cmml -> mterms;
+
+ latex [label = "LaTeX"];
+ pmml [label = "Presentation MathML"];
+ cmml [label = "Content MathML"];
+ slt [label = "Symbol Layout Tree"];
+ opt [label = "Operator Tree"];
+ prefix [label = "Prefix"];
+ infix [label = "Infix"];
+ mterms [label = "M-Terms"];
+}
+```
+
+``` mermaid {caption="An example mindmap" width=9cm #mermaid}
+mindmap
+ root )base-idea(
+ sub<br/>idea 1
+ ((?))
+ sub<br/>idea 2
+ ((?))
+ sub<br/>idea 3
+ ((?))
+ sub<br/>idea 4
+ ((?))
+```
+
+``` plantuml {caption="An example UML sequence diagram" width=7cm #plantuml}
+@startuml
+' Define participants (actors)
+participant "Client" as C
+participant "Server" as S
+participant "Database" as DB
+
+' Diagram title
+title Simple Request-Response Flow
+
+' Messages
+C -> S: Send Request
+note over S: Process request
+
+alt Request is valid
+ S -> DB: Query Data
+ DB -> S: Return Data
+ S -> C: Respond with Data
+else Request is invalid
+ S -> C: Return Error
+end
+@enduml
+```
+
+See the diagrams in figures <#dot>, <#mermaid>, and <#plantuml>.
+\end{markdown}
+\end{document}
+````````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex --shell-escape document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain
+three diagrams.
+
+% \fi
+% \markdownBegin
+
+\pkg{witiko/graphicx/http}
+
+: A theme that adds support for downloading images whose URL has the
+ http or https protocol.
+% ``` tex
+% \documentclass{article}
+% \usepackage[import=witiko/graphicx/http]{markdown}
+% \begin{document}
+% \begin{markdown}
+% ![img](https://github.com/witiko/markdown/raw/main/markdown.png
+% "The banner of the Markdown package")
+% \end{markdown}
+% \end{document}
+% ```````
+% Typesetting the above document produces the output shown in
+% Figure <#fig:witiko-graphicx-http>.
+% ![img](https://github.com/witiko/markdown/raw/main/markdown.png
+% "The banner of the Markdown package"){#fig:witiko-graphicx-http}
+ The theme requires the \pkg{catchfile} \LaTeX{} package and a Unix-like
+ operating system with GNU Coreutils `md5sum` and either GNU Wget or cURL
+ installed. The theme also requires shell access unless the
+ \Opt{frozenCache} plain \TeX{} option is enabled.
+
+% \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/graphicx/http, link_attributes]{markdown}
+\begin{document}
+\begin{markdown}
+![img](https://github.com/witiko/markdown/raw/main/markdown.png
+ "The banner of the Markdown package"){width=5in}
+\end{markdown}
+\end{document}
+```````
+Next, invoke LuaTeX from the terminal:
+``` sh
+lualatex --shell-escape document.tex
+``````
+A PDF document named `document.pdf` should be produced and contain the
+following image:
+
+> ![Figure 1: The banner of the Markdown package](https://github.com/witiko/markdown/raw/main/markdown.png)
+
+% \fi
+% \begin{markdown}
+
\pkg{witiko/tilde}
: A theme that makes tilde (`~`) always typeset the non-breaking space even
@@ -12619,7 +13317,6 @@ following text, where the middot (`·`) denotes a non-breaking space:
> Bartel·Leendert van·der·Waerden
% \fi
-% \par
% \begin{markdown}
\pkg{witiko/markdown/defaults}
@@ -12630,8 +13327,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
% Please, see Section <#sec:themes-implementation> for implementation
% details of the built-in plain \TeX{} themes.
-
-### Snippets {#snippets}
+%
+%### Snippets {#snippets}
+% \iffalse
+#### Snippets {#snippets}
+% \fi
% \end{markdown}
% \iffalse
@@ -12644,7 +13344,6 @@ options locally.
%</manual-options>
%<*tex>
% \fi
-% \par
% \begin{markdown}
%
% We may set up options as *snippets* using the
@@ -12654,7 +13353,6 @@ options locally.
%
% \end{markdown}
% \begin{macrocode}
-\ExplSyntaxOn
\prop_new:N
\g_@@_snippets_prop
\cs_new:Nn
@@ -12682,10 +13380,14 @@ options locally.
{ redefined-snippet }
\l_tmpa_tl
}
- \prop_gput:NVn
+ \keys_precompile:nnN
+ { markdown/options }
+ { #2 }
+ \l_tmpb_tl
+ \prop_gput:NVV
\g_@@_snippets_prop
\l_tmpa_tl
- { #2 }
+ \l_tmpb_tl
}
\cs_gset_eq:NN
\markdownSetupSnippet
@@ -12707,20 +13409,21 @@ options locally.
%
% \end{markdown}
% \begin{macrocode}
+\tl_new:N
+ \l_@@_current_snippet_tl
\prg_new_conditional:Nnn
\@@_if_snippet_exists:n
{ TF, T, F }
{
\tl_set:NV
- \l_tmpa_tl
+ \l_@@_current_snippet_tl
\g_@@_current_theme_tl
\tl_put_right:Nn
- \l_tmpa_tl
+ \l_@@_current_snippet_tl
{ #1 }
- \prop_get:NVNTF
+ \prop_if_in:NVTF
\g_@@_snippets_prop
- \l_tmpa_tl
- \l_tmpb_tl
+ \l_@@_current_snippet_tl
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -12751,7 +13454,7 @@ options locally.
\g_@@_snippets_prop
\l_tmpa_tl
\l_tmpb_tl
- \@@_setup:V
+ \tl_use:N
\l_tmpb_tl
}
{
@@ -12766,16 +13469,12 @@ options locally.
{ 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
@@ -13032,7 +13731,6 @@ In this section, I will describe the individual token renderers.
%
% \end{markdown}
% \begin{macrocode}
-\ExplSyntaxOn
\seq_new:N \g_@@_renderers_seq
% \end{macrocode}
% \begin{markdown}
@@ -13045,7 +13743,6 @@ In this section, I will describe the individual token renderers.
\prop_new:N \g_@@_renderer_arities_prop
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13146,9 +13843,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererAttributeIdentifier{%
- \markdownRendererAttributeIdentifierPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAttributeIdentifier
+ {
+ \markdownRendererAttributeIdentifierPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ attributeIdentifier }
@@ -13156,10 +13856,11 @@ following text:
\g_@@_renderer_arities_prop
{ attributeIdentifier }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererAttributeClassName{%
- \markdownRendererAttributeClassNamePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAttributeClassName
+ {
+ \markdownRendererAttributeClassNamePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ attributeClassName }
@@ -13167,10 +13868,11 @@ following text:
\g_@@_renderer_arities_prop
{ attributeClassName }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererAttributeKeyValue{%
- \markdownRendererAttributeKeyValuePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAttributeKeyValue
+ {
+ \markdownRendererAttributeKeyValuePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ attributeKeyValue }
@@ -13180,7 +13882,6 @@ following text:
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13201,9 +13902,12 @@ a block quote. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererBlockQuoteBegin{%
- \markdownRendererBlockQuoteBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBlockQuoteBegin
+ {
+ \markdownRendererBlockQuoteBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ blockQuoteBegin }
@@ -13213,7 +13917,6 @@ a block quote. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13346,9 +14049,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererBlockQuoteEnd{%
- \markdownRendererBlockQuoteEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBlockQuoteEnd
+ {
+ \markdownRendererBlockQuoteEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ blockQuoteEnd }
@@ -13358,7 +14064,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13415,9 +14120,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererBracketedSpanAttributeContextBegin{%
- \markdownRendererBracketedSpanAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBracketedSpanAttributeContextBegin
+ {
+ \markdownRendererBracketedSpanAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ bracketedSpanAttributeContextBegin }
@@ -13425,10 +14133,11 @@ following text:
\g_@@_renderer_arities_prop
{ bracketedSpanAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererBracketedSpanAttributeContextEnd{%
- \markdownRendererBracketedSpanAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBracketedSpanAttributeContextEnd
+ {
+ \markdownRendererBracketedSpanAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ bracketedSpanAttributeContextEnd }
@@ -13438,7 +14147,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13460,9 +14168,12 @@ list is not tight). The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererUlBegin{%
- \markdownRendererUlBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlBegin
+ {
+ \markdownRendererUlBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ulBegin }
@@ -13472,7 +14183,6 @@ list is not tight). The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13494,9 +14204,12 @@ is disabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererUlBeginTight{%
- \markdownRendererUlBeginTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlBeginTight
+ {
+ \markdownRendererUlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ulBeginTight }
@@ -13506,7 +14219,6 @@ is disabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13526,9 +14238,12 @@ list. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererUlItem{%
- \markdownRendererUlItemPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlItem
+ {
+ \markdownRendererUlItemPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ulItem }
@@ -13538,7 +14253,6 @@ list. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13558,9 +14272,12 @@ bulleted list. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererUlItemEnd{%
- \markdownRendererUlItemEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlItemEnd
+ {
+ \markdownRendererUlItemEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ulItemEnd }
@@ -13570,7 +14287,6 @@ bulleted list. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13591,9 +14307,12 @@ tight). The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererUlEnd{%
- \markdownRendererUlEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlEnd
+ {
+ \markdownRendererUlEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ulEnd }
@@ -13603,7 +14322,6 @@ tight). The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13827,9 +14545,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererUlEndTight{%
- \markdownRendererUlEndTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlEndTight
+ {
+ \markdownRendererUlEndTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ulEndTight }
@@ -13839,7 +14560,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -13924,9 +14644,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererCite{%
- \markdownRendererCitePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCite
+ {
+ \markdownRendererCitePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ cite }
@@ -13936,7 +14659,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14015,9 +14737,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererTextCite{%
- \markdownRendererTextCitePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTextCite
+ {
+ \markdownRendererTextCitePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ textCite }
@@ -14027,7 +14752,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14039,7 +14763,7 @@ following text:
#### Code Block Renderers
The \mdef{markdownRendererInputVerbatim} macro represents a code
block. The macro receives a single argument that corresponds to the
-filename of a file contaning the code block contents.
+filename of a file containing the code block contents.
% \end{markdown}
%
@@ -14049,9 +14773,12 @@ filename of a file contaning the code block contents.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInputVerbatim{%
- \markdownRendererInputVerbatimPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputVerbatim
+ {
+ \markdownRendererInputVerbatimPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inputVerbatim }
@@ -14061,7 +14788,6 @@ filename of a file contaning the code block contents.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14073,7 +14799,7 @@ 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 three arguments that correspond to the filename of
-a file contaning the code block contents, the fully escaped code fence infostring
+a file containing 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.
@@ -14167,9 +14893,12 @@ following text except for the filename, which may differ:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInputFencedCode{%
- \markdownRendererInputFencedCodePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputFencedCode
+ {
+ \markdownRendererInputFencedCodePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inputFencedCode }
@@ -14179,7 +14908,6 @@ following text except for the filename, which may differ:
{ 3 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14317,9 +15045,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererCodeSpan{%
- \markdownRendererCodeSpanPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCodeSpan
+ {
+ \markdownRendererCodeSpanPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ codeSpan }
@@ -14329,7 +15060,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14387,9 +15117,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererCodeSpanAttributeContextBegin{%
- \markdownRendererCodeSpanAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCodeSpanAttributeContextBegin
+ {
+ \markdownRendererCodeSpanAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ codeSpanAttributeContextBegin }
@@ -14397,10 +15130,11 @@ following text:
\g_@@_renderer_arities_prop
{ codeSpanAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererCodeSpanAttributeContextEnd{%
- \markdownRendererCodeSpanAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCodeSpanAttributeContextEnd
+ {
+ \markdownRendererCodeSpanAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ codeSpanAttributeContextEnd }
@@ -14410,7 +15144,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14435,9 +15168,12 @@ and the title of the content block.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererContentBlock{%
- \markdownRendererContentBlockPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererContentBlock
+ {
+ \markdownRendererContentBlockPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ contentBlock }
@@ -14447,7 +15183,6 @@ and the title of the content block.
{ 4 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14468,9 +15203,12 @@ as \mref{markdownRendererContentBlock}.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererContentBlockOnlineImage{%
- \markdownRendererContentBlockOnlineImagePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererContentBlockOnlineImage
+ {
+ \markdownRendererContentBlockOnlineImagePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ contentBlockOnlineImage }
@@ -14480,7 +15218,6 @@ as \mref{markdownRendererContentBlock}.
{ 4 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14663,9 +15400,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererContentBlockCode{%
- \markdownRendererContentBlockCodePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererContentBlockCode
+ {
+ \markdownRendererContentBlockCodePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ contentBlockCode }
@@ -14675,7 +15415,6 @@ following text:
{ 5 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14700,9 +15439,12 @@ list is not tight). The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlBegin{%
- \markdownRendererDlBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlBegin
+ {
+ \markdownRendererDlBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlBegin }
@@ -14712,7 +15454,6 @@ list is not tight). The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14734,9 +15475,12 @@ list is tight). This macro will only be produced, when the
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlBeginTight{%
- \markdownRendererDlBeginTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlBeginTight
+ {
+ \markdownRendererDlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlBeginTight }
@@ -14746,7 +15490,6 @@ list is tight). This macro will only be produced, when the
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14767,9 +15510,12 @@ being defined.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlItem{%
- \markdownRendererDlItemPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlItem
+ {
+ \markdownRendererDlItemPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlItem }
@@ -14779,7 +15525,6 @@ being defined.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14799,9 +15544,12 @@ definitions for a single term.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlItemEnd{%
- \markdownRendererDlItemEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlItemEnd
+ {
+ \markdownRendererDlItemEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlItemEnd }
@@ -14811,7 +15559,6 @@ definitions for a single term.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14832,9 +15579,12 @@ a single term.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlDefinitionBegin{%
- \markdownRendererDlDefinitionBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlDefinitionBegin
+ {
+ \markdownRendererDlDefinitionBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlDefinitionBegin }
@@ -14844,7 +15594,6 @@ a single term.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14865,9 +15614,12 @@ single term.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlDefinitionEnd{%
- \markdownRendererDlDefinitionEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlDefinitionEnd
+ {
+ \markdownRendererDlDefinitionEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlDefinitionEnd }
@@ -14877,7 +15629,6 @@ single term.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -14898,9 +15649,12 @@ tight). The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlEnd{%
- \markdownRendererDlEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlEnd
+ {
+ \markdownRendererDlEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlEnd }
@@ -14910,7 +15664,6 @@ tight). The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15267,9 +16020,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDlEndTight{%
- \markdownRendererDlEndTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlEndTight
+ {
+ \markdownRendererDlEndTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dlEndTight }
@@ -15279,7 +16035,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15289,7 +16044,7 @@ following text:
% \begin{markdown}
#### Ellipsis Renderer
-The \mdef{markdownRendererEllipsis} macro replaces any occurance of ASCII
+The \mdef{markdownRendererEllipsis} macro replaces any occurrence of ASCII
ellipses in the input text. This macro will only be produced, when the
\Opt{smartEllipses} option is enabled. The macro receives no arguments.
@@ -15378,9 +16133,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererEllipsis{%
- \markdownRendererEllipsisPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererEllipsis
+ {
+ \markdownRendererEllipsisPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ellipsis }
@@ -15390,7 +16148,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15399,7 +16156,7 @@ following text:
%
% \begin{markdown}
-#### Emphasis Renderers
+#### Emphasis Renderers {#emphasis-renderers}
The \mdef{markdownRendererEmphasis} macro represents an emphasized span of
text. The macro receives a single argument that corresponds to the emphasized
span of text.
@@ -15412,9 +16169,12 @@ span of text.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererEmphasis{%
- \markdownRendererEmphasisPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererEmphasis
+ {
+ \markdownRendererEmphasisPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ emphasis }
@@ -15424,7 +16184,6 @@ span of text.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15531,9 +16290,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererStrongEmphasis{%
- \markdownRendererStrongEmphasisPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererStrongEmphasis
+ {
+ \markdownRendererStrongEmphasisPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ strongEmphasis }
@@ -15543,7 +16305,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15553,8 +16314,8 @@ following text:
% \begin{markdown}
#### Fenced Code Attribute Context Renderers
-The following macros are only produced, when the \Opt{fencedCode} option is
-enabled.
+The following macros are only produced, when the \Opt{fencedCode} and
+\Opt{fencedCodeAttributes} options are enabled.
The \mdef{markdownRendererFencedCodeAttributeContextBegin} and
\mdef{markdownRendererFencedCodeAttributeContextEnd} macros represent the
@@ -15619,9 +16380,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFencedCodeAttributeContextBegin{%
- \markdownRendererFencedCodeAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedCodeAttributeContextBegin
+ {
+ \markdownRendererFencedCodeAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fencedCodeAttributeContextBegin }
@@ -15629,10 +16393,11 @@ following text:
\g_@@_renderer_arities_prop
{ fencedCodeAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFencedCodeAttributeContextEnd{%
- \markdownRendererFencedCodeAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedCodeAttributeContextEnd
+ {
+ \markdownRendererFencedCodeAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fencedCodeAttributeContextEnd }
@@ -15642,7 +16407,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15739,9 +16503,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFencedDivAttributeContextBegin{%
- \markdownRendererFencedDivAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedDivAttributeContextBegin
+ {
+ \markdownRendererFencedDivAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fencedDivAttributeContextBegin }
@@ -15749,10 +16516,11 @@ following text:
\g_@@_renderer_arities_prop
{ fencedDivAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFencedDivAttributeContextEnd{%
- \markdownRendererFencedDivAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedDivAttributeContextEnd
+ {
+ \markdownRendererFencedDivAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fencedDivAttributeContextEnd }
@@ -15762,7 +16530,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15842,9 +16609,12 @@ following text:
%<*tex>
% \fi
% \begin{macrocode}
-\def\markdownRendererHeaderAttributeContextBegin{%
- \markdownRendererHeaderAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeaderAttributeContextBegin
+ {
+ \markdownRendererHeaderAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headerAttributeContextBegin }
@@ -15852,10 +16622,11 @@ following text:
\g_@@_renderer_arities_prop
{ headerAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHeaderAttributeContextEnd{%
- \markdownRendererHeaderAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeaderAttributeContextEnd
+ {
+ \markdownRendererHeaderAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headerAttributeContextEnd }
@@ -15865,7 +16636,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15886,9 +16656,12 @@ The macro receives a single argument that corresponds to the heading text.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererHeadingOne{%
- \markdownRendererHeadingOnePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingOne
+ {
+ \markdownRendererHeadingOnePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headingOne }
@@ -15898,7 +16671,6 @@ The macro receives a single argument that corresponds to the heading text.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15919,9 +16691,12 @@ text.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererHeadingTwo{%
- \markdownRendererHeadingTwoPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingTwo
+ {
+ \markdownRendererHeadingTwoPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headingTwo }
@@ -15931,7 +16706,6 @@ text.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15952,9 +16726,12 @@ text.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererHeadingThree{%
- \markdownRendererHeadingThreePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingThree
+ {
+ \markdownRendererHeadingThreePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headingThree }
@@ -15964,7 +16741,6 @@ text.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -15985,9 +16761,12 @@ text.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererHeadingFour{%
- \markdownRendererHeadingFourPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingFour
+ {
+ \markdownRendererHeadingFourPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headingFour }
@@ -15997,7 +16776,6 @@ text.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16018,9 +16796,12 @@ text.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererHeadingFive{%
- \markdownRendererHeadingFivePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingFive
+ {
+ \markdownRendererHeadingFivePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headingFive }
@@ -16030,7 +16811,6 @@ text.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16152,9 +16932,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererHeadingSix{%
- \markdownRendererHeadingSixPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingSix
+ {
+ \markdownRendererHeadingSixPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ headingSix }
@@ -16164,7 +16947,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16225,9 +17007,12 @@ The horizontal margins should contain the following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInlineHtmlComment{%
- \markdownRendererInlineHtmlCommentPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInlineHtmlComment
+ {
+ \markdownRendererInlineHtmlCommentPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inlineHtmlComment }
@@ -16237,7 +17022,6 @@ The horizontal margins should contain the following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16302,9 +17086,12 @@ following body text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInlineHtmlTag{%
- \markdownRendererInlineHtmlTagPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInlineHtmlTag
+ {
+ \markdownRendererInlineHtmlTagPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inlineHtmlTag }
@@ -16312,10 +17099,11 @@ following body text:
\g_@@_renderer_arities_prop
{ inlineHtmlTag }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererInputBlockHtmlElement{%
- \markdownRendererInputBlockHtmlElementPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputBlockHtmlElement
+ {
+ \markdownRendererInputBlockHtmlElementPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inputBlockHtmlElement }
@@ -16325,7 +17113,6 @@ following body text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16403,9 +17190,12 @@ that the \TeX{} engine has shell access.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererImage{%
- \markdownRendererImagePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererImage
+ {
+ \markdownRendererImagePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ image }
@@ -16415,7 +17205,6 @@ that the \TeX{} engine has shell access.
{ 4 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16473,9 +17262,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererImageAttributeContextBegin{%
- \markdownRendererImageAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererImageAttributeContextBegin
+ {
+ \markdownRendererImageAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ imageAttributeContextBegin }
@@ -16483,10 +17275,11 @@ following text:
\g_@@_renderer_arities_prop
{ imageAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererImageAttributeContextEnd{%
- \markdownRendererImageAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererImageAttributeContextEnd
+ {
+ \markdownRendererImageAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ imageAttributeContextEnd }
@@ -16496,7 +17289,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16619,9 +17411,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInterblockSeparator{%
- \markdownRendererInterblockSeparatorPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInterblockSeparator
+ {
+ \markdownRendererInterblockSeparatorPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ interblockSeparator }
@@ -16631,7 +17426,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16694,9 +17488,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererParagraphSeparator{%
- \markdownRendererParagraphSeparatorPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererParagraphSeparator
+ {
+ \markdownRendererParagraphSeparatorPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ paragraphSeparator }
@@ -16706,7 +17503,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16814,9 +17610,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererLineBlockBegin{%
- \markdownRendererLineBlockBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLineBlockBegin
+ {
+ \markdownRendererLineBlockBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ lineBlockBegin }
@@ -16824,10 +17623,11 @@ following text:
\g_@@_renderer_arities_prop
{ lineBlockBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererLineBlockEnd{%
- \markdownRendererLineBlockEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLineBlockEnd
+ {
+ \markdownRendererLineBlockEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ lineBlockEnd }
@@ -16837,7 +17637,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -16933,9 +17732,12 @@ following text:
%<*tex>
% \fi
% \begin{macrocode}
-\def\markdownRendererSoftLineBreak{%
- \markdownRendererSoftLineBreakPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSoftLineBreak
+ {
+ \markdownRendererSoftLineBreakPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ softLineBreak }
@@ -16945,7 +17747,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17041,9 +17842,12 @@ following text:
%<*tex>
% \fi
% \begin{macrocode}
-\def\markdownRendererHardLineBreak{%
- \markdownRendererHardLineBreakPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHardLineBreak
+ {
+ \markdownRendererHardLineBreakPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ hardLineBreak }
@@ -17053,7 +17857,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17165,9 +17968,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererLink{%
- \markdownRendererLinkPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLink
+ {
+ \markdownRendererLinkPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ link }
@@ -17177,7 +17983,6 @@ following text:
{ 4 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17235,9 +18040,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererLinkAttributeContextBegin{%
- \markdownRendererLinkAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLinkAttributeContextBegin
+ {
+ \markdownRendererLinkAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ linkAttributeContextBegin }
@@ -17245,10 +18053,11 @@ following text:
\g_@@_renderer_arities_prop
{ linkAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererLinkAttributeContextEnd{%
- \markdownRendererLinkAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLinkAttributeContextEnd
+ {
+ \markdownRendererLinkAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ linkAttributeContextEnd }
@@ -17258,7 +18067,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17313,9 +18121,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererMark{%
- \markdownRendererMarkPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererMark
+ {
+ \markdownRendererMarkPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ mark }
@@ -17325,7 +18136,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17455,9 +18265,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererDocumentBegin{%
- \markdownRendererDocumentBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDocumentBegin
+ {
+ \markdownRendererDocumentBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ documentBegin }
@@ -17465,10 +18278,11 @@ following text:
\g_@@_renderer_arities_prop
{ documentBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDocumentEnd{%
- \markdownRendererDocumentEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDocumentEnd
+ {
+ \markdownRendererDocumentEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ documentEnd }
@@ -17478,7 +18292,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17551,9 +18364,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererNbsp{%
- \markdownRendererNbspPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererNbsp
+ {
+ \markdownRendererNbspPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ nbsp }
@@ -17563,7 +18379,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17684,7 +18499,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17707,9 +18521,12 @@ option is disabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererOlBegin{%
- \markdownRendererOlBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlBegin
+ {
+ \markdownRendererOlBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ olBegin }
@@ -17719,7 +18536,6 @@ option is disabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17742,9 +18558,12 @@ receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererOlBeginTight{%
- \markdownRendererOlBeginTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlBeginTight
+ {
+ \markdownRendererOlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ olBeginTight }
@@ -17754,7 +18573,6 @@ receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17779,9 +18597,12 @@ and the style of delimiters between list item labels and texts (`Default`,
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFancyOlBegin{%
- \markdownRendererFancyOlBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlBegin
+ {
+ \markdownRendererFancyOlBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fancyOlBegin }
@@ -17791,7 +18612,6 @@ and the style of delimiters between list item labels and texts (`Default`,
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17816,9 +18636,12 @@ the valid style values.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFancyOlBeginTight{%
- \markdownRendererFancyOlBeginTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlBeginTight
+ {
+ \markdownRendererFancyOlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fancyOlBeginTight }
@@ -17828,7 +18651,6 @@ the valid style values.
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17850,9 +18672,12 @@ arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererOlItem{%
- \markdownRendererOlItemPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlItem
+ {
+ \markdownRendererOlItemPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ olItem }
@@ -17862,7 +18687,6 @@ arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17883,9 +18707,12 @@ option is disabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererOlItemEnd{%
- \markdownRendererOlItemEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlItemEnd
+ {
+ \markdownRendererOlItemEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ olItemEnd }
@@ -17895,7 +18722,6 @@ option is disabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17917,9 +18743,12 @@ receives a single numeric argument that corresponds to the item number.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererOlItemWithNumber{%
- \markdownRendererOlItemWithNumberPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlItemWithNumber
+ {
+ \markdownRendererOlItemWithNumberPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ olItemWithNumber }
@@ -17929,7 +18758,6 @@ receives a single numeric argument that corresponds to the item number.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17951,9 +18779,12 @@ no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFancyOlItem{%
- \markdownRendererFancyOlItemPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlItem
+ {
+ \markdownRendererFancyOlItemPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fancyOlItem }
@@ -17963,7 +18794,6 @@ no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -17984,9 +18814,12 @@ option is enabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFancyOlItemEnd{%
- \markdownRendererFancyOlItemEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlItemEnd
+ {
+ \markdownRendererFancyOlItemEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fancyOlItemEnd }
@@ -17996,7 +18829,6 @@ option is enabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18018,9 +18850,12 @@ argument that corresponds to the item number.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFancyOlItemWithNumber{%
- \markdownRendererFancyOlItemWithNumberPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlItemWithNumber
+ {
+ \markdownRendererFancyOlItemWithNumberPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fancyOlItemWithNumber }
@@ -18030,7 +18865,6 @@ argument that corresponds to the item number.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18052,9 +18886,12 @@ disabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererOlEnd{%
- \markdownRendererOlEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlEnd
+ {
+ \markdownRendererOlEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ olEnd }
@@ -18064,7 +18901,6 @@ disabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18087,9 +18923,12 @@ arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererOlEndTight{%
- \markdownRendererOlEndTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlEndTight
+ {
+ \markdownRendererOlEndTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ olEndTight }
@@ -18099,7 +18938,6 @@ arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18121,9 +18959,12 @@ option is enabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFancyOlEnd{%
- \markdownRendererFancyOlEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlEnd
+ {
+ \markdownRendererFancyOlEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fancyOlEnd }
@@ -18133,7 +18974,6 @@ option is enabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18412,9 +19252,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererFancyOlEndTight{%
- \markdownRendererFancyOlEndTightPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlEndTight
+ {
+ \markdownRendererFancyOlEndTightPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ fancyOlEndTight }
@@ -18424,7 +19267,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18435,7 +19277,7 @@ following text:
#### 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
+The macro receives two arguments: the filename of a file containing the inline
raw span contents and the raw attribute that designates the format of the
inline raw span. This macro will only be produced, when the \Opt{rawAttribute}
option is enabled.
@@ -18448,9 +19290,12 @@ option is enabled.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInputRawInline{%
- \markdownRendererInputRawInlinePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputRawInline
+ {
+ \markdownRendererInputRawInlinePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inputRawInline }
@@ -18460,7 +19305,6 @@ option is enabled.
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18470,7 +19314,7 @@ option is enabled.
% \begin{markdown}
The \mdef{markdownRendererInputRawBlock} macro represents a raw block. The
-macro receives two arguments: the filename of a file contaning the raw block
+macro receives two arguments: the filename of a file containing the raw block
and the raw attribute that designates the format of the raw block. This macro
will only be produced, when the \Opt{rawAttribute} and \Opt{fencedCode} options
are enabled.
@@ -18530,9 +19374,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInputRawBlock{%
- \markdownRendererInputRawBlockPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputRawBlock
+ {
+ \markdownRendererInputRawBlockPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inputRawBlock }
@@ -18542,7 +19389,6 @@ following text:
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18563,9 +19409,12 @@ macros represent the beginning and the end of a section based on headings.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererSectionBegin{%
- \markdownRendererSectionBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSectionBegin
+ {
+ \markdownRendererSectionBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ sectionBegin }
@@ -18573,10 +19422,11 @@ macros represent the beginning and the end of a section based on headings.
\g_@@_renderer_arities_prop
{ sectionBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererSectionEnd{%
- \markdownRendererSectionEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSectionEnd
+ {
+ \markdownRendererSectionEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ sectionEnd }
@@ -18586,7 +19436,6 @@ macros represent the beginning and the end of a section based on headings.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18607,9 +19456,12 @@ and U+FFFD Unicode characters. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererReplacementCharacter{%
- \markdownRendererReplacementCharacterPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererReplacementCharacter
+ {
+ \markdownRendererReplacementCharacterPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ replacementCharacter }
@@ -18619,7 +19471,6 @@ and U+FFFD Unicode characters. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18732,9 +19583,12 @@ following text, where the middot (`·`) denotes a non-breaking space:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererLeftBrace{%
- \markdownRendererLeftBracePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLeftBrace
+ {
+ \markdownRendererLeftBracePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ leftBrace }
@@ -18742,10 +19596,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ leftBrace }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererRightBrace{%
- \markdownRendererRightBracePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererRightBrace
+ {
+ \markdownRendererRightBracePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ rightBrace }
@@ -18753,10 +19608,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ rightBrace }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDollarSign{%
- \markdownRendererDollarSignPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDollarSign
+ {
+ \markdownRendererDollarSignPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ dollarSign }
@@ -18764,10 +19620,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ dollarSign }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererPercentSign{%
- \markdownRendererPercentSignPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererPercentSign
+ {
+ \markdownRendererPercentSignPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ percentSign }
@@ -18775,10 +19632,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ percentSign }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererAmpersand{%
- \markdownRendererAmpersandPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAmpersand
+ {
+ \markdownRendererAmpersandPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ ampersand }
@@ -18786,10 +19644,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ ampersand }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUnderscore{%
- \markdownRendererUnderscorePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUnderscore
+ {
+ \markdownRendererUnderscorePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ underscore }
@@ -18797,10 +19656,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ underscore }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHash{%
- \markdownRendererHashPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHash
+ {
+ \markdownRendererHashPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ hash }
@@ -18808,10 +19668,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ hash }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererCircumflex{%
- \markdownRendererCircumflexPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCircumflex
+ {
+ \markdownRendererCircumflexPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ circumflex }
@@ -18819,10 +19680,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ circumflex }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererBackslash{%
- \markdownRendererBackslashPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBackslash
+ {
+ \markdownRendererBackslashPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ backslash }
@@ -18830,10 +19692,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ backslash }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererTilde{%
- \markdownRendererTildePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTilde
+ {
+ \markdownRendererTildePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ tilde }
@@ -18841,10 +19704,11 @@ following text, where the middot (`·`) denotes a non-breaking space:
\g_@@_renderer_arities_prop
{ tilde }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererPipe{%
- \markdownRendererPipePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererPipe
+ {
+ \markdownRendererPipePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ pipe }
@@ -18854,7 +19718,6 @@ following text, where the middot (`·`) denotes a non-breaking space:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -18880,7 +19743,7 @@ following content:
``` tex
\input markdown
\def\markdownOptionStrikeThrough{true}
-\input soulutf8.sty
+\input soul.sty
\def\markdownRendererStrikeThrough#1{\st{#1}}
\markdownBegin
This is ~~a lunar roving vehicle~~ strike-through text.
@@ -18903,7 +19766,7 @@ following content:
``` tex
\documentclass{article}
\usepackage[strikeThrough]{markdown}
-\usepackage{soulutf8}
+\usepackage{soul}
\markdownSetup{
renderers = {
strikeThrough = {\st{#1}},
@@ -18952,9 +19815,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererStrikeThrough{%
- \markdownRendererStrikeThroughPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererStrikeThrough
+ {
+ \markdownRendererStrikeThroughPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ strikeThrough }
@@ -18964,7 +19830,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19060,9 +19925,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererSubscript{%
- \markdownRendererSubscriptPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSubscript
+ {
+ \markdownRendererSubscriptPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ subscript }
@@ -19071,7 +19939,6 @@ following text:
{ subscript }
{ 1 }
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19167,9 +20034,11 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererSuperscript{%
- \markdownRendererSuperscriptPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSuperscript
+ {
+ \markdownRendererSuperscriptPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ superscript }
@@ -19179,7 +20048,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19276,9 +20144,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererTableAttributeContextBegin{%
- \markdownRendererTableAttributeContextBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTableAttributeContextBegin
+ {
+ \markdownRendererTableAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ tableAttributeContextBegin }
@@ -19286,10 +20157,11 @@ following text:
\g_@@_renderer_arities_prop
{ tableAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererTableAttributeContextEnd{%
- \markdownRendererTableAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTableAttributeContextEnd
+ {
+ \markdownRendererTableAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ tableAttributeContextEnd }
@@ -19299,7 +20171,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19308,7 +20179,7 @@ following text:
%
% \begin{markdown}
-#### Table Renderer
+#### Table Renderer {#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
parameters `{`\meta{caption}`}{`\meta{number of rows}`}{`\meta{number of columns}`}`
@@ -19368,7 +20239,7 @@ following content:
\markdownSetup{
renderers = {
table = {%
- This is a table with caption \emph{#1} that is #3 colums wide
+ This is a table with caption \emph{#1} that is #3 columns wide
and #2 rows long.
\rowCounter=0%
\def\rowTotal{#2}%
@@ -19397,7 +20268,7 @@ A PDF document named `document.pdf` should be produced and contain the
following text:
> This is a table with caption *Demonstration of pipe table syntax* that is 4
-> colums wide and 4 rows long. As for the alignment, column number 1 is
+> columns wide and 4 rows long. As for the alignment, column number 1 is
> right-aligned, column number 2 is left-aligned, column number 3 has default
> alignment, and column number 4 is centered. In row 1, column number 1 says
> *Right*, column number 2 says *Left*, column number 3 says *Default*, and
@@ -19414,9 +20285,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererTable{%
- \markdownRendererTablePrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTable
+ {
+ \markdownRendererTablePrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ table }
@@ -19426,7 +20300,6 @@ following text:
{ 3 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19535,9 +20408,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererInlineMath{%
- \markdownRendererInlineMathPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInlineMath
+ {
+ \markdownRendererInlineMathPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ inlineMath }
@@ -19545,10 +20421,11 @@ following text:
\g_@@_renderer_arities_prop
{ inlineMath }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererDisplayMath{%
- \markdownRendererDisplayMathPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDisplayMath
+ {
+ \markdownRendererDisplayMathPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ displayMath }
@@ -19558,7 +20435,6 @@ following text:
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19673,9 +20549,12 @@ following text:
%<*tex>
% \fi
% \begin{macrocode}
-\def\markdownRendererThematicBreak{%
- \markdownRendererThematicBreakPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererThematicBreak
+ {
+ \markdownRendererThematicBreakPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ thematicBreak }
@@ -19685,7 +20564,6 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19767,9 +20645,12 @@ following text:
% \fi
%
% \begin{macrocode}
-\def\markdownRendererTickedBox{%
- \markdownRendererTickedBoxPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTickedBox
+ {
+ \markdownRendererTickedBoxPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ tickedBox }
@@ -19777,10 +20658,11 @@ following text:
\g_@@_renderer_arities_prop
{ tickedBox }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHalfTickedBox{%
- \markdownRendererHalfTickedBoxPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHalfTickedBox
+ {
+ \markdownRendererHalfTickedBoxPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ halfTickedBox }
@@ -19788,10 +20670,11 @@ following text:
\g_@@_renderer_arities_prop
{ halfTickedBox }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUntickedBox{%
- \markdownRendererUntickedBoxPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUntickedBox
+ {
+ \markdownRendererUntickedBoxPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ untickedBox }
@@ -19801,7 +20684,64 @@ following text:
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
+#### Warning and Error Renderers
+
+The \mdef{markdownRendererWarning} and \mdef{markdownRendererError} macros
+represent warnings and errors produced by the markdown parser. Both macros
+receive four parameters:
+
+1. The fully escaped text of the warning or error that can be directly typeset
+2. The raw text of the warning or error that can be used outside typesetting
+ for e.g. logging the warning or error.
+3. The fully escaped text with more details about the warning or error that
+ can be directly typeset. Can be empty, unlike the first two parameters.
+4. The raw text with more details about the warning or error that can be used
+ outside typesetting for e.g. logging the warning or error. Can be empty,
+ unlike the first two parameters.
+
+% \end{markdown}
+%
+% \iffalse
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererWarning
+ {
+ \markdownRendererWarningPrototype
+ }
+\cs_gset_protected:Npn
+ \markdownRendererError
+ {
+ \markdownRendererErrorPrototype
+ }
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { warning }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { warning }
+ { 4 }
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { error }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { error }
+ { 4 }
+\ExplSyntaxOff
+% \end{macrocode}
%
% \iffalse
%</tex>
@@ -19824,9 +20764,12 @@ option is enabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataBegin{%
- \markdownRendererJekyllDataBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataBegin
+ {
+ \markdownRendererJekyllDataBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataBegin }
@@ -19836,7 +20779,6 @@ option is enabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19857,9 +20799,12 @@ The \mdef{markdownRendererJekyllDataEnd} macro represents the end of a
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataEnd{%
- \markdownRendererJekyllDataEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataEnd
+ {
+ \markdownRendererJekyllDataEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataEnd }
@@ -19869,7 +20814,6 @@ The \mdef{markdownRendererJekyllDataEnd} macro represents the end of a
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19892,9 +20836,12 @@ arguments: the scalar key in the parent structure, cast to a string following
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataMappingBegin{%
- \markdownRendererJekyllDataMappingBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataMappingBegin
+ {
+ \markdownRendererJekyllDataMappingBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataMappingBegin }
@@ -19904,7 +20851,6 @@ arguments: the scalar key in the parent structure, cast to a string following
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19925,9 +20871,12 @@ when the \Opt{jekyllData} option is enabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataMappingEnd{%
- \markdownRendererJekyllDataMappingEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataMappingEnd
+ {
+ \markdownRendererJekyllDataMappingEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataMappingEnd }
@@ -19937,7 +20886,6 @@ when the \Opt{jekyllData} option is enabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19960,9 +20908,12 @@ arguments: the scalar key in the parent structure, cast to a string following
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataSequenceBegin{%
- \markdownRendererJekyllDataSequenceBeginPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataSequenceBegin
+ {
+ \markdownRendererJekyllDataSequenceBeginPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataSequenceBegin }
@@ -19972,7 +20923,6 @@ arguments: the scalar key in the parent structure, cast to a string following
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -19993,9 +20943,12 @@ when the \Opt{jekyllData} option is enabled. The macro receives no arguments.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataSequenceEnd{%
- \markdownRendererJekyllDataSequenceEndPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataSequenceEnd
+ {
+ \markdownRendererJekyllDataSequenceEndPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataSequenceEnd }
@@ -20005,7 +20958,6 @@ when the \Opt{jekyllData} option is enabled. The macro receives no arguments.
{ 0 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -20028,9 +20980,12 @@ following \acro{yaml} serialization rules.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataBoolean{%
- \markdownRendererJekyllDataBooleanPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataBoolean
+ {
+ \markdownRendererJekyllDataBooleanPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataBoolean }
@@ -20040,7 +20995,6 @@ following \acro{yaml} serialization rules.
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -20063,9 +21017,12 @@ following \acro{yaml} serialization rules.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataNumber{%
- \markdownRendererJekyllDataNumberPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataNumber
+ {
+ \markdownRendererJekyllDataNumberPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataNumber }
@@ -20075,7 +21032,6 @@ following \acro{yaml} serialization rules.
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -20084,12 +21040,24 @@ following \acro{yaml} serialization rules.
%
% \begin{markdown}
-The \mdef{markdownRendererJekyllDataString} macro represents a string scalar
-value in a \acro{yaml} document. This macro will only be produced when the
-\Opt{jekyllData} option is enabled. The macro receives two arguments: the
+The \mdef{markdownRendererJekyllDataTypographicString} and
+\mdef{markdownRendererJekyllDataProgrammaticString} macros represent string
+scalar values in a \acro{yaml} document. This macro will only be produced when
+the \Opt{jekyllData} option is enabled. The macro receives two arguments: the
scalar key in the parent structure, cast to a string following \acro{yaml}
serialization rules, and the scalar value.
+For each string scalar value, both macros are produced. Whereas
+\mref{markdownRendererJekyllDataTypographicString} receives the scalar value
+after all markdown markup and special \TeX{} characters in the string have been
+replaced by \TeX{} macros, \mref{markdownRendererJekyllDataProgrammaticString}
+receives the raw scalar value. Therefore, whereas the
+\mref{markdownRendererJekyllDataTypographicString} macro is more appropriate
+for texts that are supposed to be typeset with \TeX{}, such as document titles,
+author names, or exam questions, the
+\mref{markdownRendererJekyllDataProgrammaticString} macro is more appropriate
+for identifiers and other programmatic text that won't be typeset by \TeX{}.
+
% \end{markdown}
%
% \iffalse
@@ -20098,9 +21066,109 @@ serialization rules, and the scalar value.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataString{%
- \markdownRendererJekyllDataStringPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataTypographicString
+ {
+ \markdownRendererJekyllDataTypographicStringPrototype
+ }
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataProgrammaticString
+ {
+ \markdownRendererJekyllDataProgrammaticStringPrototype
+ }
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { jekyllDataTypographicString }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { jekyllDataTypographicString }
+ { 2 }
+\seq_gput_right:Nn
+ \g_@@_renderers_seq
+ { jekyllDataProgrammaticString }
+\prop_gput:Nnn
+ \g_@@_renderer_arities_prop
+ { jekyllDataProgrammaticString }
+ { 2 }
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \iffalse
+%</tex>
+%<*manual-tokens>
+% \fi
+%
+% \begin{markdown}
+
+Before Markdown 3.7.0, the \mref{markdownRendererJekyllDataTypographicString}
+macro was named \mref{markdownRendererJekyllDataString} and the
+\mref{markdownRendererJekyllDataProgrammaticString} macro was not produced.
+The \mref{markdownRendererJekyllDataString} has been deprecated and will be
+removed in Markdown 4.0.0.
+
+% \end{markdown}
+%
+% \iffalse
+%</manual-tokens>
+%<*tex>
+% \fi
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_gset:Npn
+ \markdownRendererJekyllDataTypographicString
+ {
+ \cs_if_exist:NTF
+ \markdownRendererJekyllDataString
+ {
+ \@@_if_option:nTF
+ { experimental }
+ {
+ \markdownError
+ {
+ The~jekyllDataString~renderer~has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ }
+ {
+ \markdownWarning
+ {
+ The~jekyllDataString~renderer~has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ \markdownRendererJekyllDataString
+ }
+ }
+ {
+ \cs_if_exist:NTF
+ \markdownRendererJekyllDataStringPrototype
+ {
+ \@@_if_option:nTF
+ { experimental }
+ {
+ \markdownError
+ {
+ The~jekyllDataString~renderer~prototype~
+ has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ }
+ {
+ \markdownWarning
+ {
+ The~jekyllDataString~renderer~prototype~
+ has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ \markdownRendererJekyllDataStringPrototype
+ }
+ }
+ {
+ \markdownRendererJekyllDataTypographicStringPrototype
+ }
+ }
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataString }
@@ -20110,7 +21178,6 @@ serialization rules, and the scalar value.
{ 2 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -20137,9 +21204,12 @@ serialization rules.
% \fi
%
% \begin{macrocode}
-\def\markdownRendererJekyllDataEmpty{%
- \markdownRendererJekyllDataEmptyPrototype}%
\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataEmpty
+ {
+ \markdownRendererJekyllDataEmptyPrototype
+ }
\seq_gput_right:Nn
\g_@@_renderers_seq
{ jekyllDataEmpty }
@@ -20149,7 +21219,6 @@ serialization rules.
{ 1 }
\ExplSyntaxOff
% \end{macrocode}
-% \par
%
% \iffalse
%</tex>
@@ -20162,7 +21231,7 @@ following content:
``` tex
\input markdown
\def\markdownOptionJekyllData{true}
-\def\markdownRendererJekyllDataString#1#2{\gdef\name{#2}}
+\def\markdownRendererJekyllDataTypographicString#1#2{\gdef\name{#2}}
\def\markdownRendererJekyllDataNumber#1#2{\gdef\age{#2}}
\def\markdownRendererJekyllDataEnd{%
\name{} is \age{} years old.}
@@ -20192,7 +21261,7 @@ following content:
\usepackage[jekyllData]{markdown}
\markdownSetup{
renderers = {
- jekyllDataString = {\gdef\name{#2}},
+ jekyllDataTypographicString = {\gdef\name{#2}},
jekyllDataNumber = {\gdef\age{#2}},
jekyllDataEnd = {\name{} is \age{} years old.},
}
@@ -20224,7 +21293,7 @@ following content:
``` tex
\usemodule[t][markdown]
\setupmarkdown[jekyllData = yes]
-\def\markdownRendererJekyllDataString#1#2{\gdef\name{#2}}
+\def\markdownRendererJekyllDataTypographicString#1#2{\gdef\name{#2}}
\def\markdownRendererJekyllDataNumber#1#2{\gdef\age{#2}}
\def\markdownRendererJekyllDataEnd{%
\name{} is \age{} years old.}
@@ -20256,19 +21325,26 @@ following text:
%#### 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.
+% macros for token renderers. Furthermore, the `\markdownSetup` macro also accepts
+% the `renderers` and `unprotectedRenderers` keys. The value for these keys
+% 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.
+%
+% Whereas the key `renderers` defines protected functions, which are usually
+% preferable for typesetting, the key `unprotectedRenderers` defines unprotected
+% functions, which are easier to expand and may be preferable for programming.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
\cs_new:Nn \@@_define_renderers:
{
- \seq_map_function:NN
+ \seq_map_inline:Nn
\g_@@_renderers_seq
- \@@_define_renderer:n
+ {
+ \@@_define_renderer:n
+ { ##1 }
+ }
}
\cs_new:Nn \@@_define_renderer:n
{
@@ -20301,6 +21377,8 @@ following text:
\l_@@_renderer_definition_tl
\bool_new:N
\g_@@_appending_renderer_bool
+\bool_new:N
+ \g_@@_unprotected_renderer_bool
\cs_new:Nn \@@_define_renderer:nNn
{
\keys_define:nn
@@ -20325,16 +21403,45 @@ following text:
\l_@@_renderer_definition_tl
\l_tmpa_tl
}
- \cs_generate_from_arg_count:NNnV
+ \bool_if:NTF
+ \g_@@_unprotected_renderer_bool
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set:Npn }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set_protected:Npn }
+ }
+ \exp_last_unbraced:NNV
+ \cs_generate_from_arg_count:NNnV
#2
- \cs_set:Npn
+ \l_tmpa_tl
{ #3 }
\l_@@_renderer_definition_tl
},
}
+% \end{macrocode}
+% \begin{markdown}
+%
+% If the token renderer macro has been deprecated, we undefine it.
+%
+% The \mref{markdownRendererJekyllDataString} macro has been deprecated and
+% will be removed in Markdown 4.0.0.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \str_if_eq:nnT
+ { #1 }
+ { jekyllDataString }
+ {
+ \cs_undefine:N
+ #2
+ }
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% We define the function \mdef{@@_tl_set_from_cs:NNn}
@@ -20392,13 +21499,21 @@ following text:
{ markdown/options }
{
renderers .code:n = {
+ \bool_gset_false:N
+ \g_@@_unprotected_renderer_bool
+ \keys_set:nn
+ { markdown/options/renderers }
+ { #1 }
+ },
+ unprotectedRenderers .code:n = {
+ \bool_gset_true:N
+ \g_@@_unprotected_renderer_bool
\keys_set:nn
{ markdown/options/renderers }
{ #1 }
},
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The following example code showcases a possible configuration of the
@@ -20427,7 +21542,6 @@ following text:
{
unknown .code:n = {
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Besides defining renderers at once, we can also define them incrementally
@@ -20489,7 +21603,6 @@ following text:
\g_@@_appending_renderer_bool
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% In addition to exact token renderer names, we also support wildcards (`*`)
@@ -20629,11 +21742,6 @@ following text:
\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 }
@@ -20644,7 +21752,7 @@ following text:
% \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
+% macro to define plain \TeX{} token renderer macros and key--values
% immediately. Otherwise, we postpone the definition until the upper layers
% have been loaded.
%
@@ -20780,9 +21888,9 @@ following text:
#### YAML Metadata Renderer Prototypes {#expl3yamlmetadata}
-By default, the renderer prototypes for YAML metadata provide a high-level
-interface that can be programmed using the `markdown/jekyllData` key--values
-from the l3keys module of the \LaTeX{}3 kernel.
+For simple \acro{YAML} metadata, a simple high-level interface is provided
+that can be programmed by setting the expl3 key--values [@latex25] for the
+module `markdown/jekyllData`.
% \end{markdown}
% \iffalse
@@ -20906,8 +22014,9 @@ following text:
% \end{macrocode}
% \begin{markdown}
%
-% The `jekyllDataRenderers` key can be used as a syntactic sugar for setting
-% the `markdown/jekyllData` key--values without using the expl3 language.
+% The option `jekyllDataRenderers`=\meta{key--values} can be used to set the
+% \meta{key--values} for the module `markdown/jekyllData` without using the
+% expl3 syntax.
%
% \end{markdown}
% \begin{macrocode}
@@ -20971,22 +22080,109 @@ following text:
% \end{macrocode}
% \begin{markdown}
%
+% For complex \acro{YAML} metadata, the option `jekyllDataKeyValue`=\meta{module}
+% [@starynovotny25] can be used to route the processing of all \acro{YAML}
+% metadata in the current \TeX{} group to the key--values from \meta{module}.
+%
+% \end{markdown}
+% \iffalse
+%</tex>
+%<*manual-tokens>
+
+##### \LaTeX{} Example {.unnumbered}
+
+Using a text editor, create a text document named `document.tex` with the
+following content:
+``` tex
+\documentclass{article}
+\usepackage{markdown}
+\ExplSyntaxOn
+\str_new:N \g_markdown_example_title_str
+\seq_new:N \g_markdown_example_authors_seq
+\keys_define:nn
+ { markdown / example / module }
+ { % Define a key--value that processes YAML metadata.
+ title / programmaticString .str_gset:N = \g_markdown_example_title_str, % Store the raw title in a variable.
+ title .code:n = { \title { #1 } }, % Set the title. This is the same as writing `title / typographicString`.
+ authors / unknown .code:n = { % Store a variable-length list of authors in an array variable.
+ \seq_put_right:Nn
+ \g_markdown_example_authors_seq
+ { #1 }
+ },
+ }
+\markdownSetupSnippet
+ { metadata }
+ { % Define a snippet that routes YAML metadata to the above key key–value.
+ jekyllDataKeyValue = markdown / example / module,
+ renderers = {
+ jekyllDataEnd = { % At the end of the YAML metadata, ...
+ \clist_set_from_seq:NN % ... set the list of authors and
+ \l_tmpa_clist
+ \g_markdown_example_authors_seq
+ \exp_args:Nx
+ \author
+ { \clist_use:Nn \l_tmpa_clist { ,~ } }
+ \AtBeginDocument { \maketitle } % ... typeset the title page.
+ },
+ }
+ }
+\ExplSyntaxOff
+% Process the YAML metadata.
+\begin{yaml}[snippet=metadata]
+title: Some title that includes _markup_
+authors: [Jane Doe, John Moe]
+\end{yaml}
+\begin{document}
+The raw title of the document is:
+\ExplSyntaxOn
+\str_use:N \g_markdown_example_title_str
+\ExplSyntaxOff
+\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:
+
+> ### Some title that includes _markup_
+> ##### Jane Doe, John Moe
+> ##### _⟨Current date⟩_
+>
+> The raw title of the document is:
+> Some title that includes \_markup\_
+
+%</manual-tokens>
+%<*tex>
+% \fi
+% \begin{markdown}
+%
%#### 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.
+% macros for token renderer prototypes. Furthermore, the `\markdownSetup` macro also accepts
+% the `rendererPrototypes` and `unprotectedRendererPrototypes` keys. The value
+% for these keys 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.
+%
+% Whereas the key `rendererPrototypes` defines protected functions, which are
+% usually preferable for typesetting, the key `unprotectedRendererPrototypes`
+% defines unprotected functions, which are easier to expand and may be
+% preferable for programming.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
\cs_new:Nn \@@_define_renderer_prototypes:
{
- \seq_map_function:NN
+ \seq_map_inline:Nn
\g_@@_renderers_seq
- \@@_define_renderer_prototype:n
+ {
+ \@@_define_renderer_prototype:n
+ { ##1 }
+ }
}
\cs_new:Nn \@@_define_renderer_prototype:n
{
@@ -21020,6 +22216,8 @@ following text:
\l_@@_renderer_prototype_definition_tl
\bool_new:N
\g_@@_appending_renderer_prototype_bool
+\bool_new:N
+ \g_@@_unprotected_renderer_prototype_bool
\cs_new:Nn \@@_define_renderer_prototype:nNn
{
\keys_define:nn
@@ -21044,9 +22242,22 @@ following text:
\l_@@_renderer_prototype_definition_tl
\l_tmpa_tl
}
- \cs_generate_from_arg_count:NNnV
+ \bool_if:NTF
+ \g_@@_unprotected_renderer_prototype_bool
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set:Npn }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set_protected:Npn }
+ }
+ \exp_last_unbraced:NNV
+ \cs_generate_from_arg_count:NNnV
#2
- \cs_set:Npn
+ \l_tmpa_tl
{ #3 }
\l_@@_renderer_prototype_definition_tl
},
@@ -21054,26 +22265,33 @@ following text:
% \end{macrocode}
% \begin{markdown}
%
-% Unless the token renderer prototype macro has already been defined,
-% we provide an empty definition.
+% Unless the token renderer prototype macro has already been defined or unless,
+% it has been deprecated, we provide an empty definition.
+%
+% The \mref{markdownRendererJekyllDataStringPrototype} macro has been
+% deprecated and will be removed in Markdown 4.0.0.
%
% \end{markdown}
% \begin{macrocode}
- \cs_if_free:NT
- #2
+ \str_if_eq:nnF
+ { #1 }
+ { jekyllDataString }
{
- \cs_generate_from_arg_count:NNnn
+ \cs_if_free:NT
#2
- \cs_set:Npn
- { #3 }
- { }
+ {
+ \cs_generate_from_arg_count:NNnn
+ #2
+ \cs_gset_protected:Npn
+ { #3 }
+ { }
+ }
}
}
\cs_generate_variant:Nn
\@@_define_renderer_prototype:nNn
{ ncV }
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The following example code showcases a possible configuration of the
@@ -21095,7 +22313,6 @@ following text:
{
unknown .code:n = {
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Besides defining renderer prototypes at once, we can also define them
@@ -21157,7 +22374,6 @@ following text:
\g_@@_appending_renderer_prototype_bool
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% In addition to exact token renderer prototype names, we also support
@@ -21242,6 +22458,23 @@ following text:
{ markdown/options }
{
#1 .code:n = {
+ \bool_gset_false:N
+ \g_@@_unprotected_renderer_prototype_bool
+ \keys_set:nn
+ { markdown/options/renderer-prototypes }
+ { ##1 }
+ },
+ }
+ }
+\@@_with_various_cases:nn
+ { unprotectedRendererPrototypes }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #1 .code:n = {
+ \bool_gset_true:N
+ \g_@@_unprotected_renderer_prototype_bool
\keys_set:nn
{ markdown/options/renderer-prototypes }
{ ##1 }
@@ -21252,7 +22485,7 @@ following text:
% \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
+% 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.
%
@@ -21292,16 +22525,15 @@ following text:
% \begin{macrocode}
\let\markdownMakeOther\relax
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \mdef{markdownReadAndConvert} macro implements the \mref{markdownBegin}
-% macro. The first argument specifies the token sequence that will terminate
-% the markdown input (\mref{markdownEnd} in the instance of the \mref{markdownBegin}
-% macro) when the plain \TeX{} special characters have had their category
-% changed to *other*. The second argument specifies the token sequence
-% that will actually be inserted into the document, when the ending token
-% sequence has been found.
+% and \mref{yamlBegin} macros. The first argument specifies the token sequence
+% that will terminate the markdown input when the plain \TeX{} special
+% characters have had their category changed to *other*: \mref{markdownEnd} for
+% the \mref{markdownBegin} macro and \mref{yamlEnd} for the \mref{yamlBegin}
+% macro. The second argument specifies the token sequence that will actually be
+% inserted into the document, when the ending token sequence has been found.
%
% \end{markdown}
% \begin{macrocode}
@@ -21320,6 +22552,11 @@ following text:
|gdef|markdownBegin{%
|markdownReadAndConvert{\markdownEnd}%
{|markdownEnd}}%
+ |gdef|yamlBegin{%
+ |begingroup
+ |yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}%
+ |markdownReadAndConvert{\yamlEnd}%
+ {|yamlEnd}}%
|endgroup
% \end{macrocode}
% \begin{markdown}
@@ -21346,7 +22583,6 @@ following text:
% \iffalse
%</tex>
% \fi
-% \par
% \begin{markdown}
%
% \LaTeX{} Interface {#latexinterface}
@@ -21458,19 +22694,19 @@ pdflatex --shell-escape document.tex
% \Hologo{LaTeX2e} parses package options.
%
% \end{markdown}
-% \par
% \begin{markdown}
%
%### Typesetting Markdown
-% The interface exposes the \envmdef{markdown} and \envmdef{markdown*}
-% \LaTeX{} environments, and redefines the \mref{markinline} and
-% \mref{markdownInput} commands.
%
-% 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 interface exposes the \envmdef{markdown}, \envmdef{markdown*}, and
+% \envmdef{yaml} \LaTeX{} environments, and redefines the \mref{markinline},
+% \mref{markdownInput}, and \mref{yamlInput} commands.
+%
+%#### Typesetting Markdown and YAML directly
+%
+% The \envmref{markdown} and \envmref{markdown*} \LaTeX{} environments are
+% aliases for the macros \mref{markdownBegin} and \mref{markdownEnd} exposed
+% by the plain \TeX{} interface.
%
% The \envmref{markdown*} environment has been deprecated and will be removed
% in the next major version of the Markdown package.
@@ -21482,56 +22718,255 @@ pdflatex --shell-escape document.tex
% \end{macrocode}
% \markdownBegin
%
-% You may prepend your own code to the \mdef{markdown} macro and append your own
-% code to the \mref{markdownEnd} macro to produce special effects before and after
-% the \envmref{markdown} \LaTeX{} environment (and likewise for the starred
-% version).
+% Furthermore, both environments accept \LaTeX{} interface options (see Section
+% <#sec:latex-options>) as the only argument. This argument is optional for the
+% \envmref{markdown} environment and mandatory for the \envmref{markdown*}
+% environment.
%
-% Note that the \envmref{markdown} and \envmref{markdown*} \LaTeX{} environments are
-% subject to the same limitations as the \mref{markdownBegin} and \mref{markdownEnd}
-% macros exposed by the plain \TeX{} interface.
+% The \envmref{markdown} and \envmref{markdown*} environments are
+% subject to the same limitations as the \mref{markdownBegin} and
+% \mref{markdownEnd} macros.
%
% The following example \LaTeX{} code showcases the usage of the
% \envmref{markdown} and \envmref{markdown*} environments:
+%
% ``` tex
% \documentclass{article} \documentclass{article}
% \usepackage{markdown} \usepackage{markdown}
% \begin{document} \begin{document}
-% \% ... \% ...
% \begin{markdown}[smartEllipses] \begin{markdown*}{smartEllipses}
% _Hello_ **world** ... _Hello_ **world** ...
% \end{markdown} \end{markdown*}
-% \% ... \% ...
% \end{document} \end{document}
% ```````
%
+% You can't directly extend the \envmref{markdown} \LaTeX{} environment by
+% using it in other environments as follows:
+%
+% ``` tex
+% \newenvironment{foo}\%
+% {code before \begin{markdown}[some, options]}\%
+% {\end{markdown} code after}
+% ```
+%
+% This is because the implementation looks for the literal string
+% `\end{markdown}` to stop scanning the markdown text. However, you can work
+% around this limitation by using the \mref{markdown} and \mref{markdownEnd}
+% macros directly in the definition as follows:
+%
+% \markdownEnd
+% \begin{markdown}
+%
+% ``` tex
+% \newenvironment{foo}\%
+% {code before \markdown[some, options]}\%
+% {\markdownEnd code after}
+% ```
+%
+% Specifically, the \mref{markdown} macro must appear at the end of the
+% replacement before-text and must be followed by text that has not yet been
+% ingested by \TeX's input processor.
+%
+% Furthermore, using the \mref{markdownEnd} macro in of after the replacement
+% after-text is optional and only makes a difference if you redefined it to
+% produce special effects before and after the \envmref{markdown} \LaTeX{}
+% environment.
+%
+% Lastly, you can't nest the other environments. For example, the following
+% definition would be incorrect:
+%
+% ``` tex
+% \newenvironment{bar}{\begin{foo}}{\end{foo}}
+% ```
+%
+% In this example, you should use the \mref{markdown} macro directly in the
+% definition of the environment `bar`:
+%
+% ``` tex
+% \newenvironment{bar}{\markdown[some, options]}{\markdownEnd}
+% ```
+%
+% The \envmref{yaml} \LaTeX{} environment is an alias for the macros
+% \mref{yamlBegin} and \mref{yamlEnd} exposed by the plain \TeX{} interface.
+%
+% \end{markdown}
+% \begin{macrocode}
+\newenvironment{yaml}\relax\relax
+% \end{macrocode}
+% \begin{markdown}
+%
+% Furthermore, the environment accepts \LaTeX{} interface options (see Section
+% <#sec:latex-options>) as the only optional argument.
+%
+% The \envmref{yaml} environment is subject to the same limitations as
+% the \mref{markdownBegin} and \mref{markdownEnd} macros.
+%
+% The following example \LaTeX{} code showcases the usage of the
+% \envmref{yaml} environment:
+%
+% ``` tex
+% \documentclass{article}
+% \usepackage{markdown}
+% \begin{document}
+% \begin{yaml}[smartEllipses]
+% title: _Hello_ **world** ...
+% author: John Doe
+% \end{yaml}
+% \end{document}
+% ```````
+%
+% \end{markdown}
+% \markdownBegin
+%
+% The above code has the same effect as the below code:
+%
+% ``` tex
+% \documentclass{article}
+% \usepackage{markdown}
+% \begin{document}
+% \begin{markdown}[
+% jekyllData,
+% expectJekyllData,
+% ensureJekyllData,
+% smartEllipses,
+% ]
+% title: _Hello_ **world** ...
+% author: John Doe
+% \end{markdown}
+% \end{document}
+% ```````
+%
+% You can't directly extend the \envmref{yaml} \LaTeX{} environment by using it
+% in other environments. However, you can work around this limitation by using
+% the \mref{yaml} and \mref{yamlEnd} macros directly in the definition,
+% similarly to the \mref{markdown} and \mref{markdownEnd} macros described
+% previously. Unlike with the \mref{markdown} and \mref{markdownEnd} macros,
+% The \mref{yamlEnd} macro _must_ be used in or after the replacement after-text.
+%
% The \mref{markinline} macro accepts a single mandatory parameter containing
% inline markdown content and expands to the result of the conversion of the
% input markdown document to plain \TeX{}. Unlike the \mref{markinline} macro
% provided by the plain \TeX{} interface, this macro also accepts \LaTeX{}
% interface options (see Section <#sec:latex-options>) as its optional
-% argument. These options will only influnce this markdown content.
+% argument. These options will only influence this markdown content.
+%
+%#### Typesetting Markdown and YAML from external documents
%
% The \mref{markdownInput} macro accepts a single mandatory parameter containing
% the filename of a markdown document and expands to the result of the
% conversion of the input markdown document to plain \TeX{}. Unlike the
% \mref{markdownInput} macro provided by the plain \TeX{} interface, this macro
% also accepts \LaTeX{} interface options (see Section <#sec:latex-options>)
-% as its optional argument. These options will only influnce this markdown
+% as its optional argument. These options will only influence this markdown
% document.
%
% The following example \LaTeX{} code showcases the usage of the
% \mref{markdownInput} macro:
+%
% ``` tex
% \documentclass{article}
% \usepackage{markdown}
% \begin{document}
-% % ...
% \markdownInput[smartEllipses]{hello.md}
-% % ...
% \end{document}
% ```````
%
+% The \mref{yamlInput} macro accepts a single mandatory parameter containing
+% the filename of a \acro{YAML} document and expands to the result of the
+% conversion of the input \acro{YAML} document to plain \TeX{}. Unlike the
+% \mref{yamlInput} macro provided by the plain \TeX{} interface, this macro
+% also accepts \LaTeX{} interface options (see Section <#sec:latex-options>)
+% as its optional argument. These options will only influence this \acro{YAML}
+% document.
+%
+% The following example \LaTeX{} code showcases the usage of the
+% \mref{yamlInput} macro:
+%
+% ``` tex
+% \documentclass{article}
+% \usepackage{markdown}
+% \begin{document}
+% \yamlInput[smartEllipses]{hello.yml}
+% \end{document}
+% ```````
+%
+% The above code has the same effect as the below code:
+%
+% ``` tex
+% \documentclass{article}
+% \usepackage{markdown}
+% \begin{document}
+% \markdownInput[
+% jekyllData,
+% expectJekyllData,
+% ensureJekyllData,
+% smartEllipses,
+% ]{hello.yml}
+% \end{document}
+% ```````
+%
+%### Using \LaTeX{} hooks with the Markdown package
+%
+% \LaTeX{} provides an intricate hook management system that allows users to
+% insert extra material before and after certain \TeX{} macros and \LaTeX{}
+% environments, among other things. [@mittelbach24, Section 3.1.2]
+%
+% The Markdown package is compatible with hooks and allows the use of hooks
+% to insert extra material before \TeX{} commands and before/after \LaTeX{}
+% environments without restriction:
+%
+% ``` tex
+% \documentclass{article}
+% \usepackage{markdown}
+% \begin{document}
+% \AddToHook{cmd/markdownRendererEmphasis/before}{emphasis: }
+% \AddToHook{env/markdown/before}{<markdown>}
+% \AddToHook{env/markdown/after}{</markdown>}
+% \begin{markdown}
+% foo _bar_ baz!
+% \end{markdown}
+% \end{document}
+% ```
+%
+% Processing the above example with \LaTeX{} will produce the text
+% “<markdown>foo emphasis: _bar_ baz!</markdown>”, as expected.
+%
+% However, using hooks to insert extra material after \TeX{} commands only works
+% for commands with a fixed number of parameters that don't use currying.
+%
+% If, in the above example, you explicitly defined the renderer for emphasis
+% using \mref{markdownSetup} or another method that does not use currying, then
+% you would be able to insert extra material even after the renderer:
+%
+% ``` tex
+% \documentclass{article}
+% \usepackage{markdown}
+% \markdownSetup{renderers={emphasis={\emph{#1}}}}
+% \begin{document}
+% \AddToHook{cmd/markdownRendererEmphasis/before}{<emphasis>}
+% \AddToHook{cmd/markdownRendererEmphasis/after}{</emphasis>}
+% \AddToHook{env/markdown/before}{<markdown>}
+% \AddToHook{env/markdown/after}{</markdown>}
+% \begin{markdown}
+% foo _bar_ baz!
+% \end{markdown}
+% \end{document}
+% ```
+%
+% Processing the above example with \LaTeX{} will produce the text
+% “<markdown>foo <emphasis>_bar_</emphasis> baz!</markdown>”, as expected.
+%
+% However, the default renderer for emphasis uses currying and calls the
+% renderer prototype in a way that prevents the use of hooks to insert extra
+% material after the renderer, see Section~<#sec:emphasis-renderers>. In such
+% a case, you would need to redefine the renderer in a way that does not use
+% currying before you would be able to use hooks to insert extra material
+% after it.
+%
+% Hooks also cannot be used to insert extra material after renderers with a
+% variable number of parameters such as the renderer for tables, see
+% Section~<#sec:table-renderer>.
+%
%### Options {#latex-options}
%
% The \LaTeX{} options are represented by a comma-delimited list of
@@ -21600,7 +23035,7 @@ following code in our \LaTeX{} document:
We can also set all plain \TeX{} options directly from \LaTeX{}. For example,
to set the `\markdownOptionInputTempFileName` plain \TeX{} option to
-`helper-script.lua`, we would inclde the following code in our \LaTeX{}
+`helper-script.lua`, we would include the following code in our \LaTeX{}
document:
``` tex
@@ -21619,7 +23054,7 @@ document:
% 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
+% option, token renderer, and token renderer prototype macros and key--values
% immediately. Otherwise, we postpone the definition until the upper layers
% have been loaded.
%
@@ -21636,7 +23071,6 @@ document:
}
\ExplSyntaxOff
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The following example \LaTeX{} code showcases a possible configuration of
@@ -21657,7 +23091,10 @@ document:
% \fi
% \begin{markdown}
-### Themes {#latexthemes}
+%### Themes {#latexthemes}
+% \iffalse
+#### Themes {#latexthemes}
+% \fi
% In Section~\ref{sec:themes}, we described the concept of themes.
In \LaTeX{}, we expand on the concept of
@@ -21665,7 +23102,7 @@ In \LaTeX{}, we expand on the concept of
[themes](#themes)
% \fi
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
+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.
@@ -21683,25 +23120,21 @@ developers can load the `.tex` theme file from the `.sty` theme file using the
% 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:
+% For example, the following code would first load the Markdown package, then
+% the theme `witiko/example/foo`, and finally the theme `witiko/example/bar`:
% \end{markdown}
% \iffalse
-For example, to load themes named `witiko/beamer/MU` and `witiko/dot`, you
-would use the following code in the preamble of your document:
+For example, to load themes named `witiko/example/foo` and `witiko/example/bar`,
+you would use the following code in the preamble of your document:
% \fi
-% \par
% \begin{markdown}
``` tex
\usepackage[
- import=witiko/beamer/MU,
- import=witiko/dot,
+ import=witiko/example/foo,
+ import=witiko/example/bar,
]{markdown}
```````
@@ -21718,221 +23151,34 @@ would use the following code in the preamble of your document:
%</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}
-% \par
-% \markdownBegin
-
-Built-in \LaTeX{} themes provided with the Markdown package include:
-
-\pkg{witiko/dot}
-
-: A theme that typesets fenced code blocks with the `dot …` infostring
- as images of directed graphs rendered by the Graphviz tools. The
- right tail of the infostring is used as the image title.
-% ```` tex
-% \documentclass{article}
-% \usepackage[import=witiko/dot]{markdown}
-% \setkeys{Gin}{
-% width = \columnwidth,
-% height = 0.65\paperheight,
-% keepaspectratio}
-% \begin{document}
-% \begin{markdown}
-% ``` dot Various formats of mathemathical formulae
-% digraph tree {
-% margin = 0;
-% rankdir = "LR";
-%
-% latex -> pmml;
-% latex -> cmml;
-% pmml -> slt;
-% cmml -> opt;
-% cmml -> prefix;
-% cmml -> infix;
-% pmml -> mterms [style=dashed];
-% cmml -> mterms;
+% We also define the prop \mdef{g_@@_latex_built_in_themes_prop} that
+% contains the code of built-in themes. This is a packaging optimization,
+% so that built-in themes does not need to be distributed in many small files.
%
-% latex [label = "LaTeX"];
-% pmml [label = "Presentation MathML"];
-% cmml [label = "Content MathML"];
-% slt [label = "Symbol Layout Tree"];
-% opt [label = "Operator Tree"];
-% prefix [label = "Prefix"];
-% infix [label = "Infix"];
-% mterms [label = "M-Terms"];
-% }
-% ```
-% \end{markdown}
-% \end{document}
-% ````````
-% Typesetting the above document produces the output shown in
-% Figure <#fig:witiko/dot>.
-% ``` dot Various formats of mathemathical formulae \label{fig:witiko/dot}
-% digraph tree {
-% margin = 0;
-% rankdir = "LR";
-%
-% latex -> pmml;
-% latex -> cmml;
-% pmml -> slt;
-% cmml -> opt;
-% cmml -> prefix;
-% cmml -> infix;
-% pmml -> mterms [style=dashed];
-% cmml -> mterms;
-%
-% latex [label = "LaTeX"];
-% pmml [label = "Presentation MathML"];
-% cmml [label = "Content MathML"];
-% slt [label = "Symbol Layout Tree"];
-% opt [label = "Operator Tree"];
-% prefix [label = "Prefix"];
-% infix [label = "Infix"];
-% mterms [label = "M-Terms"];
-% }
-% ```
- The theme requires a Unix-like operating system with GNU Diffutils and
- Graphviz installed. The theme also requires shell access unless the
- \Opt{frozenCache} plain \TeX{} option is enabled.
-
-% \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/dot]{markdown}
-\setkeys{Gin}{
- width=\columnwidth,
- height=0.65\paperheight,
- keepaspectratio}
-\begin{document}
-\begin{markdown}
-``` dot Various formats of mathemathical formulae
-digraph tree {
- margin = 0;
- rankdir = "LR";
-
- latex -> pmml;
- latex -> cmml;
- pmml -> slt;
- cmml -> opt;
- cmml -> prefix;
- cmml -> infix;
- pmml -> mterms [style=dashed];
- cmml -> mterms;
-
- latex [label = "LaTeX"];
- pmml [label = "Presentation MathML"];
- cmml [label = "Content MathML"];
- slt [label = "Symbol Layout Tree"];
- opt [label = "Operator Tree"];
- prefix [label = "Prefix"];
- infix [label = "Infix"];
- mterms [label = "M-Terms"];
-}
-```
-\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
-a drawing of a directed graph similar to Figure 1 from the following
-conference article:
-
-> NOVOTNÝ, Vít, Petr SOJKA, Michal ŠTEFÁNIK and Dávid LUPTÁK. Three is Better
-> than One: Ensembling Math Information Retrieval Systems. *CEUR Workshop
-> Proceedings*. Thessaloniki, Greece: M. Jeusfeld c/o Redaktion Sun SITE,
-> Informatik V, RWTH Aachen., 2020, vol. 2020, No 2696, p. 1-30. ISSN 1613-0073.
-> <http://ceur-ws.org/Vol-2696/paper_235.pdf>
-
-%</manual-options>
-%<*themes-witiko-dot>
-% \fi
-% \begin{macrocode}
-\ProvidesPackage{markdownthemewitiko_dot}[2021/03/09]%
-% \end{macrocode}
-% \iffalse
-%</themes-witiko-dot>
-%<*manual-options>
-% \fi
-% \par
-% \markdownBegin
-
-\pkg{witiko/graphicx/http}
-
-: A theme that adds support for downloading images whose URL has the
- http or https protocol.
-% ``` tex
-% \documentclass{article}
-% \usepackage[import=witiko/graphicx/http]{markdown}
-% \begin{document}
-% \begin{markdown}
-% ![img](https://github.com/witiko/markdown/raw/main/markdown.png
-% "The banner of the Markdown package")
-% \end{markdown}
-% \end{document}
-% ```````
-% Typesetting the above document produces the output shown in
-% Figure <#fig:witiko/graphicx/http>.
-% ![img](https://github.com/witiko/markdown/raw/main/markdown.png
-% "The banner of the Markdown package \label{fig:witiko/graphicx/http}")
- The theme requires the \pkg{catchfile} \LaTeX{} package and a Unix-like
- operating system with GNU Coreutils `md5sum` and either GNU Wget or cURL
- installed. The theme also requires shell access unless the
- \Opt{frozenCache} plain \TeX{} option is enabled.
-
-% \markdownEnd
+% \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[import=witiko/graphicx/http]{markdown}
-\begin{document}
-\begin{markdown}
-![img](https://github.com/witiko/markdown/raw/main/markdown.png
- "The banner of the Markdown package")
-\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 image:
-
-> ![img](https://github.com/witiko/markdown/raw/main/markdown.png "The banner of the Markdown package")
-
%</manual-options>
-%<*themes-witiko-graphicx-http>
+%<*latex>
% \fi
% \begin{macrocode}
-\ProvidesPackage{markdownthemewitiko_graphicx_http}[2021/03/22]%
+\ExplSyntaxOn
+\prop_new:N
+ \g_@@_latex_built_in_themes_prop
+\ExplSyntaxOff
% \end{macrocode}
% \iffalse
-%</themes-witiko-graphicx-http>
+%</latex>
%<*manual-options>
% \fi
-% \par
% \begin{markdown}
+Built-in \LaTeX{} themes provided with the Markdown package include:
+
\pkg{witiko/markdown/defaults}
: A \LaTeX{} theme with the default definitions of token renderer prototypes
@@ -21945,8 +23191,7 @@ following image:
%<*latex>
% \fi
% \begin{macrocode}
-\AtEndOfPackage{
- \markdownLaTeXLoadedtrue
+\AtEndOfPackage{\markdownLaTeXLoadedtrue}
% \end{macrocode}
% \begin{markdown}
%
@@ -21957,23 +23202,39 @@ following image:
%
% \end{markdown}
% \begin{macrocode}
- \markdownIfOption{noDefaults}{}{
- \markdownSetup{theme=witiko/markdown/defaults}
+\ExplSyntaxOn
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_latex_tl
+ {
+ \use:c
+ { ExplSyntaxOff }
+ \AtEndOfPackage
+ {
+ \@@_if_option:nF
+ { noDefaults }
+ {
+ \@@_if_option:nTF
+ { experimental }
+ {
+ \@@_setup:n
+ { theme = witiko/markdown/defaults@experimental }
+ }
+ {
+ \@@_setup:n
+ { theme = witiko/markdown/defaults }
+ }
+ }
+ }
+ \use:c
+ { ExplSyntaxOn }
}
-}
+\ExplSyntaxOff
% \end{macrocode}
% \iffalse
%</latex>
-%<*themes-witiko-markdown-defaults-latex>
-% \fi
-% \begin{macrocode}
-\ProvidesPackage{markdownthemewitiko_markdown_defaults}[2024/01/03]%
-% \end{macrocode}
-% \iffalse
-%</themes-witiko-markdown-defaults-latex>
%<*context>
% \fi
-% \par
% \begin{markdown}
%
% Please, see Section <#sec:latex-themes-implementation> for implementation
@@ -22069,7 +23330,6 @@ following text:
\do\#\do\^\do\_\do\%\do\~}%
\input markdown/markdown
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \Hologo{ConTeXt} interface is implemented by the
@@ -22080,30 +23340,35 @@ following text:
% \noindent It is expected that the special plain \TeX{} characters have the
% expected category codes, when `\input`ting the file.
%
-%### 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} macro.
+%### Typesetting Markdown and YAML
+%
+% The interface exposes the \mdef{startmarkdown}, \mdef{stopmarkdown},
+% \mdef{startyaml}, \mdef{stopyaml}, \mdef{inputmarkdown}, and \mdef{inputyaml}
+% macros.
+%
+%#### Typesetting Markdown and YAML directly
+%
+% The \mref{startmarkdown} and \mref{stopmarkdown} macros are aliases for the
+% macros \mref{markdownBegin} and \mref{markdownEnd} exposed by the plain
+% \TeX{} interface.
%
% \end{markdown}
% \begin{macrocode}
\let\startmarkdown\relax
\let\stopmarkdown\relax
-\let\inputmarkdown\relax
% \end{macrocode}
-% \par
% \begin{markdown}
%
% You may prepend your own code to the \mref{startmarkdown} macro and redefine the
% \mref{stopmarkdown} macro to produce special effects before and after the
% markdown block.
%
-% Note that the \mref{startmarkdown} and \mref{stopmarkdown} macros
-% are subject to the same limitations as the \mref{markdownBegin} and
-% \mref{markdownEnd} macros exposed by the plain \TeX{} interface.
+% The macros \mref{startmarkdown} and \mref{stopmarkdown} are subject to the
+% same limitations as the \mref{markdownBegin} and \mref{markdownEnd} macros.
%
% The following example \Hologo{ConTeXt} code showcases the usage of the
% \mref{startmarkdown} and \mref{stopmarkdown} macros:
+%
% ``` tex
% \usemodule[t][markdown]
% \starttext
@@ -22113,22 +23378,114 @@ following text:
% \stoptext
% ```````
%
-% The \mref{inputmarkdown} macro accepts a single mandatory parameter
-% containing the filename of a markdown document and expands to the result of
-% the conversion of the input markdown document to plain \TeX{}. Unlike the
-% \mref{markdownInput} macro provided by the plain \TeX{} interface, this macro
-% also accepts \Hologo{ConTeXt} interface options (see Section
-% <#sec:context-options>) as its optional argument. These options will only
-% influnce this markdown document.
+% The \mref{startyaml} and \mref{stopyaml} macros are aliases for the macros
+% \mref{yamlBegin} and \mref{yamlEnd} exposed by the plain \TeX{} interface.
+%
+% \end{markdown}
+% \begin{macrocode}
+\let\startyaml\relax
+\let\stopyaml\relax
+% \end{macrocode}
+% \begin{markdown}
+%
+% You may prepend your own code to the \mref{startyaml} macro and append your
+% own code to the \mref{stopyaml} macro to produce special effects before and
+% after the \acro{YAML} document.
+%
+% The macros \mref{startyaml} and \mref{stopyaml} are subject to the same
+% limitations as the \mref{markdownBegin} and \mref{markdownEnd} macros.
+%
+% The following example \Hologo{ConTeXt} code showcases the usage of the
+% \mref{startyaml} and \mref{stopyaml} macros:
+%
+% ``` tex
+% \usemodule[t][markdown]
+% \starttext
+% \startyaml
+% title: _Hello_ **world** ...
+% author: John Doe
+% \stopyaml
+% \stoptext
+% ```````
+%
+% The above code has the same effect as the below code:
+%
+% ``` tex
+% \usemodule[t][markdown]
+% \starttext
+% \setupyaml[jekyllData, expectJekyllData, ensureJekyllData]
+% \startyaml
+% title: _Hello_ **world** ...
+% author: John Doe
+% \stopyaml
+% \stoptext
+% ```````
+%
+%#### Typesetting Markdown and YAML from external documents
+%
+% The \mref{inputmarkdown} macro aliases the macro \mref{markdownInput} exposed
+% by the plain \TeX{} interface.
+%
+% \end{markdown}
+% \begin{macrocode}
+\let\inputmarkdown\relax
+% \end{macrocode}
+% \begin{markdown}
+%
+% Furthermore, the \mref{inputmarkdown} macro also accepts \Hologo{ConTeXt}
+% interface options (see Section <#sec:context-options>) as its optional
+% argument. These options will only influence this markdown document.
+%
+% The following example \Hologo{ConTeXt} code showcases the usage of the
+% \mref{inputmarkdown} macro:
%
-% The following example \LaTeX{} code showcases the usage of the
-% \mref{markdownInput} macro:
% ``` tex
% \usemodule[t][markdown]
% \starttext
-% % ...
% \inputmarkdown[smartEllipses]{hello.md}
-% % ...
+% \stoptext
+% ```````
+%
+% The above code has the same effect as the below code:
+%
+% ``` tex
+% \usemodule[t][markdown]
+% \starttext
+% \setupmarkdown[smartEllipses]
+% \inputmarkdown{hello.md}
+% \stoptext
+% ```````
+%
+% The \mref{inputyaml} macro aliases the macro \mref{yamlInput} exposed by the
+% plain \TeX{} interface.
+%
+% \end{markdown}
+% \begin{macrocode}
+\let\inputyaml\relax
+% \end{macrocode}
+% \begin{markdown}
+%
+% Furthermore, the \mref{inputyaml} macro also accepts \Hologo{ConTeXt}
+% interface options (see Section <#sec:context-options>) as its optional
+% argument. These options will only influence this \acro{YAML} document.
+%
+% The following example \Hologo{ConTeXt} code showcases the usage of the
+% \mref{inputyaml} macro:
+%
+% ``` tex
+% \usemodule[t][markdown]
+% \starttext
+% \inputyaml[smartEllipses]{hello.yml}
+% \stoptext
+% ```````
+%
+% The above code has the same effect as the below code:
+%
+% ``` tex
+% \usemodule[t][markdown]
+% \starttext
+% \setupyaml[smartEllipses]
+% \inputyaml{hello.yml}
% \stoptext
% ```````
%
@@ -22158,7 +23515,17 @@ following text:
\@@_setup:n
{ #1 }
}
-\ExplSyntaxOff
+% \end{macrocode}
+% \begin{markdown}
+%
+% The command \mdef{setupyaml} is also available as an alias for
+% the command \mref{setupmarkdown}.
+%
+% \end{markdown}
+% \begin{macrocode}
+\cs_gset_eq:NN
+ \setupyaml
+ \setupmarkdown
% \end{macrocode}
% \begin{markdown}
%
@@ -22169,7 +23536,6 @@ following text:
%
% \end{markdown}
% \begin{macrocode}
-\ExplSyntaxOn
\cs_new:Nn \@@_caseless:N
{
\regex_replace_all:nnN
@@ -22187,7 +23553,7 @@ following text:
% 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
+% option, token renderer, and token renderer prototype macros and key--values
% immediately. Otherwise, we postpone the definition until the upper layers
% have been loaded.
%
@@ -22201,23 +23567,26 @@ following text:
\@@_define_renderers:
\@@_define_renderer_prototypes:
}
-\ExplSyntaxOff
% \end{macrocode}
% \iffalse
%</context>
%<*manual-options>
% \fi
% \begin{markdown}
-
-### Themes
-
+%
+%### Themes {#contextthemes}
+% \iffalse
+### \Hologo{ConTeXt}
+#### Themes {#contextthemes}
+% \fi
+%
% 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
+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.
@@ -22238,6 +23607,26 @@ For example, to load a theme named `witiko/tilde` in your document:
\setupmarkdown[import=witiko/tilde]
```````
+% We also define the prop \mdef{g_@@_context_built_in_themes_prop} that
+% contains the code of built-in themes. This is a packaging optimization,
+% so that built-in themes does not need to be distributed in many small files.
+%
+% \end{markdown}
+% \iffalse
+%</manual-options>
+%<*context>
+% \fi
+% \begin{macrocode}
+\prop_new:N
+ \g_@@_context_built_in_themes_prop
+\ExplSyntaxOff
+% \end{macrocode}
+% \iffalse
+%</context>
+%<*manual-options>
+% \fi
+% \begin{markdown}
+
Built-in \Hologo{ConTeXt} themes provided with the Markdown package include:
\pkg{witiko/markdown/defaults}
@@ -22249,14 +23638,14 @@ Built-in \Hologo{ConTeXt} themes provided with the Markdown package include:
% \end{markdown}
% \iffalse
%</manual-options>
-%<*themes-witiko-markdown-defaults-context>
+%<*themes-witiko-markdown-defaults-ctx>
% \fi
% \begin{macrocode}
\startmodule[markdownthemewitiko_markdown_defaults]
\unprotect
% \end{macrocode}
% \iffalse
-%</themes-witiko-markdown-defaults-context>
+%</themes-witiko-markdown-defaults-ctx>
%<*manual-options>
% \fi
% \begin{markdown}
@@ -22307,7 +23696,6 @@ 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.Cp, lpeg.P(1)
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Utility Functions
@@ -22317,10 +23705,17 @@ local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, Cp, any =
% `lunamark/util.lua` file in the Lunamark Lua module.
%
% \end{markdown}
+% \iffalse
+%</lua>
+%<*lua,lua-loader>
+% \fi
% \begin{macrocode}
local util = {}
% \end{macrocode}
-% \par
+% \iffalse
+%</lua,lua-loader>
+%<*lua>
+% \fi
% \begin{markdown}
%
% The \luamdef{util.err} method prints an error message `msg` and exits.
@@ -22334,13 +23729,16 @@ function util.err(msg, exit_code)
os.exit(exit_code or 1)
end
% \end{macrocode}
-% \par
+% \iffalse
+%</lua>
+%<*lua,lua-loader>
+% \fi
% \begin{markdown}
%
-% The \luamdef{util.cache} method computes the digest of `string` and
-% `salt`, adds the `suffix` and looks into the directory `dir`, whether a
-% file with such a name exists. If it does not, it gets created with
-% `transform(string)` as its content. The filename is then returned.
+% The \luamdef{util.cache} method used `dir`, `string`, `salt`, and `suffix`
+% to determine a pathname. If a file with such a pathname does not exists,
+% it gets created with `transform(string)` as its content. Regardless, the
+% pathname is then returned.
%
% \end{markdown}
% \begin{macrocode}
@@ -22348,7 +23746,7 @@ function util.cache(dir, string, salt, transform, suffix)
local digest = md5.sumhexa(string .. (salt or ""))
local name = util.pathname(dir, digest .. suffix)
local file = io.open(name, "r")
- if file == nil then -- If no cache entry exists, then create a new one.
+ if file == nil then -- If no cache entry exists, create a new one.
file = assert(io.open(name, "w"),
[[Could not open file "]] .. name .. [[" for writing]])
local result = string
@@ -22361,7 +23759,10 @@ function util.cache(dir, string, salt, transform, suffix)
return name
end
% \end{macrocode}
-% \par
+% \iffalse
+%</lua,lua-loader>
+%<*lua>
+% \fi
% \begin{markdown}
%
% The \luamdef{util.cache_verbatim} method strips whitespaces from the
@@ -22375,7 +23776,6 @@ function util.cache_verbatim(dir, string)
return name
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{util.table_copy} method creates a shallow copy of a table `t`
@@ -22389,7 +23789,6 @@ function util.table_copy(t)
return setmetatable(u, getmetatable(t))
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{util.encode_json_string} method encodes a string `s` in
@@ -22403,7 +23802,6 @@ function util.encode_json_string(s)
return [["]] .. s .. [["]]
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{util.expand_tabs_in_line} expands tabs in string `s`. If
@@ -22423,7 +23821,6 @@ function util.expand_tabs_in_line(s, tabstop)
end))
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{util.walk} method walks a rope `t`, applying a function `f`
@@ -22456,7 +23853,6 @@ function util.walk(t, f)
end
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{util.flatten} method flattens an array `ary` that does not
@@ -22478,7 +23874,6 @@ function util.flatten(ary)
return new
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{util.rope_to_string} method converts a rope `rope` to a
@@ -22493,7 +23888,6 @@ function util.rope_to_string(rope)
return table.concat(buffer)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{util.rope_last} method retrieves the last item in a rope. For
@@ -22514,7 +23908,6 @@ function util.rope_last(rope)
end
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Given an array `ary` and a string `x`, the \luamdef{util.intersperse}
@@ -22536,7 +23929,6 @@ function util.intersperse(ary, x)
return new
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Given an array `ary` and a function `f`, the \luamdef{util.map} method
@@ -22553,13 +23945,12 @@ function util.map(ary, f)
return new
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Given a table `char_escapes` mapping escapable characters to escaped
% strings and optionally a table `string_escapes` mapping escapable strings
% to escaped strings, the \luamdef{util.escaper} method returns an escaper
-% function that escapes all occurances of escapable strings and characters (in
+% function that escapes all occurrences of escapable strings and characters (in
% this order).
%
% The method uses \pkg{LPeg}, which is faster than the Lua `string.gsub`
@@ -22588,7 +23979,7 @@ function util.escaper(char_escapes, string_escapes)
% \begin{markdown}
% If `string_escapes` is provided, turn `escapable` into the
% $$\sum^^B{(`k`, `v`)\in`string_escapes`}`P(k) / v` + `escapable`$$
-% capture that replaces any occurance of the string `k` with the string
+% capture that replaces any occurrence of the string `k` with the string
% `v` for each $(`k`, `v`)\in`string_escapes`$. Note that the pattern
% summation is not commutative and its operands are inspected in the
% summation order during the matching. As a corrolary, the strings always
@@ -22619,7 +24010,10 @@ function util.escaper(char_escapes, string_escapes)
end
end
% \end{macrocode}
-% \par
+% \iffalse
+%</lua>
+%<*lua,lua-loader>
+% \fi
% \begin{markdown}
%
% The \luamdef{util.pathname} method produces a pathname out of a directory
@@ -22635,7 +24029,54 @@ function util.pathname(dir, file)
end
end
% \end{macrocode}
-% \par
+% \begin{markdown}
+%
+% The \luamdef{util.salt} method produces cryptographic salt out of a table of
+% options `options`.
+%
+% \end{markdown}
+% \begin{macrocode}
+function util.salt(options)
+ local opt_string = {}
+ for k, _ in pairs(defaultOptions) do
+ local v = options[k]
+ if type(v) == "table" then
+ for _, i in ipairs(v) do
+ opt_string[#opt_string+1] = k .. "=" .. tostring(i)
+ end
+% \end{macrocode}
+% \begin{markdown}
+%
+% The \Opt{cacheDir} option is disregarded.
+%
+% \end{markdown}
+% \begin{macrocode}
+ elseif k ~= "cacheDir" then
+ opt_string[#opt_string+1] = k .. "=" .. tostring(v)
+ end
+ end
+ table.sort(opt_string)
+ local salt = table.concat(opt_string, ",")
+ .. "," .. metadata.version
+ return salt
+end
+% \end{macrocode}
+% \begin{markdown}
+%
+% The \luamdef{util.warning} method produces a warning `s` that is unrelated to
+% any specific markdown text being processed. For warnings that are specific to
+% a markdown text, use \luamref{writer->warning} function.
+%
+% \end{markdown}
+% \begin{macrocode}
+function util.warning(s)
+ io.stderr:write("Warning: " .. s .. "\n")
+end
+% \end{macrocode}
+% \iffalse
+%</lua,lua-loader>
+%<*lua>
+% \fi
% \begin{markdown}
%
%### HTML Entities
@@ -24776,7 +26217,6 @@ local character_entities = {
["zopf"] = 120171,
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Given a string `s` of decimal digits, the \luamdef{entities.dec_entity}
@@ -24792,7 +26232,6 @@ function entities.dec_entity(s)
return unicode.utf8.char(n)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Given a string `s` of hexadecimal digits, the
@@ -24809,7 +26248,6 @@ function entities.hex_entity(s)
return unicode.utf8.char(n)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Given a captured character `x` and a string `s` of hexadecimal digits, the
@@ -24826,7 +26264,6 @@ function entities.hex_entity_with_x_char(x, s)
return unicode.utf8.char(n)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Given a character entity name `s` (like `ouml`), the
@@ -24850,7 +26287,6 @@ function entities.char_entity(s)
return table.concat(char_table)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Plain \TeX{} Writer {#tex-writer}
@@ -24871,7 +26307,6 @@ end
% \begin{macrocode}
M.writer = {}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{writer.new} method creates and returns a new \TeX{} writer
@@ -24889,7 +26324,6 @@ M.writer = {}
function M.writer.new(options)
local self = {}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Make `options` available as \luamdef{writer->options}, so that it is
@@ -24899,7 +26333,6 @@ function M.writer.new(options)
% \begin{macrocode}
self.options = options
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->flatten\_inlines}, which indicates whether or not the
@@ -24911,7 +26344,6 @@ function M.writer.new(options)
% \begin{macrocode}
self.flatten_inlines = false
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Parse the \Opt{slice} option and define \luamdef{writer->slice\_begin},
@@ -24951,16 +26383,6 @@ function M.writer.new(options)
self.is_writing = false
end
% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% Define \luamdef{writer->suffix} as the suffix of the produced cache files.
-%
-% \end{markdown}
-% \begin{macrocode}
- self.suffix = ".tex"
-% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->space} as the output format of a space character.
@@ -24969,7 +26391,6 @@ function M.writer.new(options)
% \begin{macrocode}
self.space = " "
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->nbsp} as the output format of a non-breaking space
@@ -24979,7 +26400,6 @@ function M.writer.new(options)
% \begin{macrocode}
self.nbsp = "\\markdownRendererNbsp{}"
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->plain} as a function that will transform an input
@@ -24991,7 +26411,6 @@ function M.writer.new(options)
return s
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->paragraph} as a function that will transform an
@@ -25004,20 +26423,6 @@ function M.writer.new(options)
return s
end
% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% Define \luamdef{writer->pack} as a function that will take the filename
-% `name` of the output file prepared by the reader and transform it to the
-% output format.
-%
-% \end{markdown}
-% \begin{macrocode}
- function self.pack(name)
- return [[\input{]] .. name .. [[}\relax]]
- end
-% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->interblocksep} as the output format of a block
@@ -25031,7 +26436,6 @@ function M.writer.new(options)
return self.interblocksep_text
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->paragraphsep} as the output format of a paragraph
@@ -25047,7 +26451,6 @@ function M.writer.new(options)
return self.paragraphsep_text
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->undosep} as a function that will remove the output
@@ -25061,7 +26464,6 @@ function M.writer.new(options)
return self.undosep_text
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->soft_line_break} as the output format of a soft
@@ -25074,7 +26476,6 @@ function M.writer.new(options)
return "\\markdownRendererSoftLineBreak\n{}"
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->hard_line_break} as the output format of a hard
@@ -25087,7 +26488,6 @@ function M.writer.new(options)
return "\\markdownRendererHardLineBreak\n{}"
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->ellipsis} as the output format of an ellipsis.
@@ -25096,7 +26496,6 @@ function M.writer.new(options)
% \begin{macrocode}
self.ellipsis = "\\markdownRendererEllipsis{}"
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->thematic_break} as the output format of a thematic
@@ -25109,7 +26508,6 @@ function M.writer.new(options)
return "\\markdownRendererThematicBreak{}"
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define tables \luamdef{writer->escaped_uri_chars} and
@@ -25123,16 +26521,19 @@ function M.writer.new(options)
["{"] = "\\markdownRendererLeftBrace{}",
["}"] = "\\markdownRendererRightBrace{}",
["\\"] = "\\markdownRendererBackslash{}",
+ ["\r"] = " ",
+ ["\n"] = " ",
}
self.escaped_minimal_strings = {
- ["^^"] = "\\markdownRendererCircumflex\\markdownRendererCircumflex ",
+ ["^^"] = "\\markdownRendererCircumflex"
+ .. "\\markdownRendererCircumflex ",
["☒"] = "\\markdownRendererTickedBox{}",
["⌛"] = "\\markdownRendererHalfTickedBox{}",
["☐"] = "\\markdownRendererUntickedBox{}",
- [entities.hex_entity('FFFD')] = "\\markdownRendererReplacementCharacter{}",
+ [entities.hex_entity('FFFD')]
+ = "\\markdownRendererReplacementCharacter{}",
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define table \luamdef{writer->escaped_strings} containing the mapping from
@@ -25143,7 +26544,6 @@ function M.writer.new(options)
self.escaped_strings = util.table_copy(self.escaped_minimal_strings)
self.escaped_strings[entities.hex_entity('00A0')] = self.nbsp
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define a table \luamdef{writer->escaped_chars} containing the mapping from
@@ -25164,17 +26564,17 @@ function M.writer.new(options)
["^"] = "\\markdownRendererCircumflex{}",
["~"] = "\\markdownRendererTilde{}",
["|"] = "\\markdownRendererPipe{}",
- [entities.hex_entity('0000')] = "\\markdownRendererReplacementCharacter{}",
+ [entities.hex_entity('0000')]
+ = "\\markdownRendererReplacementCharacter{}",
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Use the \luamref{writer->escaped_chars}, \luamref{writer->escaped_uri_chars},
% and \luamref{writer->escaped_minimal_strings} tables to create the
-% \luamdef{writer->escape_typographic_text},
-% \luamdef{writer->escape_programmatic_text}, and
-% \luamdef{writer->escape_minimal} escaper functions.
+% \luamdef{escape_typographic_text},
+% \luamdef{escape_programmatic_text}, and
+% \luamdef{escape_minimal} local escaper functions.
%
% \end{markdown}
% \begin{macrocode}
@@ -25192,7 +26592,6 @@ function M.writer.new(options)
local escape_minimal = create_escaper(
{}, self.escaped_minimal_strings)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define the following semantic aliases for the escaper functions:
@@ -25223,7 +26622,32 @@ function M.writer.new(options)
self.infostring = escape_programmatic_text
end
% \end{macrocode}
-% \par
+% \begin{markdown}
+%
+% Define \luamdef{writer->warning} as a function that will transform an input
+% warning `t` with optional more warning text `m` to the output format.
+%
+% \end{markdown}
+% \begin{macrocode}
+ function self.warning(t, m)
+ return {"\\markdownRendererWarning{", self.escape(t), "}{",
+ escape_minimal(t), "}{", self.escape(m or ""), "}{",
+ escape_minimal(m or ""), "}"}
+ end
+% \end{macrocode}
+% \begin{markdown}
+%
+% Define \luamdef{writer->error} as a function that will transform an input
+% error text `t` with optional more error text `m` to the output format.
+%
+% \end{markdown}
+% \begin{macrocode}
+ function self.error(t, m)
+ return {"\\markdownRendererError{", self.escape(t), "}{",
+ escape_minimal(t), "}{", self.escape(m or ""), "}{",
+ escape_minimal(m or ""), "}"}
+ end
+% \end{macrocode}
% \begin{markdown}
%
% Define \luamdef{writer->code} as a function that will transform an input
@@ -25249,7 +26673,6 @@ function M.writer.new(options)
return buf
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->link} as a function that will transform an input
@@ -25278,7 +26701,6 @@ function M.writer.new(options)
return buf
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->image} as a function that will transform an input
@@ -25307,7 +26729,6 @@ function M.writer.new(options)
return buf
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->bulletlist} as a function that will transform an input
@@ -25347,7 +26768,6 @@ function M.writer.new(options)
"\\markdownRendererUlItemEnd "}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->orderedlist} as a function that will transform an
@@ -25399,7 +26819,6 @@ function M.writer.new(options)
end
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->inline_html_comment} as a function that will
@@ -25413,7 +26832,6 @@ function M.writer.new(options)
return {"\\markdownRendererInlineHtmlComment{",contents,"}"}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->inline_html_tag} as a function that will
@@ -25425,10 +26843,10 @@ function M.writer.new(options)
% \begin{macrocode}
function self.inline_html_tag(contents)
if self.flatten_inlines then return contents end
- return {"\\markdownRendererInlineHtmlTag{",self.string(contents),"}"}
+ return {"\\markdownRendererInlineHtmlTag{",
+ self.string(contents),"}"}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->block_html_element} as a function that will
@@ -25443,7 +26861,6 @@ function M.writer.new(options)
return {"\\markdownRendererInputBlockHtmlElement{",name,"}"}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->emphasis} as a function that will transform an
@@ -25456,7 +26873,6 @@ function M.writer.new(options)
return {"\\markdownRendererEmphasis{",s,"}"}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->tickbox} as a function that will transform a
@@ -25474,7 +26890,6 @@ function M.writer.new(options)
end
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->strong} as a function that will transform a strongly
@@ -25487,7 +26902,6 @@ function M.writer.new(options)
return {"\\markdownRendererStrongEmphasis{",s,"}"}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->blockquote} as a function that will transform an
@@ -25501,7 +26915,6 @@ function M.writer.new(options)
"\\markdownRendererBlockQuoteEnd "}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->verbatim} as a function that will transform an
@@ -25516,7 +26929,6 @@ function M.writer.new(options)
return {"\\markdownRendererInputVerbatim{",name,"}"}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->document} as a function that will transform a
@@ -25525,7 +26937,23 @@ function M.writer.new(options)
% \end{markdown}
% \begin{macrocode}
function self.document(d)
- local buf = {"\\markdownRendererDocumentBegin\n", d}
+ local buf = {"\\markdownRendererDocumentBegin\n"}
+
+ -- warn against the `hybrid` option
+ if options.hybrid then
+ local text = "The `hybrid` option has been soft-deprecated."
+ local more = "Consider using one of the following better options "
+ .. "for mixing TeX and markdown: `contentBlocks`, "
+ .. "`rawAttribute`, `texComments`, `texMathDollars`, "
+ .. "`texMathSingleBackslash`, and "
+ .. "`texMathDoubleBackslash`. "
+ .. "For more information, see the user manual at "
+ .. "<https://witiko.github.io/markdown/>."
+ table.insert(buf, self.warning(text, more))
+ end
+
+ -- insert the text of the document
+ table.insert(buf, d)
-- pop all attributes
table.insert(buf, self.pop_attributes())
@@ -25535,7 +26963,6 @@ function M.writer.new(options)
return buf
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->attributes} as a function that will transform
@@ -25645,7 +27072,6 @@ function M.writer.new(options)
return buf
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->active\_attributes} as a stack of block-level
@@ -25656,7 +27082,6 @@ function M.writer.new(options)
% \begin{macrocode}
self.active_attributes = {}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->attribute\_type\_levels} as a hash table that
@@ -25669,7 +27094,6 @@ function M.writer.new(options)
setmetatable(self.attribute_type_levels,
{ __index = function() return 0 end })
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->push\_attributes} and
@@ -25716,8 +27140,10 @@ 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
+ 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 {}
@@ -25772,8 +27198,10 @@ 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
+ 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
@@ -25807,7 +27235,8 @@ function M.writer.new(options)
local prev_space = false
local letter_found = false
local normalized_s = s
- if not options.unicodeNormalization or options.unicodeNormalizationForm ~= "nfc" then
+ if not options.unicodeNormalization
+ or options.unicodeNormalizationForm ~= "nfc" then
normalized_s = uni_algos.normalize.NFC(normalized_s)
end
@@ -25824,7 +27253,8 @@ function M.writer.new(options)
end
end
- -- Remove all non-alphanumeric characters, except underscores, hyphens, and periods.
+ -- Remove all non-alphanumeric characters, except underscores,
+ -- hyphens, and periods.
if not unicode.utf8.match(char, "[%w_%-%.%s]") then
goto continue
end
@@ -25852,7 +27282,8 @@ function M.writer.new(options)
table.remove(buffer)
end
- local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
+ local identifier = #buffer == 0 and "section"
+ or table.concat(buffer, "")
return identifier
end
% \end{macrocode}
@@ -25867,7 +27298,8 @@ function M.writer.new(options)
local prev_space = false
local letter_found = false
local normalized_s = s
- if not options.unicodeNormalization or options.unicodeNormalizationForm ~= "nfc" then
+ if not options.unicodeNormalization
+ or options.unicodeNormalizationForm ~= "nfc" then
normalized_s = uni_algos.normalize.NFC(normalized_s)
end
@@ -25884,7 +27316,8 @@ function M.writer.new(options)
end
end
- -- Remove all non-alphanumeric characters, except underscores and hyphens.
+ -- Remove all non-alphanumeric characters, except underscores
+ -- and hyphens.
if not unicode.utf8.match(char, "[%w_%-%s]") then
prev_space = false
goto continue
@@ -25913,11 +27346,11 @@ function M.writer.new(options)
table.remove(buffer)
end
- local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
+ local identifier = #buffer == 0 and "section"
+ or table.concat(buffer, "")
return identifier
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->heading} as a function that will transform an
@@ -25952,9 +27385,11 @@ function M.writer.new(options)
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))
+ table.insert(auto_identifiers,
+ create_gfm_auto_identifier(flat_text))
end
- local normalized_attributes = normalize_attributes(attributes, auto_identifiers)
+ local normalized_attributes = normalize_attributes(attributes,
+ auto_identifiers)
-- push attributes for the new section
local start_output = {}
@@ -25970,7 +27405,8 @@ function M.writer.new(options)
-- render the heading and its attributes
if self.is_writing and #normalized_attributes > 0 then
- table.insert(buf, "\\markdownRendererHeaderAttributeContextBegin\n")
+ table.insert(buf,
+ "\\markdownRendererHeaderAttributeContextBegin\n")
table.insert(buf, self.attributes(normalized_attributes, false))
end
@@ -26002,7 +27438,6 @@ function M.writer.new(options)
return buf
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->get_state} as a function that returns the current
@@ -26019,7 +27454,6 @@ function M.writer.new(options)
}
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->set_state} as a function that restores the input
@@ -26035,7 +27469,6 @@ function M.writer.new(options)
return previous_state
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->defer_call} as a function that will encapsulate the
@@ -26057,7 +27490,6 @@ function M.writer.new(options)
return self
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Parsers
@@ -26068,7 +27500,6 @@ end
% \begin{macrocode}
local parsers = {}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Basic Parsers
@@ -26128,8 +27559,12 @@ parsers.fail = P(false)
parsers.internal_punctuation = S(":;,.?")
parsers.ascii_punctuation = S("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")
+
% \end{macrocode}
-% \par
+% \iffalse
+%</lua>
+%<*lua-unicode-data-generator>
+% \fi
% \begin{markdown}
%
%### Unicode punctuation
@@ -26141,36 +27576,143 @@ parsers.ascii_punctuation = S("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")
% [unicode-punctuation]: https://spec.commonmark.org/0.31.2/#unicode-punctuation-character
% (CommonMark Spec, Version 0.31.2 (2024-01-28))
%
+% All code from this section will be executed during the compilation of
+% the Markdown package and the standard output will be stored in a file
+% named `markdown-unicode-data.lua` with the precompiled parser of Unicode
+% punctuation.
+%
% \end{markdown}
% \begin{macrocode}
-parsers.punctuation = {}
-(function()
- local pathname = kpse.lookup("UnicodeData.txt")
+;(function()
+ local pathname = assert(kpse.find_file("UnicodeData.txt"),
+ [[Could not locate file "UnicodeData.txt"]])
local file = assert(io.open(pathname, "r"),
[[Could not open file "UnicodeData.txt"]])
+% \end{macrocode}
+% \begin{markdown}
+%
+% In order to minimize the size and speed of the parser, we will first
+% construct a prefix tree of UTF-8 encodings for all codepoints of a
+% given code length.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local prefix_trees = {}
for line in file:lines() do
local codepoint, major_category = line:match("^(%x+);[^;]*;(%a)")
if major_category == "P" or major_category == "S" then
local code = unicode.utf8.char(tonumber(codepoint, 16))
- if parsers.punctuation[#code] == nil then
- parsers.punctuation[#code] = parsers.fail
+ if prefix_trees[#code] == nil then
+ prefix_trees[#code] = {}
end
- local code_parser = parsers.succeed
+ local node = prefix_trees[#code]
for i = 1, #code do
local byte = code:sub(i, i)
- local byte_parser = S(byte)
- code_parser = code_parser
- * byte_parser
+ if i < #code then
+ if node[byte] == nil then
+ node[byte] = {}
+ end
+ node = node[byte]
+ else
+ table.insert(node, byte)
+ end
end
- parsers.punctuation[#code] = parsers.punctuation[#code]
- + code_parser
end
end
assert(file:close())
+
+% \end{macrocode}
+% \begin{markdown}
+%
+% Next, we will construct a parser out of the prefix tree.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local function depth_first_search(node, path, visit, leave)
+ visit(node, path)
+ for label, child in pairs(node) do
+ if type(child) == "table" then
+ depth_first_search(child, path .. label, visit, leave)
+ else
+ visit(child, path)
+ end
+ end
+ leave(node, path)
+ end
+
+ print("M.punctuation = {}")
+ print("local P = lpeg.P")
+ print("-- luacheck: push no max line length")
+ for length, prefix_tree in pairs(prefix_trees) do
+ local subparsers = {}
+ depth_first_search(prefix_tree, "", function(node, path)
+ if type(node) == "string" then
+ local suffix
+ if node == "]" then
+ suffix = "P('" .. node .. "')"
+ else
+ suffix = "P([[" .. node .. "]])"
+ end
+ if subparsers[path] ~= nil then
+ subparsers[path] = subparsers[path] .. " + " .. suffix
+ else
+ subparsers[path] = suffix
+ end
+ end
+ end, function(_, path)
+ if #path > 0 then
+ local byte = path:sub(#path, #path)
+ local parent_path = path:sub(1, #path-1)
+ local prefix
+ if byte == "]" then
+ prefix = "P('" .. byte .. "')"
+ else
+ prefix = "P([[" .. byte .. "]])"
+ end
+ local suffix
+ if subparsers[path]:find(" %+ ") then
+ suffix = prefix .. " * (" .. subparsers[path] .. ")"
+ else
+ suffix = prefix .. " * " .. subparsers[path]
+ end
+ if subparsers[parent_path] ~= nil then
+ subparsers[parent_path] = subparsers[parent_path]
+ .. " + " .. suffix
+ else
+ subparsers[parent_path] = suffix
+ end
+ else
+ print("M.punctuation[" .. length .. "] = " .. subparsers[path])
+ end
+ end)
+ end
+ print("-- luacheck: pop")
end)()
+print("return M")
+% \end{macrocode}
+% \iffalse
+%</lua-unicode-data-generator>
+%<*lua>
+% \fi
+% \begin{markdown}
+%
+% Back in the Markdown package, we will load the precompiled parser of
+% Unicode punctuation.
+%
+% \end{markdown}
+% \begin{macrocode}
+local unicode_data = require("markdown-unicode-data")
+if metadata.version ~= unicode_data.metadata.version then
+ util.warning(
+ "markdown.lua " .. metadata.version .. " used with " ..
+ "markdown-unicode-data.lua " .. unicode_data.metadata.version .. "."
+ )
+end
+parsers.punctuation = unicode_data.punctuation
parsers.escapable = parsers.ascii_punctuation
-parsers.anyescaped = parsers.backslash / "" * parsers.escapable
+parsers.anyescaped = parsers.backslash / ""
+ * parsers.escapable
+ parsers.any
parsers.spacechar = S("\t ")
@@ -26189,18 +27731,21 @@ parsers.linechar = P(1 - parsers.newline)
parsers.blankline = parsers.optionalspace
* parsers.newline / "\n"
parsers.blanklines = parsers.blankline^0
-parsers.skipblanklines = (parsers.optionalspace * parsers.newline)^0
+parsers.skipblanklines = ( parsers.optionalspace
+ * parsers.newline)^0
parsers.indentedline = parsers.indent /""
- * C(parsers.linechar^1 * parsers.newline^-1)
+ * C( parsers.linechar^1
+ * parsers.newline^-1)
parsers.optionallyindentedline = parsers.indent^-1 /""
- * C(parsers.linechar^1 * parsers.newline^-1)
+ * C( parsers.linechar^1
+ * parsers.newline^-1)
parsers.sp = parsers.spacing^0
parsers.spnl = parsers.optionalspace
- * (parsers.newline * parsers.optionalspace)^-1
+ * ( parsers.newline
+ * parsers.optionalspace)^-1
parsers.line = parsers.linechar^0 * parsers.newline
parsers.nonemptyline = parsers.line - parsers.blankline
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Parsers Used for Indentation
@@ -26279,7 +27824,8 @@ local function update_indent_table(indent_table, new_indent, add)
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
+ if indent_table.indents[#indent_table.indents].name
+ == new_indent.name then
indent_table.indents[#indent_table.indents] = nil
end
end
@@ -26295,10 +27841,12 @@ end
% \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
+ local remove_indent_level =
+ function(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
@@ -26314,7 +27862,8 @@ end
%
% \end{markdown}
% \begin{macrocode}
-local function process_starter_spacing(indent, spacing, minimum, left_strip_length)
+local function process_starter_spacing(indent, spacing,
+ minimum, left_strip_length)
left_strip_length = left_strip_length or 0
local count = 0
@@ -26351,14 +27900,16 @@ local function process_starter_spacing(indent, spacing, minimum, left_strip_leng
minimum_remainder = minimum_remainder .. character
elseif (count >= minimum) then
minimum_found = true
- minimum_remainder = minimum_remainder .. string.rep(" ", count - minimum)
+ 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))
+ code_start = code_start
+ .. string.rep(" ", count - (minimum + 4))
end
end
end
@@ -26425,7 +27976,8 @@ end
%
% \end{markdown}
% \begin{macrocode}
-local function process_starter_indent(_, _, indent_table, starter, is_blank, indent_type, breakable)
+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]
@@ -26453,11 +28005,13 @@ local function process_starter_indent(_, _, indent_table, starter, is_blank, ind
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 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)
+ sp = process_starter_spacing(total_indent_level, raw_new_trail,
+ 0, 1)
end
local del_trail_length = sp.left_total_stripped
@@ -26467,12 +28021,17 @@ local function process_starter_indent(_, _, indent_table, starter, is_blank, ind
del_trail_length = del_trail_length + #sp.remainder
end
- local indent_length = last_trail_length + delimiter_length + del_trail_length
+ 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})
+ 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
@@ -26490,7 +28049,8 @@ local function decode_pattern(name)
delimeter = parsers.more
end
- return C(parsers.optionalspace) * C(delimeter) * C(parsers.optionalspace) * Cp()
+ return C(parsers.optionalspace) * C(delimeter)
+ * C(parsers.optionalspace) * Cp()
end
% \end{macrocode}
@@ -26531,7 +28091,8 @@ end
%
% \end{markdown}
% \begin{macrocode}
-local function traverse_indent(s, i, indent_table, is_optional, is_blank, current_line_indents)
+local function traverse_indent(s, i, indent_table, is_optional,
+ is_blank, current_line_indents)
local new_index = i
local preceding_indentation = 0
@@ -26550,12 +28111,17 @@ local function traverse_indent(s, i, indent_table, is_optional, is_blank, curren
-- 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, current_line_indents
+ 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,
+ current_line_indents
end
- return traverse_indent(s, tonumber(blankline_end.pos), indent_table, is_optional, is_blank, current_line_indents)
+ return traverse_indent(s, tonumber(blankline_end.pos),
+ indent_table, is_optional, is_blank,
+ current_line_indents)
end
local raw_last_trail = new_indent_info[1]
@@ -26568,13 +28134,15 @@ local function traverse_indent(s, i, indent_table, is_optional, is_blank, curren
-- 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,
+ 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, current_line_indents
+ return is_optional, new_index, current_trail,
+ current_line_indents
end
if current_trail.internal_remainder ~= nil then
raw_last_trail = current_trail.internal_remainder
@@ -26589,7 +28157,8 @@ local function traverse_indent(s, i, indent_table, is_optional, is_blank, curren
raw_last_trail_length = #raw_last_trail
end
- local total_indent_level = preceding_indentation + raw_last_trail_length + delimiter_length
+ local total_indent_level = preceding_indentation
+ + raw_last_trail_length + delimiter_length
local spacing_to_process
local minimum = 0
@@ -26603,13 +28172,17 @@ local function traverse_indent(s, i, indent_table, is_optional, is_blank, curren
minimum = value.length
end
- local sp = process_starter_spacing(total_indent_level, spacing_to_process, minimum, left_strip_length)
+ 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, current_line_indents
+ return is_optional or (is_blank and blank_starter <= index),
+ new_index, current_trail, current_line_indents
end
- local indent_length = raw_last_trail_length + delimiter_length + sp.left_total_stripped
+ local indent_length = raw_last_trail_length + delimiter_length
+ + sp.left_total_stripped
-- update info for the next pattern
if not space_only then
@@ -26618,8 +28191,10 @@ local function traverse_indent(s, i, indent_table, is_optional, is_blank, curren
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}
+ 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}
current_line_indents[#current_line_indents + 1] = new_indent_info
new_index = next_index
@@ -26647,34 +28222,36 @@ end
%
% \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
+local check_trail_joined =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ spacing, expect_code, omit_remainder)
+ 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
+ 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
- remainder = sp.full_remainder
+ 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
- end
- local result = check_trail(expect_code, is_code)
- if omit_remainder then
- return result
+ local result = check_trail(expect_code, is_code)
+ if omit_remainder then
+ return result
+ end
+ return result, remainder
end
- return result, remainder
-end
% \end{macrocode}
% \begin{markdown}
@@ -26683,22 +28260,24 @@ end
%
% \end{markdown}
% \begin{macrocode}
-local function check_trail_length(s, i, indent_table, spacing, min, max) -- luacheck: ignore s i
- local trail
+local check_trail_length =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ spacing, min, max)
+ local trail
- if has_trail(indent_table) then
- trail = indent_table.trail
- else
- trail = process_starter_spacing(0, spacing, 0, 0)
- end
+ 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
+ local total_length = trail.total_length
+ if total_length == nil then
+ return false
+ end
- return min <= total_length and total_length <= max
-end
+ return min <= total_length and total_length <= max
+ end
% \end{macrocode}
% \begin{markdown}
@@ -26708,7 +28287,8 @@ end
%
% \end{markdown}
% \begin{macrocode}
-local function check_continuation_indentation(s, i, indent_table, is_optional, is_blank)
+local function check_continuation_indentation(s, i, indent_table,
+ is_optional, is_blank)
if not has_indents(indent_table) then
return true
end
@@ -26761,27 +28341,29 @@ end
%
% \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
+local check_trail_type =
+ function(s, i, -- luacheck: ignore s i
+ trail, spacing, trail_type)
+ 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
+ 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
- return i, ""
- end
- if trail_type == "full-any" then
- return i, trail.internal_remainder
end
-end
% \end{macrocode}
% \begin{markdown}
@@ -26790,20 +28372,22 @@ end
%
% \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
+local trail_freezing =
+ function(s, i, -- luacheck: ignore s i
+ indent_table, is_freezing)
+ 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 = indent_table.trail
- indent_table.is_trail_frozen = true
+ indent_table.frozen_trail = nil
+ indent_table.is_trail_frozen = false
end
- else
- indent_table.frozen_trail = nil
- indent_table.is_trail_frozen = false
+ return true, indent_table
end
- return true, indent_table
-end
% \end{macrocode}
% \begin{markdown}
@@ -26814,53 +28398,59 @@ end
%
% \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
+local check_continuation_indentation_and_trail =
+ function (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
+ return new_index, remainder
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)
+ 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 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 is_blank and reset_rem then
+ remainder = remove_remainder_if_blank(indent_table, remainder)
+ end
if result then
- return new_index
+ return new_index, remainder
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}
@@ -26869,14 +28459,20 @@ end
%
% \end{markdown}
% \begin{macrocode}
-parsers.check_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false), check_trail_joined)
+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_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_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)
+ return Cmt( Cb("indent_info") * C(parsers.spacechar^0) * Cc(min)
+ * Cc(max), check_trail_length)
end
parsers.check_trail_length = function(n)
@@ -26891,9 +28487,11 @@ end
%
% \end{markdown}
% \begin{macrocode}
-parsers.freeze_trail = Cg(Cmt(Cb("indent_info") * Cc(true), trail_freezing), "indent_info")
+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.unfreeze_trail = Cg(Cmt(Cb("indent_info") * Cc(false),
+ trail_freezing), "indent_info")
% \end{macrocode}
% \begin{markdown}
@@ -26902,11 +28500,16 @@ parsers.unfreeze_trail = Cg(Cmt(Cb("indent_info") * Cc(false), trail_freezing),
%
% \end{markdown}
% \begin{macrocode}
-parsers.check_minimal_indent = Cmt(Cb("indent_info") * Cc(false), check_continuation_indentation)
+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_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_blank_indent
+ = Cmt( Cb("indent_info") * Cc(false)
+ * Cc(true)
+ , check_continuation_indentation)
% \end{macrocode}
% \begin{markdown}
@@ -26917,37 +28520,45 @@ parsers.check_minimal_blank_indent = Cmt(Cb("indent_info") * Cc(false) * Cc(true
% \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_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_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_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_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 =
+ 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_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_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.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}
@@ -26958,7 +28569,8 @@ parsers.check_optional_blank_indent_and_any_trail = Cmt( Cb("indent_info")
% \begin{macrocode}
parsers.spnlc_noexc = parsers.optionalspace
- * (parsers.newline * parsers.check_minimal_indent_and_any_trail)^-1
+ * ( parsers.newline
+ * parsers.check_minimal_indent_and_any_trail)^-1
parsers.spnlc = parsers.optionalspace
* (V("EndlineNoSub"))^-1
@@ -26966,9 +28578,10 @@ parsers.spnlc = parsers.optionalspace
parsers.spnlc_sep = parsers.optionalspace * V("EndlineNoSub")
+ parsers.spacechar^1
-parsers.only_blank = parsers.spacechar^0 * (parsers.newline + parsers.eof)
+parsers.only_blank = parsers.spacechar^0
+ * (parsers.newline + parsers.eof)
-% \end{macrocode}
+% \end{macrocode}
% \begin{figure}
% \hspace*{-0.1\textwidth}
% \begin{minipage}{1.2\textwidth}
@@ -27013,64 +28626,68 @@ parsers.commented_line_letter = parsers.linechar
+ parsers.newline
- parsers.backslash
- parsers.percent
-parsers.commented_line = Cg(Cc(""), "backslashes")
- * ((#(parsers.commented_line_letter
- - parsers.newline)
- * Cb("backslashes")
- * Cs(parsers.commented_line_letter
- - parsers.newline)^1 -- initial
- * Cg(Cc(""), "backslashes"))
- + #(parsers.backslash * parsers.backslash)
- * Cg((parsers.backslash -- even backslash
- * parsers.backslash)^1, "backslashes")
- + (parsers.backslash
- * (#parsers.percent
- * Cb("backslashes")
- / function(backslashes)
- return string.rep("\\", #backslashes / 2)
- end
- * C(parsers.percent)
- + #parsers.commented_line_letter
- * Cb("backslashes")
- * Cc("\\")
- * C(parsers.commented_line_letter))
- * Cg(Cc(""), "backslashes")))^0
- * (#parsers.percent
- * Cb("backslashes")
- / function(backslashes)
- return string.rep("\\", #backslashes / 2)
- end
- * ((parsers.percent -- comment
- * parsers.line
- * #parsers.blankline) -- blank line
- / "\n"
- + parsers.percent -- comment
- * parsers.line
- * parsers.optionalspace) -- leading tabs and spaces
- + #(parsers.newline)
- * Cb("backslashes")
- * C(parsers.newline))
-
-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
-parsers.attribute_value = ( (parsers.dquote / "")
- * (parsers.anyescaped - parsers.dquote)^0
- * (parsers.dquote / ""))
- + ( (parsers.squote / "")
- * (parsers.anyescaped - parsers.squote)^0
- * (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.commented_line = Cg(Cc(""), "backslashes")
+ * ((#(parsers.commented_line_letter
+ - parsers.newline)
+ * Cb("backslashes")
+ * Cs(parsers.commented_line_letter
+ - parsers.newline)^1 -- initial
+ * Cg(Cc(""), "backslashes"))
+ + #( parsers.backslash
+ * (parsers.backslash + parsers.newline))
+ * Cg((parsers.backslash -- even backslash
+ * ( parsers.backslash
+ + #parsers.newline))^1, "backslashes")
+ + (parsers.backslash
+ * (#parsers.percent
+ * Cb("backslashes")
+ / function(backslashes)
+ return string.rep("\\", #backslashes / 2)
+ end
+ * C(parsers.percent)
+ + #parsers.commented_line_letter
+ * Cb("backslashes")
+ * Cc("\\")
+ * C(parsers.commented_line_letter))
+ * Cg(Cc(""), "backslashes")))^0
+ * (#parsers.percent
+ * Cb("backslashes")
+ / function(backslashes)
+ return string.rep("\\", #backslashes / 2)
+ end
+ * ((parsers.percent -- comment
+ * parsers.line
+ * #parsers.blankline) -- blank line
+ / "\n"
+ + parsers.percent -- comment
+ * parsers.line
+ * parsers.optionalspace) -- leading spaces
+ + #(parsers.newline)
+ * Cb("backslashes")
+ * C(parsers.newline))
+
+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
+parsers.attribute_value = ( (parsers.dquote / "")
+ * (parsers.anyescaped - parsers.dquote)^0
+ * (parsers.dquote / ""))
+ + ( (parsers.squote / "")
+ * (parsers.anyescaped - parsers.squote)^0
+ * (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
@@ -27078,7 +28695,9 @@ parsers.attribute = (parsers.dash * Cc(".unnumbered"))
+ C( parsers.period
* parsers.attribute_classname)
+ Cs( parsers.attribute_key
- * parsers.optionalspace * parsers.equal * parsers.optionalspace
+ * parsers.optionalspace
+ * parsers.equal
+ * parsers.optionalspace
* parsers.attribute_value)
parsers.attributes = parsers.lbrace
* parsers.optionalspace
@@ -27088,7 +28707,6 @@ parsers.attributes = parsers.lbrace
* parsers.optionalspace
* parsers.rbrace
-
parsers.raw_attribute = parsers.lbrace
* parsers.optionalspace
* parsers.equal
@@ -27100,11 +28718,13 @@ parsers.raw_attribute = parsers.lbrace
-- indented blocks with first line indented.
parsers.indented_blocks = function(bl)
return Cs( bl
- * (parsers.blankline^1 * parsers.indent * -parsers.blankline * bl)^0
+ * ( parsers.blankline^1
+ * parsers.indent
+ * -parsers.blankline
+ * bl)^0
* (parsers.blankline^1 + parsers.eof) )
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Parsers Used for HTML Entities
@@ -27116,17 +28736,19 @@ local function repeat_between(pattern, min, max)
end
parsers.hexentity = parsers.ampersand * parsers.hash * C(S("Xx"))
- * C(repeat_between(parsers.hexdigit, 1, 6)) * parsers.semicolon
+ * C(repeat_between(parsers.hexdigit, 1, 6))
+ * parsers.semicolon
parsers.decentity = parsers.ampersand * parsers.hash
- * C(repeat_between(parsers.digit, 1, 7)) * parsers.semicolon
+ * 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.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
@@ -27138,7 +28760,8 @@ parsers.bullet = function(bullet_char, interrupting)
if interrupting then
allowed_end = C(parsers.spacechar^1) * #parsers.linechar
else
- allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ allowed_end = C(parsers.spacechar^1)
+ + #(parsers.newline + parsers.eof)
end
return parsers.check_trail
* Ct(C(bullet_char) * Cc(""))
@@ -27155,7 +28778,6 @@ parsers.halfticked_box = tickbox(S("./")) * Cc(0.5)
parsers.unticked_box = tickbox(parsers.spacechar^1) * Cc(0.0)
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Parsers Used for Markdown Code Spans
@@ -27189,14 +28811,14 @@ parsers.inticks = parsers.openticks
* 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
+-- 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
@@ -27278,13 +28900,14 @@ parsers.block_keyword =
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 / "")
+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*$", "")
@@ -27306,9 +28929,14 @@ parsers.html_attribute_spacing = parsers.optionalspace
* 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_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
@@ -27316,9 +28944,15 @@ parsers.html_attribute_value = 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.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")
@@ -27332,30 +28966,41 @@ parsers.html_inline_attribute_value = parsers.squote
- 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.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
+ * (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_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_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.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
@@ -27365,49 +29010,59 @@ 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_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
- - parsers.nested_breaking_blank - parsers.html_comment_end)^0)
+ * Cs(( V("NoSoftLineBreakEndline")
+ + parsers.any
+ - 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_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_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_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_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_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
+ * Cs( V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.nested_breaking_blank
+ - parsers.html_instruction_end)^0
* parsers.html_instruction_end
parsers.html_blankline = parsers.newline
@@ -27453,25 +29108,28 @@ parsers.incomplete_tag_following = parsers.spacechar
+ parsers.slash * parsers.more
+ #(parsers.newline + parsers.eof)
-parsers.incomplete_special_tag_following = parsers.spacechar
- + 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_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
+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
@@ -27509,27 +29167,33 @@ parsers.html_empty_special_tag = parsers.html_tag_start
* 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
+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_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_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_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_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
+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
@@ -27539,18 +29203,21 @@ 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_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)
+ * 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
@@ -27562,7 +29229,6 @@ parsers.html_inline_tags = parsers.html_inline_comment_full
+ parsers.html_any_close_tag
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Parsers Used for Markdown Tags and Links
@@ -27583,21 +29249,25 @@ parsers.auto_link_scheme = parsers.letter
* 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.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_local_part
+ = parsers.email_address_local_part_char^1
parsers.email_address_dns_label = parsers.alphanumeric
- * (parsers.alphanumeric + parsers.dash)^-62
+ * ( 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.period
+ * parsers.email_address_dns_label)^0
parsers.email_address = parsers.email_address_local_part
* parsers.at
@@ -27653,25 +29323,37 @@ parsers.link_text = parsers.lbracket
+ parsers.autolink
+ V("InlineHtml")
+ ( parsers.backslash * parsers.backslash)
- + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + ( parsers.backslash
+ * ( parsers.lbracket
+ + parsers.rbracket)
+ V("NoSoftLineBreakSpace")
+ V("NoSoftLineBreakEndline")
+ (parsers.any
- - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^0)
+ - ( parsers.newline
+ + parsers.lbracket
+ + parsers.rbracket
+ + parsers.blankline^2))))^0)
* parsers.rbracket
parsers.link_label_body = -#(parsers.sp * parsers.rbracket)
- * #((parsers.any - parsers.rbracket)^-999 * 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)
+ + ( parsers.backslash
+ * ( parsers.lbracket
+ + parsers.rbracket)
+ V("NoSoftLineBreakSpace")
+ V("NoSoftLineBreakEndline")
+ (parsers.any
- - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^1)
+ - ( parsers.newline
+ + parsers.lbracket
+ + parsers.rbracket
+ + parsers.blankline^2))))^1)
parsers.link_label = parsers.lbracket
* parsers.link_label_body
@@ -27701,32 +29383,40 @@ parsers.title_s = parsers.squote
* Cs((parsers.html_entities
+ V("NoSoftLineBreakSpace")
+ V("NoSoftLineBreakEndline")
- + (parsers.anyescaped - parsers.newline - parsers.squote - parsers.blankline^2))^0)
+ + ( 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.anyescaped
+ - parsers.newline
+ - parsers.dquote
+ - parsers.blankline^2))^0)
* parsers.dquote
parsers.title_p = parsers.lparent
* Cs((parsers.html_entities
+ V("NoSoftLineBreakSpace")
+ V("NoSoftLineBreakEndline")
- + (parsers.anyescaped - parsers.newline - parsers.lparent - parsers.rparent
+ + ( 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.title
+ = parsers.title_d + parsers.title_s + parsers.title_p
parsers.optionaltitle
- = parsers.spnlc * parsers.title * parsers.spacechar^0
- + Cc("")
+ = parsers.spnlc * parsers.title * parsers.spacechar^0 + Cc("")
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Helpers for Links and Link Reference Definitions
@@ -27734,12 +29424,13 @@ parsers.optionaltitle
% \end{markdown}
% \begin{macrocode}
-- parse a reference definition: [foo]: /bar "title"
-parsers.define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon
+parsers.define_reference_parser = (parsers.check_trail / "")
+ * parsers.link_label * parsers.colon
* parsers.spnlc * parsers.url
- * ( parsers.spnlc_sep * parsers.title * parsers.only_blank
+ * ( parsers.spnlc_sep * parsers.title
+ * parsers.only_blank
+ Cc("") * parsers.only_blank)
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Inline Elements
@@ -27751,11 +29442,13 @@ parsers.Inline = V("Inline")
-- parse many p between starter and ender
parsers.between = function(p, starter, ender)
local ender2 = B(parsers.nonspacechar) * ender
- return (starter * #parsers.nonspacechar * Ct(p * (p - ender2)^0) * ender2)
+ return ( starter
+ * #parsers.nonspacechar
+ * Ct(p * (p - ender2)^0)
+ * ender2)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Block Elements
@@ -27763,7 +29456,8 @@ end
% \end{markdown}
% \begin{macrocode}
parsers.lineof = function(c)
- return (parsers.check_trail_no_rem * (P(c) * parsers.optionalspace)^3
+ return ( parsers.check_trail_no_rem
+ * (P(c) * parsers.optionalspace)^3
* (parsers.newline + parsers.eof))
end
@@ -27771,7 +29465,6 @@ parsers.thematic_break_lines = parsers.lineof(parsers.asterisk)
+ parsers.lineof(parsers.dash)
+ parsers.lineof(parsers.underscore)
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Headings
@@ -27783,8 +29476,11 @@ parsers.heading_start = #parsers.hash * C(parsers.hash^-6)
* -parsers.hash / length
-- parse setext header ending and return level
-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)
+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+#*%s*\n$","")
@@ -27799,7 +29495,6 @@ parsers.atx_heading = parsers.check_trail_no_rem
+ parsers.spacechar^1
* C(parsers.line))
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Markdown Reader {#markdown-reader}
@@ -27825,7 +29520,6 @@ M.reader = {}
function M.reader.new(writer, options)
local self = {}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Make the `writer` and `options` parameters available as
@@ -27837,7 +29531,6 @@ function M.reader.new(writer, options)
self.writer = writer
self.options = options
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Create a \luamdef{reader->parsers} hash table that stores \acro{peg} patterns
@@ -27865,7 +29558,6 @@ function M.reader.new(writer, options)
% \begin{macrocode}
local parsers = self.parsers
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Top-Level Helper Functions
@@ -27883,7 +29575,6 @@ function M.reader.new(writer, options)
return tag
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{iterlines} as a function that iterates over the lines of
@@ -27897,7 +29588,6 @@ function M.reader.new(writer, options)
return util.rope_to_string(rope)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{expandtabs} either as an identity function, when the
@@ -27918,7 +29608,6 @@ function M.reader.new(writer, options)
end
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### High-Level Parser Functions
@@ -27936,7 +29625,6 @@ function M.reader.new(writer, options)
self.create_parser = function(name, grammar, toplevel)
self.parser_functions[name] = function(str)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% If the parser function is top-level and the \Opt{stripIndent} Lua option is
@@ -27956,16 +29644,17 @@ function M.reader.new(writer, options)
local prefix = lpeg.match(C(parsers.optionalspace), line)
local prefix_length = #prefix
local is_shorter = min_prefix_length == nil
- is_shorter = is_shorter or prefix_length < min_prefix_length
+ if not is_shorter then
+ is_shorter = prefix_length < min_prefix_length
+ end
if is_shorter then
- min_prefix_length, min_prefix = prefix_length, prefix
+ min_prefix_length, min_prefix = prefix_length, prefix
end
return line
end)
str = str:gsub('^' .. min_prefix, '')
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% If the parser is top-level and the \Opt{texComments} or \Opt{hybrid} Lua
@@ -27980,7 +29669,11 @@ function M.reader.new(writer, options)
end
local res = lpeg.match(grammar(), str)
if res == nil then
- error(format("%s failed on:\n%s", name, str:sub(1,20)))
+ return writer.error(
+ format("Parser `%s` failed to process the input text.", name),
+ format("Here are the first 20 characters of the remaining "
+ .. "unprocessed text: `%s`.", str:sub(1,20))
+ )
else
return res
end
@@ -28021,7 +29714,6 @@ function M.reader.new(writer, options)
return parsers.inlines_no_link_or_emphasis
end, false)
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Parsers Used for Indentation (local)
@@ -28030,35 +29722,47 @@ function M.reader.new(writer, options)
%
% \end{markdown}
% \begin{macrocode}
- parsers.minimally_indented_blankline = parsers.check_minimal_indent * (parsers.blankline / "")
+ parsers.minimally_indented_blankline
+ = parsers.check_minimal_indent * (parsers.blankline / "")
- parsers.minimally_indented_block = parsers.check_minimal_indent * V("Block")
+ 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_block_or_paragraph
+ = parsers.check_minimal_indent * V("BlockOrParagraph")
- parsers.minimally_indented_paragraph = parsers.check_minimal_indent * V("Paragraph")
+ parsers.minimally_indented_paragraph
+ = parsers.check_minimal_indent * V("Paragraph")
- parsers.minimally_indented_plain = parsers.check_minimal_indent * V("Plain")
+ 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
+ = 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_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_ref
+ = parsers.check_minimal_indent * V("Reference")
- parsers.minimally_indented_blank = parsers.check_minimal_indent * V("Blank")
+ parsers.minimally_indented_blank
+ = parsers.check_minimal_indent * V("Blank")
- parsers.conditionally_indented_blankline = parsers.check_minimal_blank_indent * (parsers.blankline / "")
+ 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
+ = 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.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}
@@ -28068,7 +29772,8 @@ function M.reader.new(writer, options)
% \end{markdown}
% \begin{macrocode}
- parsers.separator_loop = function(separated_block, paragraph, block_separator, paragraph_separator)
+ function parsers.separator_loop(separated_block, paragraph,
+ block_separator, paragraph_separator)
return separated_block
+ block_separator
* paragraph
@@ -28077,10 +29782,14 @@ function M.reader.new(writer, options)
* paragraph
end
- parsers.create_loop_body_pair = function(separated_block, paragraph, block_separator, paragraph_separator)
+ function parsers.create_loop_body_pair(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)
+ block = parsers.separator_loop(separated_block, paragraph,
+ block_separator, block_separator),
+ par = parsers.separator_loop(separated_block, paragraph,
+ block_separator, paragraph_separator)
}
end
@@ -28103,18 +29812,20 @@ function M.reader.new(writer, options)
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.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.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
@@ -28138,14 +29849,14 @@ function M.reader.new(writer, options)
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
+ * ( #parsers.linechar -- check if starter is blank
+ * Cc(false) + Cc(true))
* Cc(name)
* Cc(breakable),
process_starter_indent), "indent_info")
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Parsers Used for Markdown Lists (local)
@@ -28166,7 +29877,8 @@ function M.reader.new(writer, options)
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)
+ allowed_end = C(parsers.spacechar^1)
+ + #(parsers.newline + parsers.eof)
end
return parsers.check_trail
@@ -28181,26 +29893,29 @@ function M.reader.new(writer, options)
+ parsers.enumerator(parsers.rparent)
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Parsers Used for Blockquotes (local)
%
% \end{markdown}
% \begin{macrocode}
- parsers.blockquote_start = parsers.check_trail * C(parsers.more) * C(parsers.spacechar^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")
+ 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.add_indent(parsers.blockquote_start, "bq", false)
- * parsers.indented_content()
- * remove_indent("bq")
+ 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)
@@ -28211,7 +29926,8 @@ function M.reader.new(writer, options)
% \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)
+ local parsed
+ = self.parser_functions.parse_inlines_no_link_or_emphasis(rope)
parsed.indent_info = nil
return parsed
end
@@ -28223,37 +29939,40 @@ function M.reader.new(writer, options)
%
% \end{markdown}
% \begin{macrocode}
- local function collect_emphasis_content(t, opening_index, closing_index)
- local content = {}
+ local collect_emphasis_content =
+ function(t, opening_index, closing_index)
+ local content = {}
- local content_part = {}
- for i = opening_index, closing_index do
- local value = t[i]
+ 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
+ if value.rendered ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ content_part = {}
+ content[#content + 1] = value.rendered
+ value.rendered = nil
else
- content_part[#content_part + 1] = value.content
+ 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
- value.content = ''
- value.is_active = false
end
- end
- if next(content_part) ~= nil then
- content[#content + 1] = parse_content_part(content_part)
- end
+ if next(content_part) ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ end
- return content
- end
+ return content
+ end
% \end{macrocode}
% \begin{markdown}
@@ -28264,7 +29983,9 @@ function M.reader.new(writer, options)
% \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)
+ 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
@@ -28278,7 +29999,9 @@ function M.reader.new(writer, options)
% \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)
+ 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
@@ -28292,9 +30015,12 @@ function M.reader.new(writer, options)
% \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)
+ 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}
@@ -28306,7 +30032,8 @@ function M.reader.new(writer, options)
%
% \end{markdown}
% \begin{macrocode}
- local function find_emphasis_opener(t, bottom_index, latest_index, character, closing_delimiter)
+ local find_emphasis_opener = function(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
@@ -28370,12 +30097,18 @@ function M.reader.new(writer, options)
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 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)
+ 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
+ openers_bottom[character][is_opening]
+ [closing_length_modulo_three + 1]
+ = current_position
current_position = current_position + 1
goto continue
end
@@ -28385,7 +30118,8 @@ function M.reader.new(writer, options)
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
+ 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)
@@ -28469,15 +30203,19 @@ function M.reader.new(writer, options)
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_punctuation
+ = B(parsers.escapable)
+ + Cmt(parsers.succeed, check_preceding_unicode_punctuation)
- parsers.unicode_preceding_whitespace = Cmt(parsers.succeed, check_preceding_unicode_whitespace)
+ 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_punctuation
+ = #parsers.escapable
+ + Cmt(parsers.succeed, check_following_unicode_punctuation)
- parsers.unicode_following_whitespace = Cmt(parsers.succeed, check_following_unicode_whitespace)
+ parsers.unicode_following_whitespace
+ = Cmt(parsers.succeed, check_following_unicode_whitespace)
parsers.delimiter_run = function(character)
return (B(parsers.backslash * character) + -B(character))
@@ -28487,49 +30225,58 @@ function M.reader.new(writer, options)
parsers.left_flanking_delimiter_run = function(character)
return (B( parsers.any)
- * (parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace)
+ * ( 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.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.unicode_following_punctuation
+ + parsers.unicode_following_whitespace
+ parsers.eof)
+ (B(parsers.any)
- * -(parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace))
+ * -( 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)
+ 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_start
+ = parsers.left_flanking_delimiter_run(parsers.asterisk)
- parsers.emph_end = parsers.right_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_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")
@@ -28554,7 +30301,6 @@ function M.reader.new(writer, options)
+ parsers.emph_capturing_close
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Helpers for Links and Link Reference Definitions (local)
@@ -28568,7 +30314,6 @@ function M.reader.new(writer, options)
parsers.rawnotes = {}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{reader->register_link} method registers
@@ -28592,7 +30337,6 @@ function M.reader.new(writer, options)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{reader->lookup_reference} method looks up a
@@ -28605,7 +30349,6 @@ function M.reader.new(writer, options)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{reader->lookup_note_reference} method looks up a
@@ -28619,17 +30362,24 @@ function M.reader.new(writer, options)
parsers.title_s_direct_ref = parsers.squote
* Cs((parsers.html_entities
- + (parsers.anyescaped - parsers.squote - parsers.blankline^2))^0)
+ + ( 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.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.anyescaped
+ - parsers.lparent
+ - parsers.rparent
+ - parsers.blankline^2))^0)
* parsers.rparent
parsers.title_direct_ref = parsers.title_s_direct_ref
@@ -28639,7 +30389,8 @@ function M.reader.new(writer, options)
parsers.inline_direct_ref_inside = parsers.lparent * parsers.spnl
* Cg(parsers.url + Cc(""), "url")
* parsers.spnl
- * Cg(parsers.title_direct_ref + Cc(""), "title")
+ * Cg( parsers.title_direct_ref
+ + Cc(""), "title")
* parsers.spnl * parsers.rparent
parsers.inline_direct_ref = parsers.lparent * parsers.spnlc
@@ -28667,7 +30418,8 @@ function M.reader.new(writer, options)
* Cg(Cc("inline"), "link_type")
+ #(parsers.exclamation * parsers.full_link)
* Cg(Cc("full"), "link_type")
- + #(parsers.exclamation * parsers.collapsed_link)
+ + #( parsers.exclamation
+ * parsers.collapsed_link)
* Cg(Cc("collapsed"), "link_type")
+ #(parsers.exclamation * parsers.shortcut_link)
* Cg(Cc("shortcut"), "link_type")
@@ -28687,7 +30439,7 @@ function M.reader.new(writer, options)
+ #parsers.link_text
* Cg(Cc("link_text"), "link_type")
- parsers.note_opening = #(parsers.circumflex * parsers.shortcut_link)
+ parsers.note_opening = #(parsers.circumflex * parsers.link_text)
* Cg(Cc("note_inline"), "link_type")
parsers.raw_note_opening = #( parsers.lbracket
@@ -28698,15 +30450,18 @@ function M.reader.new(writer, options)
local inline_note_element = Cg(Cc("note"), "element")
* parsers.note_opening
- * Cg(parsers.circumflex * parsers.lbracket, "content")
+ * Cg( parsers.circumflex
+ * parsers.lbracket, "content")
local image_element = Cg(Cc("image"), "element")
* parsers.image_opening
- * Cg(parsers.exclamation * parsers.lbracket, "content")
+ * Cg( parsers.exclamation
+ * parsers.lbracket, "content")
local note_element = Cg(Cc("note"), "element")
* parsers.raw_note_opening
- * Cg(parsers.lbracket * parsers.circumflex, "content")
+ * Cg( parsers.lbracket
+ * parsers.circumflex, "content")
local link_element = Cg(Cc("link"), "element")
* parsers.link_opening
@@ -28736,7 +30491,9 @@ function M.reader.new(writer, options)
* Cg(Cc(false), "is_opening")
* Cg(Cc(true), "is_closing")
* ( Cg(Cc(true), "is_direct")
- * Cg(parsers.rbracket * #parsers.inline_direct_ref, "content")
+ * Cg( parsers.rbracket
+ * #parsers.inline_direct_ref,
+ "content")
+ Cg(Cc(false), "is_direct")
* Cg(parsers.rbracket, "content")))
@@ -28757,22 +30514,24 @@ function M.reader.new(writer, options)
* -V("EndlineExceptions")
+ parsers.check_optional_indent
* -V("EndlineExceptions")
- * -parsers.starter) / "")
+ * -V("ListStarter")) / "")
* 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_content
+ = Ct( Cg(Cc("content"), "type")
+ * Cg(Cs(( parsers.link_emph_precedence
+ + parsers.backslash * parsers.linechar
+ + 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
+ 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}
@@ -28802,7 +30561,9 @@ function M.reader.new(writer, options)
local value = t[i]
if value.type == "delimiter" and
value.is_opening and
- (value.element == "link" or value.element == "image" or value.element == "note")
+ ( value.element == "link"
+ or value.element == "image"
+ or value.element == "note")
and not value.removed then
if value.is_active then
return i
@@ -28883,11 +30644,12 @@ function M.reader.new(writer, options)
%
% \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
+ local delete_parsed_content_in_range =
+ function(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ t[i].rendered = nil
+ end
end
- end
% \end{macrocode}
% \begin{markdown}
@@ -28932,34 +30694,40 @@ function M.reader.new(writer, options)
%
% \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
+ local render_link_or_image =
+ function(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)
- if (t[opening_index].element == "image") then
- rendered = writer.image(mapped, reference.url, reference.title, reference.attributes)
- end
+ 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 == "note") then
- if (t[opening_index].link_type == "note_inline") then
- rendered = writer.note(mapped)
+ if (t[opening_index].element == "image") then
+ rendered = writer.image(mapped, reference.url, reference.title,
+ reference.attributes)
end
- if (t[opening_index].link_type == "raw_note") then
- rendered = writer.note(reference)
+
+ if (t[opening_index].element == "note") then
+ if (t[opening_index].link_type == "note_inline") then
+ rendered = writer.note(mapped)
+ end
+ if (t[opening_index].link_type == "raw_note") then
+ rendered = writer.note(reference)
+ end
end
- 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
+ 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}
@@ -28970,52 +30738,56 @@ function M.reader.new(writer, options)
%
% \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 resolve_inline_following_content =
+ function(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
+ local matching_content = parsers.succeed
- if match_reference then
- matching_content = matching_content * parsers.inline_direct_ref_inside
- end
+ 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
+ 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 = 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 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
+ 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
+ if matched_count <= 0 then
+ value.content = value.content:sub(chars_left + 1)
+ break
+ end
+
+ value.content = ''
+ value.is_active = false
end
- value.content = ''
- value.is_active = false
- end
+ local attributes = matched.attributes
+ if attributes == nil or next(attributes) == nil then
+ attributes = nil
+ end
- local attributes = matched.attributes
- if attributes == nil or next(attributes) == nil then
- attributes = nil
+ return {
+ url = matched.url or "",
+ title = matched.title or "",
+ attributes = attributes
+ }
end
- return {
- url = matched.url or "",
- title = matched.title or "",
- attributes = attributes
- }
- end
-
% \end{macrocode}
% \begin{markdown}
%
@@ -29025,8 +30797,11 @@ function M.reader.new(writer, options)
% \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)
+ 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}
@@ -29037,10 +30812,14 @@ function M.reader.new(writer, options)
%
% \end{markdown}
% \begin{macrocode}
- local function resolve_note_inline_link(t, opening_index, closing_index)
- local inline_content = resolve_inline_following_content(t, closing_index, false, false)
- render_link_or_image(t, opening_index, closing_index, closing_index, inline_content)
- end
+ local resolve_note_inline_link =
+ function(t, opening_index, closing_index)
+ local inline_content
+ = resolve_inline_following_content(t, closing_index,
+ false, false)
+ render_link_or_image(t, opening_index, closing_index,
+ closing_index, inline_content)
+ end
% \end{macrocode}
% \begin{markdown}
@@ -29051,13 +30830,18 @@ function M.reader.new(writer, options)
% \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 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)
+ 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
@@ -29070,12 +30854,14 @@ function M.reader.new(writer, options)
% \end{markdown}
% \begin{macrocode}
local function resolve_raw_note_link(t, opening_index, closing_index)
- local content = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local content
+ = collect_link_content(t, opening_index + 1, closing_index - 1)
local r = self.lookup_note_reference(content)
if r then
local parsed_ref = self.parser_functions.parse_blocks_nested(r)
- render_link_or_image(t, opening_index, closing_index, closing_index, parsed_ref)
+ render_link_or_image(t, opening_index, closing_index,
+ closing_index, parsed_ref)
end
end
@@ -29088,15 +30874,22 @@ function M.reader.new(writer, options)
% \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 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)
+ 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
@@ -29110,14 +30903,20 @@ function M.reader.new(writer, options)
% \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 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)
+ 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
@@ -29137,9 +30936,12 @@ function M.reader.new(writer, options)
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" or value.element == "note") then
+ if not value.is_closing
+ or value.type ~= "delimiter"
+ or not ( value.element == "link"
+ or value.element == "image"
+ or value.element == "note")
+ or value.removed then
goto continue
end
@@ -29189,14 +30991,14 @@ function M.reader.new(writer, options)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Inline Elements (local)
%
% \end{markdown}
% \begin{macrocode}
- parsers.Str = (parsers.normalchar * (parsers.normalchar + parsers.at)^0)
+ parsers.Str = ( parsers.normalchar
+ * (parsers.normalchar + parsers.at)^0)
/ writer.string
parsers.Symbol = (parsers.backtick^1 + V("SpecialChar"))
@@ -29224,29 +31026,34 @@ function M.reader.new(writer, options)
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)
+ 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)
+ 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.ListStarter = parsers.starter
+
parsers.EndlineExceptions
= parsers.blankline -- paragraph break
+ parsers.eof -- end of document
@@ -29264,7 +31071,7 @@ function M.reader.new(writer, options)
* -V("EndlineExceptions")
+ parsers.check_optional_indent
* -V("EndlineExceptions")
- * -parsers.starter)
+ * -V("ListStarter")) / function(_) return end
* parsers.spacechar^0
parsers.Endline = parsers.endline
@@ -29278,47 +31085,55 @@ function M.reader.new(writer, options)
* -V("NoSoftLineBreakEndlineExceptions")
+ parsers.check_optional_indent
* -V("NoSoftLineBreakEndlineExceptions")
- * -parsers.starter)
+ * -V("ListStarter"))
* parsers.spacechar^0
/ writer.space
- parsers.EndlineBreak = parsers.backslash * parsers.Endline
+ parsers.EndlineBreak = parsers.backslash * parsers.endline
/ writer.hard_line_break
parsers.OptionalIndent
= parsers.spacechar^1 / writer.space
- parsers.Space = parsers.spacechar^2 * parsers.Endline
+ 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.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.spacechar^1
+ * -parsers.newline / self.expandtabs
+ + parsers.spacechar^1
parsers.NoSoftLineBreakSpace
- = parsers.spacechar^2 * parsers.Endline
+ = 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.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.spacechar^1
+ * -parsers.newline / self.expandtabs
+ + parsers.spacechar^1
parsers.NonbreakingEndline
= parsers.endline
- / writer.soft_line_break
+ / writer.nbsp
parsers.NonbreakingSpace
- = parsers.spacechar^2 * parsers.Endline
- / writer.hard_line_break
- + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / ""
- + parsers.spacechar^1 * parsers.Endline
+ = parsers.spacechar^2 * parsers.endline
+ / writer.nbsp
+ + parsers.spacechar^1
+ * parsers.endline^-1 * parsers.eof / ""
+ + parsers.spacechar^1 * parsers.endline
* parsers.optionalspace
- / writer.soft_line_break
+ / writer.nbsp
+ parsers.spacechar^1 * parsers.optionalspace
/ writer.nbsp
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{reader->auto_link_url} method produces an
@@ -29333,7 +31148,6 @@ function self.auto_link_url(url, attributes)
url, nil, attributes)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{reader->auto_link_email} method produces an
@@ -29362,20 +31176,21 @@ end
parsers.LinkAndEmph = Ct(parsers.link_and_emph_table)
/ self.defer_link_and_emphasis_processing
- parsers.EscapedChar = parsers.backslash * C(parsers.escapable) / writer.string
+ parsers.EscapedChar = parsers.backslash
+ * C(parsers.escapable) / writer.string
- 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.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.HtmlEntity = parsers.html_entities / writer.string
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Block Elements (local)
@@ -29392,15 +31207,18 @@ end
+ parsers.html_declaration))
/ writer.block_html_element
- parsers.indented_non_blank_line = parsers.indentedline - parsers.blankline
+ 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.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
@@ -29420,7 +31238,6 @@ end
parsers.Plain = parsers.nonindentspace * Ct(parsers.Inline^1)
/ writer.plain
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Lists (local)
@@ -29439,73 +31256,79 @@ end
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.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
@@ -29563,13 +31386,15 @@ end
local enumerator = parsers.enumerator(delimiter_type)
return Cg(enumerator, "listtype")
* (Ct( parsers.TightListItem(Cb("listtype"))
- * ((parsers.check_minimal_indent / "") * parsers.TightListItem(enumerator))^0)
+ * ( (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)
+ * (parsers.check_minimal_indent / "")
+ * parsers.LooseListItem(enumerator))^0)
* Cc(false)
) * Ct(Cb("listtype")) / ordered_list
end
@@ -29577,7 +31402,6 @@ end
parsers.OrderedList = parsers.OrderedListOfType(parsers.period)
+ parsers.OrderedListOfType(parsers.rparent)
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Blank (local)
@@ -29587,7 +31411,6 @@ end
parsers.Blank = parsers.blankline / ""
+ V("Reference")
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Headings (local)
@@ -29622,22 +31445,27 @@ end
- parsers.thematic_break_lines
parsers.heading_text = parsers.heading_line
- * ((V("Endline") / "\n") * (parsers.heading_line - parsers.heading_level))^0
+ * ( (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)
+ 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.check_minimal_indent_and_trail
+ * parsers.heading_level
* parsers.newline
* parsers.unfreeze_trail
/ writer.heading
parsers.Heading = parsers.AtxHeading + parsers.SetextHeading
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Syntax Specification
@@ -29670,7 +31498,6 @@ end
return local_walkable_syntax
end)(walkable_syntax)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamref{reader->insert_pattern} method adds a pattern to
@@ -29682,14 +31509,18 @@ end
local current_extension_name = nil
self.insert_pattern = function(selector, pattern, pattern_name)
assert(pattern_name == nil or type(pattern_name) == "string")
- local _, _, lhs, pos, rhs = selector:find("^(%a+)%s+([%a%s]+%a+)%s+(%a+)$")
+ local _, _, lhs, pos, rhs
+ = selector:find("^(%a+)%s+([%a%s]+%a+)%s+(%a+)$")
assert(lhs ~= nil,
- [[Expected selector in form "LHS (before|after|instead of) RHS", not "]]
+ [[Expected selector in form ]]
+ .. [["LHS (before|after|instead of) RHS", not "]]
.. selector .. [["]])
assert(walkable_syntax[lhs] ~= nil,
- [[Rule ]] .. lhs .. [[ -> ... does not exist in markdown grammar]])
+ [[Rule ]] .. lhs
+ .. [[ -> ... does not exist in markdown grammar]])
assert(pos == "before" or pos == "after" or pos == "instead of",
- [[Expected positional specifier "before", "after", or "instead of", not "]]
+ [[Expected positional specifier "before", "after", ]]
+ .. [[or "instead of", not "]]
.. pos .. [["]])
local rule = walkable_syntax[lhs]
local index = nil
@@ -29707,10 +31538,12 @@ end
.. [[ does not exist in markdown grammar]])
local accountable_pattern
if current_extension_name then
- accountable_pattern = { pattern, current_extension_name, pattern_name }
+ accountable_pattern
+ = {pattern, current_extension_name, pattern_name}
else
assert(type(pattern) == "string",
- [[reader->insert_pattern() was called outside an extension with ]]
+ [[reader->insert_pattern() was called outside ]]
+ .. [[an extension with ]]
.. [[a PEG pattern instead of a rule name]])
accountable_pattern = pattern
end
@@ -29721,7 +31554,6 @@ end
end
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Create a local \luamdef{syntax} hash table that stores those rules of the
@@ -29733,13 +31565,10 @@ end
local syntax =
{ "Blocks",
- Blocks = V("InitializeState")
- * ( V("ExpectedJekyllData")
- * (V("Blank")^0 / writer.interblocksep)
- )^-1
- * V("Blank")^0
+ Blocks = V("InitializeState")
+ * V("ExpectedJekyllData")
+ * V("Blank")^0
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Only create interblock separators between pairs of blocks that are not
@@ -29748,74 +31577,75 @@ end
%
% \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,
-
- Blank = parsers.Blank,
- Reference = parsers.Reference,
-
- Blockquote = parsers.Blockquote,
- Verbatim = parsers.Verbatim,
- ThematicBreak = parsers.ThematicBreak,
- BulletList = parsers.BulletList,
- OrderedList = parsers.OrderedList,
- DisplayHtml = parsers.DisplayHtml,
- Heading = parsers.Heading,
- Paragraph = parsers.Paragraph,
- Plain = parsers.Plain,
-
- EndlineExceptions = parsers.EndlineExceptions,
+ * ( 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.succeed,
+
+ Blank = parsers.Blank,
+ Reference = parsers.Reference,
+
+ Blockquote = parsers.Blockquote,
+ Verbatim = parsers.Verbatim,
+ ThematicBreak = parsers.ThematicBreak,
+ BulletList = parsers.BulletList,
+ OrderedList = parsers.OrderedList,
+ DisplayHtml = parsers.DisplayHtml,
+ Heading = parsers.Heading,
+ Paragraph = parsers.Paragraph,
+ Plain = parsers.Plain,
+
+ ListStarter = parsers.ListStarter,
+ EndlineExceptions = parsers.EndlineExceptions,
NoSoftLineBreakEndlineExceptions
- = parsers.NoSoftLineBreakEndlineExceptions,
-
- Str = parsers.Str,
- Space = parsers.Space,
- NoSoftLineBreakSpace = parsers.NoSoftLineBreakSpace,
- OptionalIndent = parsers.OptionalIndent,
- Endline = parsers.Endline,
- EndlineNoSub = parsers.EndlineNoSub,
+ = parsers.NoSoftLineBreakEndlineExceptions,
+
+ Str = parsers.Str,
+ Space = parsers.Space,
+ NoSoftLineBreakSpace
+ = parsers.NoSoftLineBreakSpace,
+ OptionalIndent = parsers.OptionalIndent,
+ Endline = parsers.Endline,
+ EndlineNoSub = parsers.EndlineNoSub,
NoSoftLineBreakEndline
- = parsers.NoSoftLineBreakEndline,
- EndlineBreak = parsers.EndlineBreak,
- LinkAndEmph = parsers.LinkAndEmph,
- Code = parsers.Code,
- AutoLinkUrl = parsers.AutoLinkUrl,
- AutoLinkEmail = parsers.AutoLinkEmail,
+ = parsers.NoSoftLineBreakEndline,
+ EndlineBreak = parsers.EndlineBreak,
+ LinkAndEmph = parsers.LinkAndEmph,
+ Code = parsers.Code,
+ AutoLinkUrl = parsers.AutoLinkUrl,
+ AutoLinkEmail = parsers.AutoLinkEmail,
AutoLinkRelativeReference
- = parsers.AutoLinkRelativeReference,
- InlineHtml = parsers.InlineHtml,
- HtmlEntity = parsers.HtmlEntity,
- EscapedChar = parsers.EscapedChar,
- Smart = parsers.Smart,
- Symbol = parsers.Symbol,
- SpecialChar = parsers.fail,
- InitializeState = parsers.succeed,
+ = parsers.AutoLinkRelativeReference,
+ InlineHtml = parsers.InlineHtml,
+ HtmlEntity = parsers.HtmlEntity,
+ EscapedChar = parsers.EscapedChar,
+ Smart = parsers.Smart,
+ Symbol = parsers.Symbol,
+ SpecialChar = parsers.fail,
+ InitializeState = parsers.succeed,
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamref{reader->update_rule} as a function that receives two
@@ -29830,20 +31660,23 @@ end
self.update_rule = function(rule_name, get_pattern)
assert(current_extension_name ~= nil)
assert(syntax[rule_name] ~= nil,
- [[Rule ]] .. rule_name .. [[ -> ... does not exist in markdown grammar]])
+ [[Rule ]] .. rule_name
+ .. [[ -> ... does not exist in markdown grammar]])
local previous_pattern
local extension_name
if walkable_syntax[rule_name] then
- local previous_accountable_pattern = walkable_syntax[rule_name][1]
+ local previous_accountable_pattern
+ = walkable_syntax[rule_name][1]
previous_pattern = previous_accountable_pattern[1]
- extension_name = previous_accountable_pattern[2] .. ", " .. current_extension_name
+ extension_name
+ = previous_accountable_pattern[2]
+ .. ", " .. current_extension_name
else
previous_pattern = nil
extension_name = current_extension_name
end
local pattern
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Instead of a function, a \acro{peg} pattern `pattern` may also be
@@ -29872,7 +31705,6 @@ end
walkable_syntax[rule_name] = { accountable_pattern }
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define a hash table of all characters with special meaning and add method
@@ -29894,7 +31726,6 @@ end
self.add_special_character("!")
self.add_special_character("\\")
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Add method \luamdef{reader->initialize_named_group} that defines named groups
@@ -29911,7 +31742,6 @@ end
* Cg(pattern, name)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Add a named group for indentation.
@@ -29920,7 +31750,6 @@ end
% \begin{macrocode}
self.initialize_named_group("indent_info")
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Apply syntax extensions.
@@ -29934,7 +31763,6 @@ end
end
current_extension_name = nil
% \end{macrocode}
-% \par
% \begin{markdown}
%
% If the \Opt{debugExtensions} option is enabled, serialize
@@ -29966,9 +31794,11 @@ end
pattern_name = "Anonymous Pattern"
end
local extension_name = rhs[2]
- human_readable_rhs = pattern_name .. [[ (]] .. extension_name .. [[)]]
+ human_readable_rhs = pattern_name .. [[ (]]
+ .. extension_name .. [[)]]
end
- local encoded_rhs = util.encode_json_string(human_readable_rhs)
+ local encoded_rhs
+ = util.encode_json_string(human_readable_rhs)
local output_line = [[ ]] .. encoded_rhs
if rhs_index < #rule then
output_line = output_line .. ","
@@ -29986,12 +31816,12 @@ end
local output = table.concat(output_lines, "\n")
local output_filename = options.debugExtensionsFileName
local output_file = assert(io.open(output_filename, "w"),
- [[Could not open file "]] .. output_filename .. [[" for writing]])
+ [[Could not open file "]] .. output_filename
+ .. [[" for writing]])
assert(output_file:write(output))
assert(output_file:close())
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Materialize \luamref{walkable_syntax} and merge it into \luamref{syntax} to
@@ -30028,7 +31858,6 @@ end
end
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Finalize the parser by reacting to options and by producing special parsers
@@ -30079,7 +31908,7 @@ end
end
local blocks_nested_t = util.table_copy(syntax)
- blocks_nested_t.ExpectedJekyllData = parsers.fail
+ blocks_nested_t.ExpectedJekyllData = parsers.succeed
parsers.blocks_nested = Ct(blocks_nested_t)
parsers.blocks = Ct(syntax)
@@ -30109,10 +31938,11 @@ end
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)
+ 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}
%
% Return a function that converts markdown string `input` into a plain \TeX{}
@@ -30137,7 +31967,8 @@ end
elseif form == "nfkd" then
input = uni_algos.normalize.NFKD(input)
else
- error(format("Unknown normalization form %s", form))
+ return writer.error(
+ format("Unknown normalization form %s.", form))
end
end
% \end{macrocode}
@@ -30153,30 +31984,12 @@ end
end
% \end{macrocode}
% \begin{markdown}
-% When determining the name of the cache file, create salt for the hashing
-% function out of the package version and the passed options recognized by the
-% Lua interface (see Section <#sec:lua-options>). The \Opt{cacheDir} option
-% is disregarded.
+% Clear the table of references.
% \end{markdown}
% \begin{macrocode}
references = {}
- local opt_string = {}
- for k, _ in pairs(defaultOptions) do
- local v = options[k]
- if type(v) == "table" then
- for _, i in ipairs(v) do
- opt_string[#opt_string+1] = k .. "=" .. tostring(i)
- end
- elseif k ~= "cacheDir" then
- opt_string[#opt_string+1] = k .. "=" .. tostring(v)
- end
- end
- table.sort(opt_string)
- local salt = table.concat(opt_string, ",") .. "," .. metadata.version
- local output
- local function convert(input)
- local document = self.parser_functions.parse_blocks(input)
- local output = util.rope_to_string(writer.document(document))
+ local document = self.parser_functions.parse_blocks(input)
+ local output = util.rope_to_string(writer.document(document))
% \end{macrocode}
% \begin{markdown}
% Remove block element / paragraph separators immediately followed by the
@@ -30184,82 +31997,49 @@ end
% Then, remove any leftover output of \luamref{writer->undosep}.
% \end{markdown}
% \begin{macrocode}
- local undosep_start, undosep_end
- local potential_secend_start, secend_start
- local potential_sep_start, sep_start
+ local undosep_start, undosep_end
+ local potential_secend_start, secend_start
+ local potential_sep_start, sep_start
+ while true do
+ -- find a `writer->undosep`
+ undosep_start, undosep_end
+ = output:find(writer.undosep_text, 1, true)
+ if undosep_start == nil then break end
+ -- skip any preceding section ends
+ secend_start = undosep_start
while true do
- -- find a `writer->undosep`
- undosep_start, undosep_end = output:find(writer.undosep_text, 1, true)
- if undosep_start == nil then break end
- -- skip any preceding section ends
- secend_start = undosep_start
- while true do
- potential_secend_start = secend_start - #writer.secend_text
- if potential_secend_start < 1
- or output:sub(potential_secend_start, secend_start - 1) ~= writer.secend_text then
- break
- end
- secend_start = potential_secend_start
+ potential_secend_start = secend_start - #writer.secend_text
+ if potential_secend_start < 1
+ or output:sub(potential_secend_start,
+ secend_start - 1) ~= writer.secend_text
+ then
+ break
end
- -- find an immediately preceding block element / paragraph separator
- sep_start = secend_start
- potential_sep_start = sep_start - #writer.interblocksep_text
+ secend_start = potential_secend_start
+ end
+ -- find an immediately preceding
+ -- block element / paragraph separator
+ sep_start = secend_start
+ potential_sep_start = sep_start - #writer.interblocksep_text
+ if potential_sep_start >= 1
+ and output:sub(potential_sep_start,
+ sep_start - 1) == writer.interblocksep_text
+ then
+ sep_start = potential_sep_start
+ else
+ potential_sep_start = sep_start - #writer.paragraphsep_text
if potential_sep_start >= 1
- and output:sub(potential_sep_start, sep_start - 1) == writer.interblocksep_text then
+ and output:sub(potential_sep_start,
+ sep_start - 1) == writer.paragraphsep_text
+ then
sep_start = potential_sep_start
- else
- potential_sep_start = sep_start - #writer.paragraphsep_text
- if potential_sep_start >= 1
- and output:sub(potential_sep_start, sep_start - 1) == writer.paragraphsep_text then
- sep_start = potential_sep_start
- end
end
- -- remove `writer->undosep` and immediately preceding block element / paragraph separator
- output = output:sub(1, sep_start - 1)
- .. output:sub(secend_start, undosep_start - 1)
- .. output:sub(undosep_end + 1)
end
- return output
- end
-% \end{macrocode}
-% \begin{markdown}
-% If we cache markdown documents, produce the cache file and transform its
-% filename to plain \TeX{} output via the \luamref{writer->pack} method.
-% \end{markdown}
-% \begin{macrocode}
- if options.eagerCache or options.finalizeCache then
- local name = util.cache(options.cacheDir, input, salt, convert,
- ".md" .. writer.suffix)
- output = writer.pack(name)
-% \end{macrocode}
-% \begin{markdown}
-% Otherwise, return the result of the conversion directly.
-% \end{markdown}
-% \begin{macrocode}
- else
- output = convert(input)
- end
-% \end{macrocode}
-% \begin{markdown}
-% If the \Opt{finalizeCache} option is enabled, populate the frozen cache in
-% the file \Opt{frozenCacheFileName} with an entry for markdown document
-% number \Opt{frozenCacheCounter}.
-% \end{markdown}
-% \begin{macrocode}
- if options.finalizeCache then
- local file, mode
- if options.frozenCacheCounter > 0 then
- mode = "a"
- else
- mode = "w"
- end
- file = assert(io.open(options.frozenCacheFileName, mode),
- [[Could not open file "]] .. options.frozenCacheFileName
- .. [[" for writing]])
- assert(file:write([[\expandafter\global\expandafter\def\csname ]]
- .. [[markdownFrozenCache]] .. options.frozenCacheCounter
- .. [[\endcsname{]] .. output .. [[}]] .. "\n"))
- assert(file:close())
+ -- remove `writer->undosep` and immediately preceding
+ -- block element / paragraph separator
+ output = output:sub(1, sep_start - 1)
+ .. output:sub(secend_start, undosep_start - 1)
+ .. output:sub(undosep_end + 1)
end
return output
end
@@ -30296,7 +32076,6 @@ M.extensions.bracketed_spans = function()
name = "built-in bracketed_spans syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->span} as a function that will transform an input
@@ -30321,10 +32100,13 @@ M.extensions.bracketed_spans = function()
+ parsers.autolink
+ V("InlineHtml")
+ ( parsers.backslash * parsers.backslash)
- + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
+ + ( parsers.backslash
+ * (parsers.lbracket + parsers.rbracket)
+ V("Space") + V("Endline")
+ (parsers.any
- - (parsers.newline + parsers.lbracket + parsers.rbracket
+ - ( parsers.newline
+ + parsers.lbracket
+ + parsers.rbracket
+ parsers.blankline^2))))^1)
/ self.parser_functions.parse_inlines)
* parsers.rbracket
@@ -30355,7 +32137,6 @@ M.extensions.citations = function(citation_nbsps)
name = "built-in citations syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->citations} as a function that will transform an
@@ -30387,11 +32168,15 @@ M.extensions.citations = function(citation_nbsps)
end
end
else
- table.insert(buffer, {"\\markdownRenderer", text_cites and "TextCite" or "Cite",
- "{", #cites, "}"})
+ 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, "}"})
+ table.insert(buffer,
+ {cite.suppress_author and "-" or "+", "{",
+ cite.prenote or "", "}{",
+ cite.postnote or "", "}{", cite.name, "}"})
end
end
return buffer
@@ -30407,12 +32192,16 @@ M.extensions.citations = function(citation_nbsps)
local citation_name
= Cs(parsers.dash^-1) * parsers.at
* Cs(citation_chars
- * (((citation_chars + parsers.internal_punctuation
+ * ((( citation_chars
+ + parsers.internal_punctuation
- parsers.comma - parsers.semicolon)
- * -#((parsers.internal_punctuation - parsers.comma
+ * -#(( parsers.internal_punctuation
+ - parsers.comma
- parsers.semicolon)^0
- * -(citation_chars + parsers.internal_punctuation
- - parsers.comma - parsers.semicolon)))^0
+ * -( citation_chars
+ + parsers.internal_punctuation
+ - parsers.comma
+ - parsers.semicolon)))^0
* citation_chars)^-1)
local citation_body_prenote
@@ -30421,10 +32210,14 @@ M.extensions.citations = function(citation_nbsps)
+ parsers.inticks
+ parsers.autolink
+ V("InlineHtml")
- + V("Space") + V("Endline")
+ + V("Space") + V("EndlineNoSub")
+ (parsers.anyescaped
- - (parsers.newline + parsers.rbracket + parsers.blankline^2))
- - (parsers.spnl * parsers.dash^-1 * parsers.at))^1)
+ - ( parsers.newline
+ + parsers.rbracket
+ + parsers.blankline^2))
+ - ( parsers.spnl
+ * parsers.dash^-1
+ * parsers.at))^1)
local citation_body_postnote
= Cs((parsers.alphanumeric^1
@@ -30432,9 +32225,11 @@ M.extensions.citations = function(citation_nbsps)
+ parsers.inticks
+ parsers.autolink
+ V("InlineHtml")
- + V("Space") + V("Endline")
+ + V("Space") + V("EndlineNoSub")
+ (parsers.anyescaped
- - (parsers.newline + parsers.rbracket + parsers.semicolon
+ - ( parsers.newline
+ + parsers.rbracket
+ + parsers.semicolon
+ parsers.blankline^2))
- (parsers.spnl * parsers.rbracket))^1)
@@ -30445,8 +32240,9 @@ M.extensions.citations = function(citation_nbsps)
* parsers.spnlc
)
* citation_name
- * (parsers.internal_punctuation - parsers.semicolon)^-1
- * ( parsers.spnlc
+ * ( parsers.internal_punctuation
+ - parsers.semicolon)^-1
+ * ( parsers.spnlc / function(_) return end
* citation_body_postnote
+ Cc("")
* parsers.spnlc
@@ -30467,7 +32263,9 @@ M.extensions.citations = function(citation_nbsps)
+ V("InlineHtml")
+ V("Space") + V("Endline")
+ (parsers.anyescaped
- - (parsers.newline + parsers.rbracket + parsers.at
+ - ( parsers.newline
+ + parsers.rbracket
+ + parsers.at
+ parsers.semicolon + parsers.blankline^2))
- (parsers.spnl * parsers.rbracket))^0)
@@ -30548,7 +32346,6 @@ end
% \begin{macrocode}
M.extensions.content_blocks = function(language_map)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \luamdef{languages_json} table maps programming language filename
@@ -30561,7 +32358,8 @@ M.extensions.content_blocks = function(language_map)
% \begin{macrocode}
local languages_json = (function()
local base, prev, curr
- for _, pathname in ipairs{kpse.lookup(language_map, { all=true })} do
+ for _, pathname in ipairs{kpse.lookup(language_map,
+ {all=true})} do
local file = io.open(pathname, "r")
if not file then goto continue end
local input = assert(file:read("*a"))
@@ -30585,7 +32383,6 @@ M.extensions.content_blocks = function(language_map)
name = "built-in content_blocks syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->contentblock} as a function that will transform an
@@ -30602,20 +32399,20 @@ M.extensions.content_blocks = function(language_map)
suf = suf:lower()
if type == "onlineimage" then
return {"\\markdownRendererContentBlockOnlineImage{",suf,"}",
- "{",self.string(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"}
+ "{",self.string(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"}
elseif languages_json[suf] then
return {"\\markdownRendererContentBlockCode{",suf,"}",
- "{",self.string(languages_json[suf]),"}",
- "{",self.string(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"}
+ "{",self.string(languages_json[suf]),"}",
+ "{",self.string(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"}
else
return {"\\markdownRendererContentBlock{",suf,"}",
- "{",self.string(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"}
+ "{",self.string(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"}
end
end
end, extend_reader = function(self)
@@ -30650,8 +32447,8 @@ M.extensions.content_blocks = function(language_map)
return parser
end)("png", "jpg", "jpeg", "gif", "tif", "tiff")
- -- online image url for iA Writer content blocks with mandatory suffix,
- -- allowing nested brackets:
+ -- online image url for iA Writer content blocks with
+ -- mandatory suffix, allowing nested brackets:
local onlineimageurl
= (parsers.less
* Cs((parsers.anyescaped
@@ -30715,7 +32512,6 @@ M.extensions.definition_lists = function(tight_lists)
name = "built-in definition_lists syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->definitionlist} as a function that will transform an
@@ -30729,8 +32525,9 @@ M.extensions.definition_lists = function(tight_lists)
local function dlitem(term, defs)
local retVal = {"\\markdownRendererDlItem{",term,"}"}
for _, def in ipairs(defs) do
- retVal[#retVal+1] = {"\\markdownRendererDlDefinitionBegin ",def,
- "\\markdownRendererDlDefinitionEnd "}
+ retVal[#retVal+1]
+ = {"\\markdownRendererDlDefinitionBegin ",def,
+ "\\markdownRendererDlDefinitionEnd "}
end
retVal[#retVal+1] = "\\markdownRendererDlItemEnd "
return retVal
@@ -30756,17 +32553,26 @@ M.extensions.definition_lists = function(tight_lists)
local defstartchar = S("~:")
- local defstart = parsers.check_trail_length(0) * defstartchar * #parsers.spacing
- * (parsers.tab + parsers.space^-3)
- + parsers.check_trail_length(1) * defstartchar * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.check_trail_length(2) * defstartchar * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.check_trail_length(3) * defstartchar * #parsers.spacing
-
- local indented_line = (parsers.check_minimal_indent / "") * parsers.check_code_trail * parsers.line
-
- local blank = parsers.check_minimal_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline
+ local defstart
+ = parsers.check_trail_length(0) * defstartchar
+ * #parsers.spacing
+ * (parsers.tab + parsers.space^-3)
+ + parsers.check_trail_length(1)
+ * defstartchar * #parsers.spacing
+ * (parsers.tab + parsers.space^-2)
+ + parsers.check_trail_length(2)
+ * defstartchar * #parsers.spacing
+ * (parsers.tab + parsers.space^-1)
+ + parsers.check_trail_length(3)
+ * defstartchar * #parsers.spacing
+
+ local indented_line
+ = (parsers.check_minimal_indent / "")
+ * parsers.check_code_trail * parsers.line
+
+ local blank
+ = parsers.check_minimal_blank_indent_and_any_trail
+ * parsers.optionalspace * parsers.newline
local dlchunk = Cs(parsers.line * (indented_line - blank)^0)
@@ -30783,24 +32589,24 @@ M.extensions.definition_lists = function(tight_lists)
end
local DefinitionListItemLoose
- = 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
+ = 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((parsers.check_minimal_indent * (defstart * dlchunk
- / self.parser_functions.parse_blocks_nested))^1)
- * Cc(true) / definition_list_item
+ = C(parsers.line)
+ * 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)
- * (blank^0
- * -DefinitionListItemLoose * Cc(true))
- ) / writer.definitionlist
+ = ( Ct(DefinitionListItemLoose^1) * Cc(false)
+ + Ct(DefinitionListItemTight^1)
+ * (blank^0
+ * -DefinitionListItemLoose * Cc(true))
+ ) / writer.definitionlist
self.insert_pattern("Block after Heading",
DefinitionList, "DefinitionList")
@@ -30824,7 +32630,6 @@ M.extensions.fancy_lists = function()
local options = self.options
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->fancylist} as a function that will transform an
@@ -30885,7 +32690,8 @@ M.extensions.fancy_lists = function()
return {"\\markdownRendererFancyOlItemWithNumber{",num,"}",s,
"\\markdownRendererFancyOlItemEnd "}
else
- return {"\\markdownRendererFancyOlItem ",s,"\\markdownRendererFancyOlItemEnd "}
+ return {"\\markdownRendererFancyOlItem ",s,
+ "\\markdownRendererFancyOlItemEnd "}
end
end
end, extend_reader = function(self)
@@ -30906,7 +32712,8 @@ M.extensions.fancy_lists = function()
continuation_marker = marker
end
for _,delim in ipairs(delims) do
- table.insert(markers_table, {start_marker, continuation_marker, delim})
+ table.insert(markers_table,
+ {start_marker, continuation_marker, delim})
end
end
return markers_table
@@ -30925,15 +32732,18 @@ M.extensions.fancy_lists = function()
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])
+ 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_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")
@@ -30957,7 +32767,8 @@ M.extensions.fancy_lists = function()
local markers_table = combine_markers_and_delims(markers, delims)
- local function enumerator(start_marker, _, delimiter_type, interrupting)
+ local function enumerator(start_marker, _,
+ delimiter_type, interrupting)
local delimiter_range
local allowed_end
if interrupting then
@@ -30965,7 +32776,8 @@ M.extensions.fancy_lists = function()
allowed_end = C(parsers.spacechar^1) * #parsers.linechar
else
delimiter_range = start_marker
- allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
+ allowed_end = C(parsers.spacechar^1)
+ + #(parsers.newline + parsers.eof)
end
return parsers.check_trail
@@ -30987,13 +32799,15 @@ M.extensions.fancy_lists = function()
end
local function roman2number(roman)
- local romans = { ["M"] = 1000, ["D"] = 500, ["C"] = 100, ["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
local len = string.len(roman)
while i < len do
- local z1, z2 = romans[ string.sub(roman, i, i) ], romans[ string.sub(roman, i+1, i+1) ]
+ local z1, z2 = romans[ string.sub(roman, i, i) ],
+ romans[ string.sub(roman, i+1, i+1) ]
if z1 < z2 then
numeral = numeral + (z2 - z1)
i = i + 2
@@ -31002,7 +32816,9 @@ M.extensions.fancy_lists = function()
i = i + 1
end
end
- if i <= len then numeral = numeral + romans[ string.sub(roman,i,i) ] end
+ if i <= len then
+ numeral = numeral + romans[ string.sub(roman,i,i) ]
+ end
return numeral
end
@@ -31027,11 +32843,13 @@ M.extensions.fancy_lists = function()
end
num = numstr:match("^([A-Z])$")
if num then
- return string.byte(num) - string.byte("A") + 1, "UpperAlpha", numdelim
+ return string.byte(num) - string.byte("A") + 1,
+ "UpperAlpha", numdelim
end
num = numstr:match("^([a-z])$")
if num then
- return string.byte(num) - string.byte("a") + 1, "LowerAlpha", numdelim
+ return string.byte(num) - string.byte("a") + 1,
+ "LowerAlpha", numdelim
end
num = numstr:match("^([IVXLCDM]+)")
if num then
@@ -31045,42 +32863,44 @@ M.extensions.fancy_lists = function()
end
local function fancylist(items,tight,start)
- local startnum, numstyle, numdelim = sniffstyle(start[2][1], start[2][2])
+ local startnum, numstyle, numdelim
+ = sniffstyle(start[2][1], start[2][2])
return writer.fancylist(items,tight,
options.startNumber and startnum or 1,
numstyle or "Decimal",
numdelim or "Default")
end
- 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 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 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
+ local ListStarter = starter
self.update_rule("OrderedList", FancyList)
- self.update_rule("Endline", Endline)
+ self.update_rule("ListStarter", ListStarter)
end
}
end
@@ -31110,7 +32930,6 @@ M.extensions.fenced_code = function(blank_before_code_fence,
local options = self.options
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->fencedCode} as a function that will transform an
@@ -31124,20 +32943,22 @@ M.extensions.fenced_code = function(blank_before_code_fence,
s = s:gsub("\n$", "")
local buf = {}
if attr ~= nil then
- table.insert(buf, {"\\markdownRendererFencedCodeAttributeContextBegin",
- self.attributes(attr)})
+ table.insert(buf,
+ {"\\markdownRendererFencedCodeAttributeContextBegin",
+ self.attributes(attr)})
end
local name = util.cache_verbatim(options.cacheDir, s)
- table.insert(buf, {"\\markdownRendererInputFencedCode{",
- name,"}{",self.string(i),"}{",self.infostring(i),"}"})
+ table.insert(buf,
+ {"\\markdownRendererInputFencedCode{",
+ name,"}{",self.string(i),"}{",self.infostring(i),"}"})
if attr ~= nil then
- table.insert(buf, "\\markdownRendererFencedCodeAttributeContextEnd{}")
+ table.insert(buf,
+ "\\markdownRendererFencedCodeAttributeContextEnd{}")
end
return buf
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->rawBlock} as a function that will transform an
@@ -31171,11 +32992,13 @@ M.extensions.fenced_code = function(blank_before_code_fence,
- parsers.newline)^0)
/ strip_enclosing_whitespaces)
- local backtick_infostring = Cs(Cs((V("HtmlEntity")
- + (-#(parsers.backslash * parsers.backtick) * parsers.anyescaped)
- - parsers.newline
- - parsers.backtick)^0)
- / strip_enclosing_whitespaces)
+ local backtick_infostring
+ = Cs( Cs((V("HtmlEntity")
+ + ( -#(parsers.backslash * parsers.backtick)
+ * parsers.anyescaped)
+ - parsers.newline
+ - parsers.backtick)^0)
+ / strip_enclosing_whitespaces)
local fenceindent
@@ -31197,77 +33020,93 @@ M.extensions.fenced_code = function(blank_before_code_fence,
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
+ local count_fenced_start_indent =
+ function(_, _, 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
- return true
- end
- local fencehead = function(char, infostring)
- return Cmt(Cb("indent_info") * parsers.check_trail, count_fenced_start_indent)
- * Cg(char^3, "fencelength")
- * parsers.optionalspace
- * infostring
- * (parsers.newline + parsers.eof)
+ local fencehead = function(char, infostring)
+ return Cmt( Cb("indent_info")
+ * parsers.check_trail, count_fenced_start_indent)
+ * Cg(char^3, "fencelength")
+ * parsers.optionalspace
+ * infostring
+ * (parsers.newline + parsers.eof)
end
- local fencetail = function(char)
- return parsers.check_trail_no_rem
- * Cmt(C(char^3) * Cb("fencelength"), captures_geq_length)
- * parsers.optionalspace * (parsers.newline + parsers.eof)
- + parsers.eof
+ local fencetail = function(char)
+ 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 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
+ local process_fenced_line =
+ function(s, i, -- luacheck: ignore s i
+ indent_table, line_content, is_blank)
+ 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
+ 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
+ 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
+ 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
- end
- return true, str:sub(index)
- 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)
+ 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 blankfencedline
+ = Cmt( Cb("indent_info")
+ * C(parsers.blankline)
+ * Cc(true), process_fenced_line)
local TildeFencedCode
- = fencehead(parsers.tilde, tilde_infostring)
- * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline
- + (parsers.check_minimal_indent / "") * fencedline(parsers.tilde))^0)
- * ((parsers.check_minimal_indent / "") * fencetail(parsers.tilde) + parsers.succeed)
+ = fencehead(parsers.tilde, tilde_infostring)
+ * 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(((parsers.check_minimal_blank_indent / "") * blankfencedline
- + (parsers.check_minimal_indent / "") * fencedline(parsers.backtick))^0)
- * ((parsers.check_minimal_indent / "") * fencetail(parsers.backtick) + parsers.succeed)
+ * 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
@@ -31277,28 +33116,28 @@ M.extensions.fenced_code = function(blank_before_code_fence,
* Ct(parsers.attributes))
local FencedCode
- = ((TildeFencedCode + BacktickFencedCode)
- / function(infostring, code)
- local expanded_code = self.expandtabs(code)
-
- if allow_raw_blocks then
- local raw_attr = lpeg.match(parsers.raw_attribute,
- infostring)
- if raw_attr then
- return writer.rawBlock(expanded_code, raw_attr)
- end
- end
-
- local attr = nil
- if allow_attributes then
- local match = lpeg.match(infostring_with_attributes,
- infostring)
- if match then
- infostring, attr = table.unpack(match)
- end
- end
- return writer.fencedCode(expanded_code, infostring, attr)
- end)
+ = ((TildeFencedCode + BacktickFencedCode)
+ / function(infostring, code)
+ local expanded_code = self.expandtabs(code)
+
+ if allow_raw_blocks then
+ local raw_attr = lpeg.match(parsers.raw_attribute,
+ infostring)
+ if raw_attr then
+ return writer.rawBlock(expanded_code, raw_attr)
+ end
+ end
+
+ local attr = nil
+ if allow_attributes then
+ local match = lpeg.match(infostring_with_attributes,
+ infostring)
+ if match then
+ infostring, attr = table.unpack(match)
+ end
+ end
+ return writer.fencedCode(expanded_code, infostring, attr)
+ end)
self.insert_pattern("Block after Verbatim",
FencedCode, "FencedCode")
@@ -31340,7 +33179,6 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
name = "built-in fenced_divs syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->div_begin} as a function that will transform the
@@ -31350,13 +33188,15 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
% \end{markdown}
% \begin{macrocode}
function self.div_begin(attributes)
- local start_output = {"\\markdownRendererFencedDivAttributeContextBegin\n",
- self.attributes(attributes)}
- local end_output = {"\\markdownRendererFencedDivAttributeContextEnd{}"}
- return self.push_attributes("div", attributes, start_output, end_output)
+ local start_output
+ = {"\\markdownRendererFencedDivAttributeContextBegin\n",
+ self.attributes(attributes)}
+ local end_output
+ = {"\\markdownRendererFencedDivAttributeContextEnd{}"}
+ return self.push_attributes(
+ "div", attributes, start_output, end_output)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->div_end} as a function that will produce the end of a
@@ -31371,7 +33211,6 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
local parsers = self.parsers
local writer = self.writer
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define basic patterns for matching the opening and the closing tag of a div.
@@ -31397,7 +33236,6 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
* parsers.optionalspace
* (parsers.newline + parsers.eof)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Initialize a named group named `fenced_div_level` for tracking how deep
@@ -31414,21 +33252,24 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
self.initialize_named_group("fenced_div_num_opening_indents")
local function increment_div_level()
- local function push_indent_table(s, i, indent_table, -- luacheck: ignore s i
- fenced_div_num_opening_indents, fenced_div_level)
- fenced_div_level = tonumber(fenced_div_level) + 1
- local num_opening_indents = 0
- if indent_table.indents ~= nil then
- num_opening_indents = #indent_table.indents
+ local push_indent_table =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ fenced_div_num_opening_indents, fenced_div_level)
+ fenced_div_level = tonumber(fenced_div_level) + 1
+ local num_opening_indents = 0
+ if indent_table.indents ~= nil then
+ num_opening_indents = #indent_table.indents
+ end
+ fenced_div_num_opening_indents[fenced_div_level]
+ = num_opening_indents
+ return true, fenced_div_num_opening_indents
end
- fenced_div_num_opening_indents[fenced_div_level] = num_opening_indents
- return true, fenced_div_num_opening_indents
- end
- local function increment_level(s, i, fenced_div_level) -- luacheck: ignore s i
- fenced_div_level = tonumber(fenced_div_level) + 1
- return true, tostring(fenced_div_level)
- end
+ local increment_level =
+ function(s, i, fenced_div_level) -- luacheck: ignore s i
+ fenced_div_level = tonumber(fenced_div_level) + 1
+ return true, tostring(fenced_div_level)
+ end
return Cg( Cmt( Cb("indent_info")
* Cb("fenced_div_num_opening_indents")
@@ -31439,11 +33280,13 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
end
local function decrement_div_level()
- local function pop_indent_table(s, i, fenced_div_indent_table, fenced_div_level) -- luacheck: ignore s i
- fenced_div_level = tonumber(fenced_div_level)
- fenced_div_indent_table[fenced_div_level] = nil
- return true, tostring(fenced_div_level - 1)
- end
+ local pop_indent_table =
+ function(s, i, -- luacheck: ignore s i
+ fenced_div_indent_table, fenced_div_level)
+ fenced_div_level = tonumber(fenced_div_level)
+ fenced_div_indent_table[fenced_div_level] = nil
+ return true, tostring(fenced_div_level - 1)
+ end
return Cg( Cmt( Cb("fenced_div_num_opening_indents")
* Cb("fenced_div_level"), pop_indent_table)
@@ -31451,21 +33294,24 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
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_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 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 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 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
@@ -31478,7 +33324,9 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
local FencedDiv = fenced_div_begin
/ function (infostring)
- local attr = lpeg.match(Ct(parsers.attributes), infostring)
+ local attr
+ = lpeg.match(Ct(parsers.attributes),
+ infostring)
if attr == nil then
attr = {"." .. infostring}
end
@@ -31489,7 +33337,8 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
* parsers.skipblanklines
* Ct(content_loop)
* parsers.minimally_indented_blank^0
- * parsers.check_minimal_indent_and_trail * fenced_div_end
+ * parsers.check_minimal_indent_and_trail
+ * fenced_div_end
* decrement_div_level()
* (Cc("") / writer.div_end)
@@ -31499,7 +33348,6 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
self.add_special_character(":")
% \end{macrocode}
-% \par
% \begin{markdown}
%
% If the `blank_before_div_fence` parameter is `false`, we will have the
@@ -31510,23 +33358,27 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
% \end{markdown}
% \begin{macrocode}
local function is_inside_div()
- local function check_div_level(s, i, fenced_div_level) -- luacheck: ignore s i
- fenced_div_level = tonumber(fenced_div_level)
- return fenced_div_level > 0
- end
+ local check_div_level =
+ function(s, i, fenced_div_level) -- luacheck: ignore s i
+ fenced_div_level = tonumber(fenced_div_level)
+ return fenced_div_level > 0
+ end
return Cmt(Cb("fenced_div_level"), check_div_level)
end
local function check_indent()
- local function compare_indent(s, i, indent_table, -- luacheck: ignore s i
- fenced_div_num_opening_indents, fenced_div_level)
- fenced_div_level = tonumber(fenced_div_level)
- local num_current_indents = (indent_table.current_line_indents ~= nil and
- #indent_table.current_line_indents) or 0
- local num_opening_indents = fenced_div_num_opening_indents[fenced_div_level]
- return num_current_indents == num_opening_indents
- end
+ local compare_indent =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ fenced_div_num_opening_indents, fenced_div_level)
+ fenced_div_level = tonumber(fenced_div_level)
+ local num_current_indents
+ = ( indent_table.current_line_indents ~= nil and
+ #indent_table.current_line_indents) or 0
+ local num_opening_indents
+ = fenced_div_num_opening_indents[fenced_div_level]
+ return num_current_indents == num_opening_indents
+ end
return Cmt( Cb("indent_info")
* Cb("fenced_div_num_opening_indents")
@@ -31598,26 +33450,31 @@ M.extensions.header_attributes = function()
* 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_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)
@@ -31666,7 +33523,6 @@ M.extensions.line_blocks = function()
name = "built-in line_blocks syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->lineblock} as a function that will transform
@@ -31691,18 +33547,18 @@ M.extensions.line_blocks = function()
local parsers = self.parsers
local writer = self.writer
- local LineBlock = Ct(
- (Cs(
- ( (parsers.pipe * parsers.space)/""
- * ((parsers.space)/entities.char_entity("nbsp"))^0
- * parsers.linechar^0 * (parsers.newline/""))
- * (-parsers.pipe
- * (parsers.space^1/" ")
- * parsers.linechar^1
- * (parsers.newline/"")
- )^0
- * (parsers.blankline/"")^0
- ) / self.parser_functions.parse_inlines)^1) / writer.lineblock
+ local LineBlock
+ = Ct((Cs(( (parsers.pipe * parsers.space) / ""
+ * ((parsers.space)/entities.char_entity("nbsp"))^0
+ * parsers.linechar^0 * (parsers.newline/""))
+ * (-parsers.pipe
+ * (parsers.space^1/" ")
+ * parsers.linechar^1
+ * (parsers.newline/"")
+ )^0
+ * (parsers.blankline/"")^0)
+ / self.parser_functions.parse_inlines)^1)
+ / writer.lineblock
self.insert_pattern("Block after Blockquote",
LineBlock, "LineBlock")
@@ -31724,7 +33580,6 @@ M.extensions.mark = function()
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
@@ -31742,8 +33597,9 @@ M.extensions.mark = function()
local doubleequals = P("==")
- local Mark = parsers.between(V("Inline"), doubleequals, doubleequals)
- / function (inlines) return writer.mark(inlines) end
+ 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",
@@ -31776,13 +33632,18 @@ M.extensions.link_attributes = function()
%
% \end{markdown}
% \begin{macrocode}
- 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 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
/ self.register_link
@@ -31797,8 +33658,10 @@ M.extensions.link_attributes = function()
% \end{markdown}
% \begin{macrocode}
- local LinkWithAttributesAndEmph = Ct(parsers.link_and_emph_table * Cg(Cc(true), "match_link_attributes"))
- / self.defer_link_and_emphasis_processing
+ 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)
@@ -31863,7 +33726,6 @@ M.extensions.notes = function(notes, inline_notes)
name = "built-in notes syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->note} as a function that will transform an
@@ -31883,9 +33745,10 @@ M.extensions.notes = function(notes, inline_notes)
if inline_notes then
local InlineNote
- = parsers.circumflex
- * (parsers.link_label / self.parser_functions.parse_inlines_no_inline_note)
- / writer.note
+ = parsers.circumflex
+ * ( parsers.link_label
+ / self.parser_functions.parse_inlines_no_inline_note)
+ / writer.note
self.insert_pattern("Inline after LinkAndEmph",
InlineNote, "InlineNote")
@@ -31923,26 +33786,37 @@ M.extensions.notes = function(notes, inline_notes)
local NoteRef = RawNoteRef / lookup_note
- local optionally_indented_line = parsers.check_optional_indent_and_any_trail * parsers.line
+ 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 blank
+ = parsers.check_optional_blank_indent_and_any_trail
+ * parsers.optionalspace * parsers.newline
- local chunk = Cs(parsers.line * (optionally_indented_line - blank)^0)
+ 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)
+ * ( blank^1 * (parsers.check_optional_indent / "")
+ * parsers.check_code_trail
+ * -parsers.blankline * bl)^0)
end
local NoteBlock
- = parsers.check_trail_no_rem * RawNoteRef * parsers.colon
+ = parsers.check_trail_no_rem
+ * RawNoteRef * parsers.colon
* parsers.spnlc * indented_blocks(chunk)
/ register_note
- local Reference = NoteBlock + parsers.Reference
+ self.update_rule("Reference", function(previous_pattern)
+ if previous_pattern == nil then
+ previous_pattern = parsers.Reference
+ end
+ return NoteBlock + previous_pattern
+ end)
- self.update_rule("Reference", Reference)
self.insert_pattern("Inline before LinkAndEmph",
NoteRef, "NoteRef")
end
@@ -32024,7 +33898,6 @@ M.extensions.pipe_tables = function(table_captions, table_attributes)
name = "built-in pipe_tables syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->table} as a function that will transform an input
@@ -32094,24 +33967,26 @@ M.extensions.pipe_tables = function(table_captions, table_attributes)
, table_hline_separator
, table_hline_column)
- 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 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_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
@@ -32128,7 +34003,8 @@ M.extensions.pipe_tables = function(table_captions, table_attributes)
+ ( parsers.newline
* #( parsers.optionalspace
* parsers.linechar)
- * C(parsers.optionalspace) / writer.space))
+ * C(parsers.optionalspace)
+ / writer.space))
* (parsers.linechar
- parsers.lbrace)^0)^1)
/ self.parser_functions.parse_inlines)
@@ -32142,7 +34018,8 @@ M.extensions.pipe_tables = function(table_captions, table_attributes)
+ ( parsers.newline
* #( parsers.optionalspace
* parsers.linechar)
- * C(parsers.optionalspace) / writer.space))^1)
+ * C(parsers.optionalspace)
+ / writer.space))^1)
/ self.parser_functions.parse_inlines
* parsers.newline
end
@@ -32150,12 +34027,15 @@ M.extensions.pipe_tables = function(table_captions, table_attributes)
table_caption = parsers.fail
end
- 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
+ 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
self.insert_pattern("Block after Blockquote",
PipeTable, "PipeTable")
@@ -32179,7 +34059,6 @@ M.extensions.raw_inline = function()
local options = self.options
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->rawInline} as a function that will transform an
@@ -32221,7 +34100,6 @@ M.extensions.strike_through = function()
name = "built-in strike_through syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->strike_through} as a function that will transform
@@ -32264,7 +34142,6 @@ M.extensions.subscripts = function()
name = "built-in subscripts syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->subscript} as a function that will transform
@@ -32306,7 +34183,6 @@ M.extensions.superscripts = function()
name = "built-in superscripts syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->superscript} as a function that will transform
@@ -32323,7 +34199,8 @@ M.extensions.superscripts = function()
local writer = self.writer
local Superscript = (
- parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex)
+ parsers.between(parsers.Str, parsers.circumflex,
+ parsers.circumflex)
) / writer.superscript
self.insert_pattern("Inline after LinkAndEmph",
@@ -32350,7 +34227,6 @@ M.extensions.tex_math = function(tex_math_dollars,
name = "built-in tex_math syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->display_math} as a function that will transform
@@ -32386,11 +34262,13 @@ M.extensions.tex_math = function(tex_math_dollars,
return str:gsub("^%s*(.-)$", "%1")
end
- local allowed_before_closing = B( parsers.backslash * parsers.any
- + parsers.any * (parsers.any - parsers.backslash))
+ local allowed_before_closing
+ = B( parsers.backslash * 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 allowed_before_closing_no_space
+ = B( parsers.backslash * parsers.any
+ + parsers.any * (parsers.nonspacechar - parsers.backslash))
% \end{macrocode}
% \begin{markdown}
@@ -32399,18 +34277,20 @@ M.extensions.tex_math = function(tex_math_dollars,
%
% \end{markdown}
% \begin{macrocode}
- local dollar_math_content = (parsers.newline * (parsers.check_optional_indent / "")
- + parsers.backslash^-1
- * parsers.linechar)
- - parsers.blankline^2
- - parsers.dollar
+ 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_no_space
- * parsers.dollar
- * -#(parsers.digit)
+ local inline_math_closing_dollars
+ = allowed_before_closing_no_space
+ * parsers.dollar
+ * -#(parsers.digit)
local inline_math_dollars = between(Cs( dollar_math_content),
inline_math_opening_dollars,
@@ -32433,9 +34313,10 @@ M.extensions.tex_math = function(tex_math_dollars,
%
% \end{markdown}
% \begin{macrocode}
- local backslash_math_content = (parsers.newline * (parsers.check_optional_indent / "")
- + parsers.linechar)
- - parsers.blankline^2
+ local backslash_math_content
+ = (parsers.newline * (parsers.check_optional_indent / "")
+ + parsers.linechar)
+ - parsers.blankline^2
% \end{macrocode}
% \begin{markdown}
%
@@ -32555,16 +34436,19 @@ end
% \acro{yaml} metadata block syntax extension. When the
% `expect_jekyll_data` parameter is `true`, then a markdown document
% may begin directly with \acro{yaml} metadata and may contain nothing
-% but \acro{yaml} metadata.
+% but \acro{yaml} metadata. When both `expect_jekyll_data` and
+% `ensure_jekyll_data` parameters are `true`, then a a markdown document must
+% begin directly with \acro{yaml} metadata and must contain nothing but
+% \acro{yaml} metadata.
%
% \end{markdown}
% \begin{macrocode}
-M.extensions.jekyll_data = function(expect_jekyll_data)
+M.extensions.jekyll_data = function(expect_jekyll_data,
+ ensure_jekyll_data)
return {
name = "built-in jekyll_data syntax extension",
extend_writer = function(self)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Define \luamdef{writer->jekyllData} as a function that will transform an
@@ -32572,7 +34456,8 @@ M.extensions.jekyll_data = function(expect_jekyll_data)
% the key `p` in the parent table; if `p` is nil, then the table has no parent.
% All scalar keys and values encountered in the table will be cast to a string
% following \acro{yaml} serialization rules. String values will also be
-% transformed using the function `t`.
+% transformed using the function `t` for the typographic output format used by
+% the \mref{markdownRendererJekyllDataTypographicString} macro.
%
% \end{markdown}
% \begin{macrocode}
@@ -32617,17 +34502,18 @@ M.extensions.jekyll_data = function(expect_jekyll_data)
::not_a_sequence::
if is_sequence then
- table.insert(buf, "\\markdownRendererJekyllDataSequenceBegin{")
- table.insert(buf, self.identifier(p or "null"))
- table.insert(buf, "}{")
- table.insert(buf, #keys)
- table.insert(buf, "}")
+ table.insert(buf,
+ "\\markdownRendererJekyllDataSequenceBegin{")
+ table.insert(buf, self.identifier(p or "null"))
+ table.insert(buf, "}{")
+ table.insert(buf, #keys)
+ table.insert(buf, "}")
else
- table.insert(buf, "\\markdownRendererJekyllDataMappingBegin{")
- table.insert(buf, self.identifier(p or "null"))
- table.insert(buf, "}{")
- table.insert(buf, #keys)
- table.insert(buf, "}")
+ table.insert(buf, "\\markdownRendererJekyllDataMappingBegin{")
+ table.insert(buf, self.identifier(p or "null"))
+ table.insert(buf, "}{")
+ table.insert(buf, #keys)
+ table.insert(buf, "}")
end
for _, k in ipairs(keys) do
@@ -32655,7 +34541,14 @@ M.extensions.jekyll_data = function(expect_jekyll_data)
table.insert(buf, v)
table.insert(buf, "}")
elseif typ == "string" then
- table.insert(buf, "\\markdownRendererJekyllDataString{")
+ table.insert(buf,
+ "\\markdownRendererJekyllDataProgrammaticString{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, self.identifier(v))
+ table.insert(buf, "}")
+ table.insert(buf,
+ "\\markdownRendererJekyllDataTypographicString{")
table.insert(buf, k)
table.insert(buf, "}{")
table.insert(buf, t(v))
@@ -32665,8 +34558,10 @@ M.extensions.jekyll_data = function(expect_jekyll_data)
table.insert(buf, k)
table.insert(buf, "}")
else
- error(format("Unexpected type %s for value of " ..
- "YAML key %s", typ, k))
+ local error = self.error(format(
+ "Unexpected type %s for value of "
+ .. "YAML key %s.", typ, k))
+ table.insert(buf, error)
end
end
end
@@ -32688,38 +34583,48 @@ M.extensions.jekyll_data = function(expect_jekyll_data)
local writer = self.writer
local JekyllData
- = Cmt( C((parsers.line - P("---") - P("..."))^0)
- , function(s, i, text) -- luacheck: ignore s i
- local data
- local ran_ok, _ = pcall(function()
- -- TODO: Replace with `require("tinyyaml")` in TeX Live 2023
- local tinyyaml = require("markdown-tinyyaml")
- data = tinyyaml.parse(text, {timestamps=false})
- end)
- if ran_ok and data ~= nil then
- return true, writer.jekyllData(data, function(s)
- return self.parser_functions.parse_blocks_nested(s)
- end, nil)
- else
- return false
- end
- end
- )
+ = Cmt( C((parsers.line - P("---") - P("..."))^0)
+ , function(s, i, text) -- luacheck: ignore s i
+ local data
+ local ran_ok, _ = pcall(function()
+ local tinyyaml = require("tinyyaml")
+ data = tinyyaml.parse(text, {timestamps=false})
+ end)
+ if ran_ok and data ~= nil then
+ return true, writer.jekyllData(data, function(s)
+ return self.parser_functions.parse_blocks_nested(s)
+ end, nil)
+ else
+ return false
+ end
+ end
+ )
local UnexpectedJekyllData
- = P("---")
- * parsers.blankline / 0
- * #(-parsers.blankline) -- if followed by blank, it's thematic break
- * JekyllData
- * (P("---") + P("..."))
+ = P("---")
+ * parsers.blankline / 0
+ -- if followed by blank, it's thematic break
+ * #(-parsers.blankline)
+ * JekyllData
+ * (P("---") + P("..."))
local ExpectedJekyllData
- = ( P("---")
- * parsers.blankline / 0
- * #(-parsers.blankline) -- if followed by blank, it's thematic break
- )^-1
- * JekyllData
- * (P("---") + P("..."))^-1
+ = ( P("---")
+ * parsers.blankline / 0
+ -- if followed by blank, it's thematic break
+ * #(-parsers.blankline)
+ )^-1
+ * JekyllData
+ * (P("---") + P("..."))^-1
+
+ if ensure_jekyll_data then
+ ExpectedJekyllData = ExpectedJekyllData
+ * parsers.eof
+ else
+ ExpectedJekyllData = ( ExpectedJekyllData
+ * (V("Blank")^0 / writer.interblocksep)
+ )^-1
+ end
self.insert_pattern("Block before Blockquote",
UnexpectedJekyllData, "UnexpectedJekyllData")
@@ -32734,15 +34639,124 @@ end
%
%### Conversion from Markdown to Plain \TeX{}
%
-% The \luamref{new} function returns a conversion function that takes a
-% markdown string and turns it into a plain \TeX{} output. See Section
-% <#sec:lua-conversion>.
+% The \luamref{new} function of file `markdown.lua` loads file
+% `markdown-parser.lua` and calls its own function \luamref{new} unless option
+% \Opt{eagerCache} or \Opt{finalizeCache} has been enabled and a cached
+% conversion output exists, in which case it is returned without loading file
+% `markdown-parser.lua`.
+%
+% \end{markdown}
+% \iffalse
+%</lua>
+%<*lua-loader>
+% \fi
+% \begin{macrocode}
+function M.new(options)
+% \end{macrocode}
+% \begin{markdown}
+%
+% Make the `options` table inherit from the \luamref{defaultOptions} table.
+%
+% \end{markdown}
+% \begin{macrocode}
+ options = options or {}
+ setmetatable(options, { __index = function (_, key)
+ return defaultOptions[key] end })
+% \end{macrocode}
+% \begin{markdown}
+%
+% Return a conversion function that tries to produce a cached conversion output
+% exists. If no cached conversion output exists, we load the file
+% `markdown-parser.lua` and use it to convert the input.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local parser_convert = nil
+ return function(input)
+ local function convert(input)
+ if parser_convert == nil then
+% \end{macrocode}
+% \begin{markdown}
+%
+% Lazy-load `markdown-parser.lua` and check that it originates from the same
+% version of the Markdown package.
+%
+% \end{markdown}
+% \begin{macrocode}
+ local parser = require("markdown-parser")
+ if metadata.version ~= parser.metadata.version then
+ warn("markdown.lua " .. metadata.version .. " used with " ..
+ "markdown-parser.lua " .. parser.metadata.version .. ".")
+ end
+ parser_convert = parser.new(options)
+ end
+ return parser_convert(input)
+ end
+% \end{macrocode}
+% \begin{markdown}
+% If we cache markdown documents, produce the cache file and transform its
+% filename to plain \TeX{} output.
+%
+% When determining the name of the cache file, create salt for the hashing
+% function out of the package version and the passed options recognized by the
+% Lua interface (see Section <#sec:lua-options>).
+% \end{markdown}
+% \begin{macrocode}
+ local output
+ if options.eagerCache or options.finalizeCache then
+ local salt = util.salt(options)
+ local name = util.cache(options.cacheDir, input, salt, convert,
+ ".md.tex")
+ output = [[\input{]] .. name .. [[}\relax]]
+% \end{macrocode}
+% \begin{markdown}
+% Otherwise, return the result of the conversion directly.
+% \end{markdown}
+% \begin{macrocode}
+ else
+ output = convert(input)
+ end
+% \end{macrocode}
+% \begin{markdown}
+% If the \Opt{finalizeCache} option is enabled, populate the frozen cache in
+% the file \Opt{frozenCacheFileName} with an entry for markdown document
+% number \Opt{frozenCacheCounter}.
+% \end{markdown}
+% \begin{macrocode}
+ if options.finalizeCache then
+ local file, mode
+ if options.frozenCacheCounter > 0 then
+ mode = "a"
+ else
+ mode = "w"
+ end
+ file = assert(io.open(options.frozenCacheFileName, mode),
+ [[Could not open file "]] .. options.frozenCacheFileName
+ .. [[" for writing]])
+ assert(file:write(
+ [[\expandafter\global\expandafter\def\csname ]]
+ .. [[markdownFrozenCache]] .. options.frozenCacheCounter
+ .. [[\endcsname{]] .. output .. [[}]] .. "\n"))
+ assert(file:close())
+ end
+ return output
+ end
+end
+% \end{macrocode}
+% \iffalse
+%</lua-loader>
+%<*lua>
+% \fi
+% \begin{markdown}
+%
+% The \luamref{new} function from file `markdown-parser.lua` returns a
+% conversion function that takes a markdown string and turns it into a plain
+% \TeX{} output. See Section <#sec:lua-conversion>.
%
% \end{markdown}
% \begin{macrocode}
function M.new(options)
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Make the `options` table inherit from the \luamref{defaultOptions} table.
@@ -32753,7 +34767,6 @@ function M.new(options)
setmetatable(options, { __index = function (_, key)
return defaultOptions[key] end })
% \end{macrocode}
-% \par
% \begin{markdown}
%
% If the singleton cache contains a conversion function for the same `options`,
@@ -32769,7 +34782,15 @@ function M.new(options)
goto miss
end
end
- elseif singletonCache.options[k] ~= options[k] then
+% \end{macrocode}
+% \begin{markdown}
+%
+% The \Opt{cacheDir} option is disregarded.
+%
+% \end{markdown}
+% \begin{macrocode}
+ elseif k ~= "cacheDir"
+ and singletonCache.options[k] ~= options[k] then
goto miss
end
end
@@ -32777,7 +34798,6 @@ function M.new(options)
end
::miss::
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Apply built-in syntax extensions based on `options`.
@@ -32830,7 +34850,7 @@ function M.new(options)
if options.jekyllData then
local jekyll_data_extension = M.extensions.jekyll_data(
- options.expectJekyllData)
+ options.expectJekyllData, options.ensureJekyllData)
table.insert(extensions, jekyll_data_extension)
end
@@ -32893,7 +34913,8 @@ function M.new(options)
end
if options.citations then
- local citations_extension = M.extensions.citations(options.citationNbsps)
+ local citations_extension
+ = M.extensions.citations(options.citationNbsps)
table.insert(extensions, citations_extension)
end
@@ -32902,7 +34923,6 @@ function M.new(options)
table.insert(extensions, fancy_lists_extension)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Apply user-defined syntax extensions based on `options.extensions`.
@@ -32918,7 +34938,9 @@ function M.new(options)
%
% \end{markdown}
% \begin{macrocode}
- local pathname = kpse.lookup(filename)
+ local pathname = assert(kpse.find_file(filename),
+ [[Could not locate user-defined syntax extension "]]
+ .. filename)
local input_file = assert(io.open(pathname, "r"),
[[Could not open user-defined syntax extension "]]
.. pathname .. [[" for reading]])
@@ -32948,7 +34970,8 @@ function M.new(options)
.. type(user_extension.api_version)
.. [[" but "number" was expected]])
assert(user_extension.api_version > 0
- and user_extension.api_version <= metadata.user_extension_api_version,
+ and user_extension.api_version
+ <= metadata.user_extension_api_version,
[[User-defined syntax extension "]] .. pathname
.. [[" uses syntax extension API version "]]
.. user_extension.api_version .. [[ but markdown.lua ]]
@@ -32966,7 +34989,8 @@ function M.new(options)
.. [[" but "number" was expected]])
assert(user_extension.grammar_version == metadata.grammar_version,
[[User-defined syntax extension "]] .. pathname
- .. [[" uses grammar version "]] .. user_extension.grammar_version
+ .. [[" uses grammar version "]]
+ .. user_extension.grammar_version
.. [[ but markdown.lua ]] .. metadata.version
.. [[ uses grammar version ]] .. metadata.grammar_version
.. [[, which is incompatible]])
@@ -32998,7 +35022,6 @@ function M.new(options)
table.insert(extensions, user_extension)
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Produce a conversion function from markdown to plain \TeX.
@@ -33009,7 +35032,6 @@ function M.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
@@ -33020,7 +35042,6 @@ function M.new(options)
% \begin{macrocode}
collectgarbage("collect")
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Update the singleton cache.
@@ -33039,7 +35060,6 @@ function M.new(options)
singletonCache.convert = convert
end
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Return the conversion function from markdown to plain \TeX.
@@ -33048,14 +35068,18 @@ function M.new(options)
% \begin{macrocode}
return convert
end
-
-return M
% \end{macrocode}
% \iffalse
%</lua>
+%<*lua,lua-loader>
+% \fi
+% \begin{macrocode}
+return M
+% \end{macrocode}
+% \iffalse
+%</lua,lua-loader>
%<*lua-cli>
% \fi
-% \par
% \begin{markdown}
%
%### Command-Line Implementation {#lua-cli-implementation}
@@ -33131,14 +35155,13 @@ end
% \end{markdown}
% \begin{macrocode}
if options.cacheDir then
- lfs.rmdir(options["cacheDir"])
+ lfs.rmdir(options.cacheDir)
end
% \end{macrocode}
% \iffalse
%</lua-cli>
%<*tex>
% \fi
-% \par
% \begin{markdown}
%
% Plain \TeX{} Implementation {#teximplementation}
@@ -33211,66 +35234,130 @@ end
{ 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
+% provided with the Markdown package. Furthermore, 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
+\prop_new:N \g_@@_plain_tex_loaded_themes_versions_prop
\cs_new:Nn
- \@@_plain_tex_load_theme:nn
+ \@@_plain_tex_load_theme:nnn
{
\prop_get:NnNTF
\g_@@_plain_tex_loaded_themes_linenos_prop
{ #1 }
\l_tmpa_tl
{
- \msg_warning:nnnV
- { markdown }
- { repeatedly-loaded-plain-tex-theme }
+ \prop_get:NnN
+ \g_@@_plain_tex_loaded_themes_versions_prop
{ #1 }
- \l_tmpa_tl
+ \l_tmpb_tl
+ \str_if_eq:nVTF
+ { #2 }
+ \l_tmpb_tl
+ {
+ \msg_warning:nnnVn
+ { markdown }
+ { repeatedly-loaded-plain-tex-theme }
+ { #1 }
+ \l_tmpa_tl
+ { #2 }
+ }
+ {
+ \msg_error:nnnnVV
+ { markdown }
+ { different-versions-of-plain-tex-theme }
+ { #1 }
+ { #2 }
+ \l_tmpb_tl
+ \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 }
+ { \tex_the:D \tex_inputlineno:D } % noqa: W200
+ \prop_gput:Nnn
+ \g_@@_plain_tex_loaded_themes_versions_prop
+ { #1 }
+ { #2 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Load built-in plain \TeX{} themes from the prop
+% \mref{g_@@_plain_tex_built_in_themes_prop} and from the filesystem otherwise.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \prop_if_in:NnTF
+ \g_@@_plain_tex_built_in_themes_prop
+ { #1 }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-built-in-plain-tex-theme }
+ { #1 }
+ { #2 }
+ \prop_item:Nn
+ \g_@@_plain_tex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-plain-tex-theme }
+ { #1 }
+ { #2 }
+ \file_input:n
+ { markdown theme #3 }
+ }
}
}
\msg_new:nnn
{ markdown }
{ loading-plain-tex-theme }
- { Loading~plain~TeX~Markdown~theme~#1 }
+ { Loading~version~#2~of~plain~TeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { loading-built-in-plain-tex-theme }
+ { Loading~version~#2~of~built-in~plain~TeX~Markdown~theme~#1 }
\msg_new:nnn
{ markdown }
{ repeatedly-loaded-plain-tex-theme }
{
- Plain~TeX~Markdown~theme~#1~was~previously~
+ Version~#3~of~plain~TeX~Markdown~theme~#1~was~previously~
loaded~on~line~#2,~not~loading~it~again
}
+\msg_new:nnn
+ { markdown }
+ { different-versions-of-plain-tex-theme }
+ {
+ Tried~to~load~version~#2~of~plain~TeX~Markdown~theme~#1~
+ but~version~#3~has~already~been~loaded~on~line~#4
+ }
\cs_generate_variant:Nn
\prop_gput:Nnn
{ Nnx }
\cs_gset_eq:NN
- \@@_load_theme:nn
- \@@_plain_tex_load_theme:nn
+ \@@_load_theme:nnn
+ \@@_plain_tex_load_theme:nnn
\cs_generate_variant:Nn
- \@@_load_theme:nn
- { nV }
+ \@@_load_theme:nnn
+ { VeV }
+\cs_generate_variant:Nn
+ \msg_error:nnnnnn
+ { nnnnVV }
+\cs_generate_variant:Nn
+ \msg_warning:nnnnn
+ { nnnVn }
% \end{macrocode}
% \begin{markdown}
%
@@ -33325,23 +35412,623 @@ end
%
% \end{markdown}
% \begin{macrocode}
- \@@_plain_tex_load_theme:VV
+ \@@_plain_tex_load_theme:VeV
\l_tmpb_tl
+ { \markdownThemeVersion }
\l_tmpa_str
}
\cs_generate_variant:Nn
\tl_set:Nn
{ Ne }
\cs_generate_variant:Nn
- \@@_plain_tex_load_theme:nn
- { VV }
-\ExplSyntaxOff
+ \@@_plain_tex_load_theme:nnn
+ { VeV }
+% \end{macrocode}
+% \begin{markdown}
+%
+% The `witiko/dot` theme nags users that they should use the name
+% `witiko/diagrams@v1` instead.
+%
+% \end{markdown}
+% \begin{macrocode}
+\prop_gput:Nnn
+ \g_@@_plain_tex_built_in_themes_prop
+ { witiko / dot }
+ {
+ \str_if_eq:enF
+ { \markdownThemeVersion }
+ { silent }
+ {
+ \markdownWarning
+ {
+ The~theme~name~"witiko/dot"~has~been~soft-deprecated.
+ \iow_newline:
+ Consider~changing~the~name~to~"witiko/diagrams@v1".
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We enable the \Opt{fencedCode} Lua option.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \markdownSetup { fencedCode }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We store the previous definition of the fenced code token renderer prototype:
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_set_eq:NN
+ \@@_dot_previous_definition:nnn
+ \markdownRendererInputFencedCodePrototype
+% \end{macrocode}
+% \begin{markdown}
+%
+% If the infostring starts with `dot …`, we redefine the fenced code block
+% token renderer prototype, so that it typesets the code block via Graphviz
+% tools if and only if the \Opt{frozenCache} plain \TeX{} option is
+% disabled and the code block has not been previously typeset:
+%
+% \end{markdown}
+% \begin{macrocode}
+ \regex_const:Nn
+ \c_@@_dot_infostring_regex
+ { ^dot(\s+(.+))? }
+ \seq_new:N
+ \l_@@_dot_matches_seq
+ \markdownSetup {
+ rendererPrototypes = {
+ inputFencedCode = {
+ \regex_extract_once:NnNTF
+ \c_@@_dot_infostring_regex
+ { #2 }
+ \l_@@_dot_matches_seq
+ {
+ \@@_if_option:nF
+ { frozenCache }
+ {
+ \sys_shell_now:n
+ {
+ if~!~test~-e~#1.pdf.source~
+ ||~!~diff~#1~#1.pdf.source;
+ then~
+ dot~-Tpdf~-o~#1.pdf~#1;
+ cp~#1~#1.pdf.source;
+ fi
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We include the typeset image using the image token renderer:
+%
+% \end{markdown}
+% \begin{macrocode}
+ \exp_args:NNne
+ \exp_last_unbraced:No
+ \markdownRendererImage
+ {
+ { Graphviz~image }
+ { #1.pdf }
+ { #1.pdf }
+ }
+ {
+ \seq_item:Nn
+ \l_@@_dot_matches_seq
+ { 3 }
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% If the infostring does not start with `dot …`, we use the previous definition
+% of the fenced code token renderer prototype:
+%
+% \end{markdown}
+% \begin{macrocode}
+ {
+ \@@_dot_previous_definition:nnn
+ { #1 }
+ { #2 }
+ { #3 }
+ }
+ },
+ },
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% The theme `witiko/diagrams` loads either the theme `witiko/dot` for version
+% `v1` or the theme `witiko/diagrams/v2` for version `v2`.
+%
+% \end{markdown}
+% \begin{macrocode}
+\prop_gput:Nnn
+ \g_@@_plain_tex_built_in_themes_prop
+ { witiko / diagrams }
+ {
+ \str_case:enF
+ { \markdownThemeVersion }
+ {
+ { latest }
+ {
+ \markdownWarning
+ {
+ Write~"witiko/diagrams@v2"~to~pin~version~"v2"~of~the~
+ theme~"witiko/diagrams".~This~will~keep~your~documents~
+ from~suddenly~breaking~when~we~have~released~future~
+ versions~of~the~theme~with~backwards-incompatible~
+ syntax~and~behavior.
+ }
+ \markdownSetup
+ {
+ import = witiko/diagrams/v2,
+ }
+ }
+ { v2 }
+ {
+ \markdownSetup
+ {
+ import = witiko/diagrams/v2,
+ }
+ }
+ { v1 }
+ {
+ \markdownSetup
+ {
+ import = witiko/dot@silent,
+ }
+ }
+ }
+ {
+ \msg_error:nnnen
+ { markdown }
+ { unknown-theme-version }
+ { witiko/diagrams }
+ { \markdownThemeVersion }
+ { v1 }
+ }
+ }
+\cs_generate_variant:Nn
+ \msg_error:nnnnn
+ { nnnen }
+\msg_new:nnnn
+ { markdown }
+ { unknown-theme-version }
+ { Unknown~version~"#2"~of~theme~"#1"~has~been~requested. }
+ { Known~versions~are:~#3 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Next, we implement the theme `witiko/diagrams/v2`.
+%
+% \end{markdown}
+% \begin{macrocode}
+\prop_gput:Nnn
+ \g_@@_plain_tex_built_in_themes_prop
+ { witiko / diagrams / v2 }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% We enable the \Opt{fencedCode} and \Opt{fencedCodeAttributes} Lua
+% option.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \@@_setup:n
+ {
+ fencedCode = true,
+ fencedCodeAttributes = true,
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Store the previous fenced code token renderer prototype.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_set_eq:NN
+ \@@_diagrams_previous_fenced_code:nnn
+ \markdownRendererInputFencedCodePrototype
+% \end{macrocode}
+% \begin{markdown}
+%
+% Store the caption of the diagram.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \tl_new:N
+ \l_@@_diagrams_caption_tl
+ \@@_setup:n
+ {
+ rendererPrototypes = {
+% \end{macrocode}
+% \begin{markdown}
+%
+% Route attributes on fenced code blocks to the image attribute renderer
+% prototypes.
+%
+% \end{markdown}
+% \begin{macrocode}
+ fencedCodeAttributeContextBegin = {
+ \group_begin:
+ \markdownRendererImageAttributeContextBegin
+ \cs_set_eq:NN
+ \@@_diagrams_previous_key_value:nn
+ \markdownRendererAttributeKeyValuePrototype
+ \@@_setup:n
+ {
+ rendererPrototypes = {
+ attributeKeyValue = {
+ \str_if_eq:nnTF
+ { ##1 }
+ { caption }
+ {
+ \tl_set:Nn
+ \l_@@_diagrams_caption_tl
+ { ##2 }
+ }
+ {
+ \@@_diagrams_previous_key_value:nn
+ { ##1 }
+ { ##2 }
+ }
+ },
+ },
+ }
+ },
+ fencedCodeAttributeContextEnd = {
+ \markdownRendererImageAttributeContextEnd
+ \group_end:
+ },
+ },
+ }
+ \cs_new:Nn
+ \@@_diagrams_render_diagram:nnnn
+ {
+ \@@_if_option:nF
+ { frozenCache }
+ {
+ \sys_shell_now:n
+ {
+ if~!~test~-e~#2.source~
+ ||~!~diff~#1~#2.source;
+ then~
+ (#3);
+ cp~#1~#2.source;
+ fi
+ }
+ \exp_args:NNnV
+ \exp_last_unbraced:No
+ \markdownRendererImage
+ {
+ { #4 }
+ { #2 }
+ { #2 }
+ }
+ \l_@@_diagrams_caption_tl
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Use the prop \mdef{g_markdown_diagrams_infostrings_prop} to determine how the
+% code with a given infostring should be processed and routed to the token
+% renderer prototype(s) for images.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \prop_new:N
+ \g_markdown_diagrams_infostrings_prop
+% \end{macrocode}
+% \begin{markdown}
+%
+% If we know a processing function for a given infostring, use it.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \@@_setup:n
+ {
+ rendererPrototypes = {
+ inputFencedCode = {
+ \prop_get:NnNTF
+ \g_markdown_diagrams_infostrings_prop
+ { #2 }
+ \l_tmpa_tl
+ {
+ \cs_set:NV
+ \@@_diagrams_infostrings_current:n
+ \l_tmpa_tl
+ \@@_diagrams_infostrings_current:n
+ { #1 }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Otherwise, use the previous fenced code token renderer prototype.
+%
+% \end{markdown}
+% \begin{macrocode}
+ {
+ \@@_diagrams_previous_fenced_code:nnn
+ { #1 }
+ { #2 }
+ { #3 }
+ }
+ },
+ },
+ }
+ \cs_generate_variant:Nn
+ \cs_set:Nn
+ { NV }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Typeset fenced code with infostring `dot` using the command `dot` from
+% the package Graphviz.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_set:Nn
+ \@@_diagrams_infostrings_current:n
+ {
+ \@@_diagrams_render_diagram:nnnn
+ { #1 }
+ { #1.pdf }
+ { dot~-Tpdf~-o~#1.pdf~#1 }
+ { Graphviz~image }
+ }
+ \@@_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ \@@_diagrams_infostrings_current:n
+ { 1 }
+ \prop_gput:NnV
+ \g_markdown_diagrams_infostrings_prop
+ { dot }
+ \l_tmpa_tl
+% \end{macrocode}
+% \begin{markdown}
+%
+% Typeset fenced code with infostring `mermaid` using the command `mmdc` from
+% the npm package `@mermaid-js/mermaid-cli`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_set:Nn
+ \@@_diagrams_infostrings_current:n
+ {
+ \@@_diagrams_render_diagram:nnnn
+ { #1 }
+ { #1.pdf }
+ { mmdc~--pdfFit~-i~#1~-o~#1.pdf }
+ { Mermaid~image }
+ }
+ \@@_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ \@@_diagrams_infostrings_current:n
+ { 1 }
+ \prop_gput:NnV
+ \g_markdown_diagrams_infostrings_prop
+ { mermaid }
+ \l_tmpa_tl
+% \end{macrocode}
+% \begin{markdown}
+%
+% Typeset fenced code with infostring `plantuml` using the command `plantuml`
+% from the package PlantUML.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \regex_const:Nn
+ \c_@@_diagrams_filename_suffix_regex
+ { \.[^.]*$ }
+ \cs_set:Nn
+ \@@_diagrams_infostrings_current:n
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #1 }
+ \regex_replace_once:NnN
+ \c_@@_diagrams_filename_suffix_regex
+ { .pdf }
+ \l_tmpa_tl
+ \@@_diagrams_render_diagram:nVnn
+ { #1 }
+ \l_tmpa_tl
+ { plantuml~-tpdf~#1 }
+ { PlantUML~image }
+ }
+ \cs_generate_variant:Nn
+ \@@_diagrams_render_diagram:nnnn
+ { nVnn }
+ \@@_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ \@@_diagrams_infostrings_current:n
+ { 1 }
+ \prop_gput:NnV
+ \g_markdown_diagrams_infostrings_prop
+ { plantuml }
+ \l_tmpa_tl
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We locally change the category code of percent signs, so that we
+% can use them in the shell code:
+%
+% \end{markdown}
+% \begin{macrocode}
+\group_begin:
+\char_set_catcode_other:N \%
+% \end{macrocode}
+% \begin{markdown}
+%
+% The `witiko/graphicx/http` theme stores the previous definition of the image
+% token renderer prototype:
+%
+% \end{markdown}
+% \begin{macrocode}
+\prop_gput:Nnn
+ \g_@@_plain_tex_built_in_themes_prop
+ { witiko / graphicx / http }
+ {
+ \cs_set_eq:NN
+ \@@_graphicx_http_previous_definition:nnnn
+ \markdownRendererImagePrototype
+% \end{macrocode}
+% \begin{markdown}
+%
+% We define variables and functions to enumerate the images for caching and to
+% store the pathname of the file containing the pathname of the downloaded
+% image file.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \int_new:N
+ \g_@@_graphicx_http_image_number_int
+ \int_gset:Nn
+ \g_@@_graphicx_http_image_number_int
+ { 0 }
+ \cs_new:Nn
+ \@@_graphicx_http_filename:
+ {
+ \markdownOptionCacheDir
+ / witiko_graphicx_http .
+ \int_use:N
+ \g_@@_graphicx_http_image_number_int
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We define a function that will receive two arguments that correspond to the
+% URL of the online image and to the pathname, where the online image should
+% be downloaded. The function produces a shell command that tries to
+% downloads the online image to the pathname.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_new:Nn
+ \@@_graphicx_http_download:nn
+ {
+ wget~-O~#2~#1~
+ ||~curl~--location~-o~#2~#1~
+ ||~rm~-f~#2
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We redefine the image token renderer prototype, so that it tries to download
+% an online image.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \str_new:N
+ \l_@@_graphicx_http_filename_str
+ \ior_new:N
+ \g_@@_graphicx_http_filename_ior
+ \markdownSetup {
+ rendererPrototypes = {
+ image = {
+ \@@_if_option:nF
+ { frozenCache }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% The image will be downloaded only if the image URL has the http or https
+% protocols and the \Opt{frozenCache} plain \TeX{} option is disabled:
+%
+% \end{markdown}
+% \begin{macrocode}
+ \sys_shell_now:e
+ {
+ mkdir~-p~" \markdownOptionCacheDir ";
+ if~printf~'%s'~"#3"~|~grep~-q~-E~'^https?:';
+ then~
+% \end{macrocode}
+% \begin{markdown}
+%
+% The image will be downloaded to the pathname \Opt{cacheDir}<!--
+% -->`/`\meta{the MD5 digest of the image URL}`.`\meta{the suffix of the
+% image URL}:
+%
+% \end{markdown}
+% \begin{macrocode}
+ OUTPUT_PREFIX=" \markdownOptionCacheDir ";
+ OUTPUT_BODY="$(printf~'%s'~'#3'
+ |~md5sum~|~cut~-d'~'~-f1)";
+ OUTPUT_SUFFIX="$(printf~'%s'~'#3'
+ |~sed~'s/.*[.]//')";
+ OUTPUT="$OUTPUT_PREFIX/$OUTPUT_BODY.$OUTPUT_SUFFIX";
+% \end{macrocode}
+% \begin{markdown}
+%
+% The image will be downloaded only if it has not already been downloaded:
+%
+% \end{markdown}
+% \begin{macrocode}
+ if~!~[~-e~"$OUTPUT"~];
+ then~
+ \@@_graphicx_http_download:nn
+ { '#3' }
+ { "$OUTPUT" } ;
+ printf~'%s'~"$OUTPUT"~
+ >~" \@@_graphicx_http_filename: ";
+ fi;
+% \end{macrocode}
+% \begin{markdown}
+%
+% If the image does not have the http or https protocols or the image has
+% already been downloaded, the URL will be stored as-is:
+%
+% \end{markdown}
+% \begin{macrocode}
+ else~
+ printf~'%s'~'#3'~
+ >~" \@@_graphicx_http_filename: ";
+ fi
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% We load the pathname of the downloaded image and we typeset the image using
+% the previous definition of the image renderer prototype:
+%
+% \end{markdown}
+% \begin{macrocode}
+ \ior_open:Ne
+ \g_@@_graphicx_http_filename_ior
+ { \@@_graphicx_http_filename: }
+ \ior_str_get:NN
+ \g_@@_graphicx_http_filename_ior
+ \l_@@_graphicx_http_filename_str
+ \ior_close:N
+ \g_@@_graphicx_http_filename_ior
+ \@@_graphicx_http_previous_definition:nnVn
+ { #1 }
+ { #2 }
+ \l_@@_graphicx_http_filename_str
+ { #4 }
+ \int_gincr:N
+ \g_@@_graphicx_http_image_number_int
+ }
+ }
+ }
+ \cs_generate_variant:Nn
+ \ior_open:Nn
+ { Ne }
+ \cs_generate_variant:Nn
+ \@@_graphicx_http_previous_definition:nnnn
+ { nnVn }
+ }
+\group_end:
% \end{macrocode}
-% \iffalse
-%</tex>
-%<*themes-witiko-tilde>
-% \fi
-% \par
% \begin{markdown}
%
% The `witiko/tilde` theme redefines the tilde token renderer prototype,
@@ -33349,14 +36036,43 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\markdownSetup {
- rendererPrototypes = {
- tilde = {~},
- },
-}
+\prop_gput:Nnn
+ \g_@@_plain_tex_built_in_themes_prop
+ { witiko / tilde }
+ {
+ \markdownSetup {
+ rendererPrototypes = {
+ tilde = {~},
+ },
+ }
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% The themes `witiko/example/foo` and `witiko/example/bar` are supposed to be
+% used in code examples. They don't do anything.
+%
+% \end{markdown}
+% \begin{macrocode}
+\clist_map_inline:nn
+ { foo, bar }
+ {
+ \prop_gput:Nnn
+ \g_@@_plain_tex_built_in_themes_prop
+ { witiko / example / #1 }
+ {
+ \markdownWarning
+ {
+ The~theme~witiko/example/#1~is~supposed~to~be~used~in~code~
+ examples.~Using~it~in~actual~code~has~no~effect,~except~
+ this~warning~message,~and~is~usually~a~mistake.
+ }
+ }
+ }
+\ExplSyntaxOff
% \end{macrocode}
% \iffalse
-%</themes-witiko-tilde>
+%</tex>
%<*themes-witiko-markdown-defaults-tex>
% \fi
% \begin{markdown}
@@ -33406,18 +36122,22 @@ end
\def\markdownRendererUlEndTightPrototype{}%
\def\markdownRendererOlBeginPrototype{}%
\def\markdownRendererOlBeginTightPrototype{}%
-\def\markdownRendererFancyOlBeginPrototype#1#2{\markdownRendererOlBegin}%
-\def\markdownRendererFancyOlBeginTightPrototype#1#2{\markdownRendererOlBeginTight}%
+\def\markdownRendererFancyOlBeginPrototype#1#2{%
+ \markdownRendererOlBegin}%
+\def\markdownRendererFancyOlBeginTightPrototype#1#2{%
+ \markdownRendererOlBeginTight}%
\def\markdownRendererOlItemPrototype{}%
\def\markdownRendererOlItemWithNumberPrototype#1{}%
\def\markdownRendererOlItemEndPrototype{}%
\def\markdownRendererFancyOlItemPrototype{\markdownRendererOlItem}%
-\def\markdownRendererFancyOlItemWithNumberPrototype{\markdownRendererOlItemWithNumber}%
+\def\markdownRendererFancyOlItemWithNumberPrototype{%
+ \markdownRendererOlItemWithNumber}%
\def\markdownRendererFancyOlItemEndPrototype{}%
\def\markdownRendererOlEndPrototype{}%
\def\markdownRendererOlEndTightPrototype{}%
\def\markdownRendererFancyOlEndPrototype{\markdownRendererOlEnd}%
-\def\markdownRendererFancyOlEndTightPrototype{\markdownRendererOlEndTight}%
+\def\markdownRendererFancyOlEndTightPrototype{%
+ \markdownRendererOlEndTight}%
\def\markdownRendererDlBeginPrototype{}%
\def\markdownRendererDlBeginTightPrototype{}%
\def\markdownRendererDlItemPrototype#1{#1}%
@@ -33491,8 +36211,29 @@ end
\ExplSyntaxOff
\def\markdownRendererSectionBeginPrototype{}%
\def\markdownRendererSectionEndPrototype{}%
+\ExplSyntaxOn
+\cs_gset:Npn
+ \markdownRendererWarningPrototype
+ #1#2#3#4
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #2 }
+ \tl_if_empty:nF
+ { #4 }
+ {
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { \iow_newline: #4 }
+ }
+ \exp_args:NV
+ \markdownWarning
+ \l_tmpa_tl
+ }
+\ExplSyntaxOff
+\def\markdownRendererErrorPrototype#1#2#3#4{%
+ \markdownError{#2}{#4}}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Raw Attributes
@@ -33505,7 +36246,7 @@ end
% \begin{macrocode}
\ExplSyntaxOn
\cs_new:Nn
- \@@_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_inline:nn
{
\str_case:nn
{ #2 }
@@ -33515,7 +36256,7 @@ end
}
}
\cs_new:Nn
- \@@_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_block:nn
{
\str_case:nn
{ #2 }
@@ -33527,23 +36268,25 @@ end
\cs_gset:Npn
\markdownRendererInputRawInlinePrototype#1#2
{
- \@@_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_inline:nn
{ #1 }
{ #2 }
}
\cs_gset:Npn
\markdownRendererInputRawBlockPrototype#1#2
{
- \@@_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_block:nn
{ #1 }
{ #2 }
}
\ExplSyntaxOff
% \end{macrocode}
-% \par
% \begin{markdown}
%
-%#### YAML Metadata Renderer Prototypes
+%#### Simple YAML Metadata Renderer Prototypes
+% In this section, we implement the simple high-level interface for processing
+% simple \acro{YAML} metadata using the key--value `markdown/jekyllData`. See
+% also Section <#sec:expl3yamlmetadata>.
%
% To keep track of the current type of structure we inhabit when we are
% traversing a \acro{yaml} document, we will maintain the
@@ -33573,18 +36316,17 @@ end
\tl_const:Nn \c_@@_jekyll_data_mapping_tl { mapping }
\tl_const:Nn \c_@@_jekyll_data_scalar_tl { scalar }
% \end{macrocode}
-% \par
% \begin{markdown}
%
% To keep track of our current place when we are traversing a \acro{yaml}
% document, we will maintain the
% \mdef{g_\@\@_jekyll_data_wildcard_absolute_address_seq} stack of keys using
-% the \mdef{markdown_jekyll_data_push_address_segment:n} macro.
+% the \mdef{\@\@_jekyll_data_push_address_segment:n} macro.
%
% \end{markdown}
% \begin{macrocode}
\seq_new:N \g_@@_jekyll_data_wildcard_absolute_address_seq
-\cs_new:Nn \markdown_jekyll_data_push_address_segment:n
+\cs_new:Nn \@@_jekyll_data_push_address_segment:n
{
\seq_if_empty:NF
\g_@@_jekyll_data_datatypes_seq
@@ -33619,7 +36361,6 @@ end
}
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Out of \mref{g_\@\@_jekyll_data_wildcard_absolute_address_seq}, we will
@@ -33650,23 +36391,23 @@ end
% ```
%
% We will construct \mref{g_\@\@_jekyll_data_wildcard_absolute_address_tl}
-% using the \mdef{markdown_jekyll_data_concatenate_address:NN} macro and
+% using the \mdef{\@\@_jekyll_data_concatenate_address:NN} macro and
% we will construct both token lists using the
-% \mdef{markdown_jekyll_data_update_address_tls:} macro.
+% \mdef{\@\@_jekyll_data_update_address_tls:} macro.
%
% \end{markdown}
% \begin{macrocode}
\tl_new:N \g_@@_jekyll_data_wildcard_absolute_address_tl
\tl_new:N \g_@@_jekyll_data_wildcard_relative_address_tl
-\cs_new:Nn \markdown_jekyll_data_concatenate_address:NN
+\cs_new:Nn \@@_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:
+\cs_new:Nn \@@_jekyll_data_update_address_tls:
{
- \markdown_jekyll_data_concatenate_address:NN
+ \@@_jekyll_data_concatenate_address:NN
\g_@@_jekyll_data_wildcard_absolute_address_seq
\g_@@_jekyll_data_wildcard_absolute_address_tl
\seq_get_right:NN
@@ -33674,25 +36415,24 @@ end
\g_@@_jekyll_data_wildcard_relative_address_tl
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% To make sure that the stacks and token lists stay in sync, we will use the
-% \mdef{markdown_jekyll_data_push:nN} and \mdef{markdown_jekyll_data_pop:}
+% \mdef{\@\@_jekyll_data_push:nN} and \mdef{\@\@_jekyll_data_pop:}
% macros.
%
% \end{markdown}
% \begin{macrocode}
-\cs_new:Nn \markdown_jekyll_data_push:nN
+\cs_new:Nn \@@_jekyll_data_push:nN
{
- \markdown_jekyll_data_push_address_segment:n
+ \@@_jekyll_data_push_address_segment:n
{ #1 }
\seq_put_right:NV
\g_@@_jekyll_data_datatypes_seq
#2
- \markdown_jekyll_data_update_address_tls:
+ \@@_jekyll_data_update_address_tls:
}
-\cs_new:Nn \markdown_jekyll_data_pop:
+\cs_new:Nn \@@_jekyll_data_pop:
{
\seq_pop_right:NN
\g_@@_jekyll_data_wildcard_absolute_address_seq
@@ -33700,43 +36440,41 @@ end
\seq_pop_right:NN
\g_@@_jekyll_data_datatypes_seq
\l_tmpa_tl
- \markdown_jekyll_data_update_address_tls:
+ \@@_jekyll_data_update_address_tls:
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% To set a single key--value, we will use the
-% \mdef{markdown_jekyll_data_set_keyval:Nn} macro, ignoring unknown keys.
+% \mdef{\@\@_jekyll_data_set_keyval_known:nn} macro, ignoring unknown keys.
% To set key--values for both absolute and relative wildcards, we will use the
-% \mdef{markdown_jekyll_data_set_keyvals:nn} macro.
+% \mdef{\@\@_jekyll_data_set_keyvals_known:nn} macro.
%
% \end{markdown}
% \begin{macrocode}
-\cs_new:Nn \markdown_jekyll_data_set_keyval:nn
+\cs_new:Nn \@@_jekyll_data_set_keyval_known:nn
{
\keys_set_known:nn
{ markdown/jekyllData }
{ { #1 } = { #2 } }
}
\cs_generate_variant:Nn
- \markdown_jekyll_data_set_keyval:nn
+ \@@_jekyll_data_set_keyval_known:nn
{ Vn }
-\cs_new:Nn \markdown_jekyll_data_set_keyvals:nn
+\cs_new:Nn \@@_jekyll_data_set_keyvals_known:nn
{
- \markdown_jekyll_data_push:nN
+ \@@_jekyll_data_push:nN
{ #1 }
\c_@@_jekyll_data_scalar_tl
- \markdown_jekyll_data_set_keyval:Vn
+ \@@_jekyll_data_set_keyval_known:Vn
\g_@@_jekyll_data_wildcard_absolute_address_tl
{ #2 }
- \markdown_jekyll_data_set_keyval:Vn
+ \@@_jekyll_data_set_keyval_known:Vn
\g_@@_jekyll_data_wildcard_relative_address_tl
{ #2 }
- \markdown_jekyll_data_pop:
+ \@@_jekyll_data_pop:
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Finally, we will register our macros as token renderer prototypes
@@ -33745,39 +36483,338 @@ end
% \end{markdown}
% \begin{macrocode}
\def\markdownRendererJekyllDataSequenceBeginPrototype#1#2{
- \markdown_jekyll_data_push:nN
+ \@@_jekyll_data_push:nN
{ #1 }
\c_@@_jekyll_data_sequence_tl
}
\def\markdownRendererJekyllDataMappingBeginPrototype#1#2{
- \markdown_jekyll_data_push:nN
+ \@@_jekyll_data_push:nN
{ #1 }
\c_@@_jekyll_data_mapping_tl
}
\def\markdownRendererJekyllDataSequenceEndPrototype{
- \markdown_jekyll_data_pop:
+ \@@_jekyll_data_pop:
}
\def\markdownRendererJekyllDataMappingEndPrototype{
- \markdown_jekyll_data_pop:
+ \@@_jekyll_data_pop:
}
\def\markdownRendererJekyllDataBooleanPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
+ \@@_jekyll_data_set_keyvals_known:nn
{ #1 }
{ #2 }
}
\def\markdownRendererJekyllDataEmptyPrototype#1{}
\def\markdownRendererJekyllDataNumberPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
+ \@@_jekyll_data_set_keyvals_known:nn
{ #1 }
{ #2 }
}
-\def\markdownRendererJekyllDataStringPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
+% \end{macrocode}
+% \begin{markdown}
+%
+% We will process all string scalar values assuming that they may contain
+% markdown markup and are intended for typesetting.
+%
+% \end{markdown}
+% \begin{macrocode}
+\def\markdownRendererJekyllDataProgrammaticStringPrototype#1#2{}
+\def\markdownRendererJekyllDataTypographicStringPrototype#1#2{
+ \@@_jekyll_data_set_keyvals_known:nn
{ #1 }
{ #2 }
}
\ExplSyntaxOff
% \end{macrocode}
+% \begin{markdown}
+%
+%#### Complex YAML Metadata Renderer Prototypes
+% In this section, we implement the high-level interface for routing complex
+% \acro{YAML} metadata to expl3 key--values using the option
+% `jekyllDataKeyValue`=\meta{module}. See also Section <#sec:expl3yamlmetadata>.
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\@@_with_various_cases:nn
+ { jekyllDataKeyValue }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #1 .code:n = {
+ \@@_route_jekyll_data_to_key_values:n
+ { ##1 }
+ },
+% \end{macrocode}
+% \begin{markdown}
+%
+% When no \meta{module} has been provided, assume that the \acro{YAML} metadata
+% specify absolute paths to key--values.
+%
+% \end{markdown}
+% \begin{macrocode}
+ #1 .default:n = { },
+ }
+ }
+\seq_new:N
+ \l_@@_jekyll_data_current_position_seq
+\tl_new:N
+ \l_@@_jekyll_data_current_position_tl
+\cs_new:Nn
+ \@@_route_jekyll_data_to_key_values:n
+ {
+ \markdownSetup
+ {
+ renderers = {
+ jekyllData(Sequence|Mapping)Begin = {
+ \bool_lazy_and:nnTF
+ {
+ \seq_if_empty_p:N
+ \l_@@_jekyll_data_current_position_seq
+ }
+ {
+ \str_if_eq_p:nn
+ { ##1 }
+ { null }
+ }
+ {
+ \tl_if_empty:nF
+ { #1 }
+ {
+ \seq_put_right:Nn
+ \l_@@_jekyll_data_current_position_seq
+ { #1 }
+ }
+ }
+ {
+ \seq_put_right:Nn
+ \l_@@_jekyll_data_current_position_seq
+ { ##1 }
+ }
+ },
+ jekyllData(Sequence|Mapping)End = {
+ \seq_pop_right:NN
+ \l_@@_jekyll_data_current_position_seq
+ \l_tmpa_tl
+ },
+% \end{macrocode}
+% \begin{markdown}
+%
+% For every \acro{YAML} key `path.to.`\meta{key} with a value of type
+% \meta{non-string type}, set the key \meta{non-string type} of the key–value
+% \meta{module}`/path/to/`\meta{key} if it is known and the key \meta{key} of
+% the key–value \meta{module}`/path/to` otherwise. \meta{Non-string type} is
+% one of `boolean`, `number`, and `empty`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ jekyllDataBoolean = {
+ \tl_set:Nx
+ \l_@@_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l_@@_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l_@@_jekyll_data_current_position_tl
+ { ##1 / boolean }
+ {
+ \@@_keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1 / boolean
+ }
+ { ##2 }
+ }
+ {
+ \@@_keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ },
+ jekyllDataNumber = {
+ \tl_set:Nx
+ \l_@@_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l_@@_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l_@@_jekyll_data_current_position_tl
+ { ##1 / number }
+ {
+ \@@_keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1 / number
+ }
+ { ##2 }
+ }
+ {
+ \@@_keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ },
+% \end{macrocode}
+% \begin{markdown}
+%
+% For the \meta{non-string type} of `empty`, no value is passed to the
+% key–value. Therefore, a default value should always be defined for nullable
+% keys using the key property `.default:n`.
+%
+% \end{markdown}
+% \begin{macrocode}
+ jekyllDataEmpty = {
+ \tl_set:Nx
+ \l_@@_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l_@@_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l_@@_jekyll_data_current_position_tl
+ { ##1 / empty }
+ {
+ \keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1
+ }
+ { empty }
+ }
+ {
+ \keys_set:Vn
+ \l_@@_jekyll_data_current_position_tl
+ { ##1 }
+ }
+ },
+% \end{macrocode}
+% \begin{markdown}
+%
+% For every \acro{YAML} key `path.to.`\meta{key} with a value of type `string`,
+% set the keys `typographicString` and `programmaticString` of the key–value
+% \meta{module}`/path/to/`\meta{key} if they are known with the typographic and
+% programmatic strings of the value, respectively. Furthermore, set the key
+% \meta{key} of the key–value \meta{module}`/path/to` with the typographic
+% string of the value unless the key `typographicString` is known. If the key
+% `programmaticString` is known, only set the key \meta{key} if it is known. In
+% contrast, if neither `typographicString` nor `programmaticString` are known,
+% set \meta{key} normally, i.e. regardless of whether it is known or unknown.
+%
+% \end{markdown}
+% \begin{macrocode}
+ jekyllDataTypographicString = {
+ \tl_set:Nx
+ \l_@@_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l_@@_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l_@@_jekyll_data_current_position_tl
+ { ##1 / typographicString }
+ {
+ \@@_keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1 / typographicString
+ }
+ { ##2 }
+ }
+ {
+ \keys_if_exist:VnTF
+ \l_@@_jekyll_data_current_position_tl
+ { ##1 / programmaticString }
+ {
+ \@@_keys_set_known:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ {
+ \@@_keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ }
+ },
+ jekyllDataProgrammaticString = {
+ \tl_set:Nx
+ \l_@@_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l_@@_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnT
+ \l_@@_jekyll_data_current_position_tl
+ { ##1 / programmaticString }
+ {
+ \@@_keys_set:xn
+ {
+ \tl_use:N
+ \l_@@_jekyll_data_current_position_tl
+ / ##1 / programmaticString
+ }
+ { ##2 }
+ }
+ },
+ },
+ }
+ }
+\cs_new:Nn
+ \@@_keys_set:nn
+ {
+ \keys_set:nn
+ { }
+ { { #1 } = { #2 } }
+ }
+\cs_new:Nn
+ \@@_keys_set_known:nn
+ {
+ \keys_set_known:nn
+ { }
+ { { #1 } = { #2 } }
+ }
+\cs_generate_variant:Nn
+ \@@_keys_set:nn
+ { xn }
+\cs_generate_variant:Nn
+ \@@_keys_set_known:nn
+ { xn }
+\cs_generate_variant:Nn
+ \keys_set:nn
+ { xn, Vn }
+\prg_generate_conditional_variant:Nnn
+ \keys_if_exist:nn
+ { Vn }
+ { T, TF }
+\ExplSyntaxOff
+% \end{macrocode}
% \iffalse
%</themes-witiko-markdown-defaults-tex>
%<*tex>
@@ -33796,14 +36833,24 @@ end
\c_@@_top_layer_tl
\c_@@_option_layer_plain_tex_tl
{
- \ExplSyntaxOff
+ \use:c
+ { ExplSyntaxOff }
\@@_if_option:nF
{ noDefaults }
{
- \@@_setup:n
- {theme = witiko/markdown/defaults}
+ \@@_if_option:nTF
+ { experimental }
+ {
+ \@@_setup:n
+ { theme = witiko/markdown/defaults@experimental }
+ }
+ {
+ \@@_setup:n
+ { theme = witiko/markdown/defaults }
+ }
}
- \ExplSyntaxOn
+ \use:c
+ { ExplSyntaxOn }
}
\ExplSyntaxOff
% \end{macrocode}
@@ -33853,7 +36900,7 @@ end
\l_tmpa_tl
\tl_gput_right:Nx
\g_@@_formatted_lua_options_tl
- { #1~=~ \l_tmpa_tl ,~ }
+ { #1~=~ \l_tmpa_tl ,~ }
}
{
\str_if_eq_p:VV
@@ -33870,9 +36917,18 @@ end
\clist_map_inline:Vn
\l_tmpa_tl
{
- \tl_gput_right:Nx
+ \@@_lua_escape:xN
+ { ##1 }
+ \l_tmpb_tl
+ \tl_gput_right:Nn
\g_@@_formatted_lua_options_tl
- { "##1" ,~ }
+ { " }
+ \tl_gput_right:NV
+ \g_@@_formatted_lua_options_tl
+ \l_tmpb_tl
+ \tl_gput_right:Nn
+ \g_@@_formatted_lua_options_tl
+ { " ,~ }
}
\tl_gput_right:Nx
\g_@@_formatted_lua_options_tl
@@ -33883,19 +36939,89 @@ end
\@@_get_option_value:nN
{ #1 }
\l_tmpa_tl
- \tl_gput_right:Nx
+ \@@_lua_escape:xN
+ { \l_tmpa_tl }
+ \l_tmpb_tl
+ \tl_gput_right:Nn
+ \g_@@_formatted_lua_options_tl
+ { #1~=~ " }
+ \tl_gput_right:NV
+ \g_@@_formatted_lua_options_tl
+ \l_tmpb_tl
+ \tl_gput_right:Nn
\g_@@_formatted_lua_options_tl
- { #1~=~ " \l_tmpa_tl " ,~ }
+ { " ,~ }
}
}
\cs_generate_variant:Nn
\clist_map_inline:nn
{ Vn }
-\let\markdownPrepareLuaOptions=\@@_format_lua_options:
-\def\markdownLuaOptions{{ \g_@@_formatted_lua_options_tl }}
-\ExplSyntaxOff
+\let
+ \markdownPrepareLuaOptions
+ \@@_format_lua_options:
+\def
+ \markdownLuaOptions
+ {
+ {
+ \g_@@_formatted_lua_options_tl
+ }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_new:Nn
+ \@@_lua_escape:nN
+ {
+ \tl_set:Nx
+ #2
+ {
+ \lua_escape:n
+ { #1 }
+ }
+ }
+ }
+ {
+ \regex_const:Nn
+ \c_@@_lua_escape_regex
+ { [\\"'] }
+ \cs_new:Nn
+ \@@_lua_escape:nN
+ {
+ \tl_set:Nn
+ #2
+ { #1 }
+ \regex_replace_all:NnN
+ \c_@@_lua_escape_regex
+ { \u { c_backslash_str } \0 }
+ #2
+ }
+ }
+\cs_generate_variant:Nn
+ \@@_lua_escape:nN
+ { xN }
+% \end{macrocode}
+% \begin{markdown}
+%
+% After the \mdef{markdownPrepareInputFilename} macro has been
+% fully expanded, the \mdef{markdownInputFilename} macro will
+% expands to a Lua string that contains the input filename passed
+% as the first argument.
+%
+% \end{markdown}
+% \begin{macrocode}
+\tl_new:N
+ \markdownInputFilename
+\cs_new:Npn
+ \markdownPrepareInputFilename
+ #1
+ {
+ \@@_lua_escape:xN
+ { #1 }
+ \markdownInputFilename
+ \tl_gset:Nx
+ \markdownInputFilename
+ { " \markdownInputFilename " }
+ }
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \mdef{markdownPrepare} macro contains the Lua code that is executed prior
@@ -33904,17 +37030,19 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\def\markdownPrepare{%
+\cs_new:Npn
+ \markdownPrepare
+ {
% \end{macrocode}
% \begin{markdown}
% First, ensure that the \Opt{cacheDir} directory exists.
% \end{markdown}
% \begin{macrocode}
- local lfs = require("lfs")
- local cacheDir = "\markdownOptionCacheDir"
- if not lfs.isdir(cacheDir) then
- assert(lfs.mkdir(cacheDir))
- end
+ local~lfs = require("lfs")
+ local~options = \markdownLuaOptions
+ if~not~lfs.isdir(options.cacheDir) then~
+ assert(lfs.mkdir(options.cacheDir))
+ end~
% \end{macrocode}
% \begin{markdown}
% Next, load the `markdown` module and create a converter function using
@@ -33922,11 +37050,30 @@ end
% \mref{markdownLuaOptions} macro.
% \end{markdown}
% \begin{macrocode}
- local md = require("markdown")
- local convert = md.new(\markdownLuaOptions)
-}%
+ local~md = require("markdown")
+ local~convert = md.new(options)
+ }
+% \end{macrocode}
+% \begin{markdown}
+%
+% The \mdef{markdownConvert} macro contains the Lua code that is executed
+% during the conversion from markdown to plain \TeX{}. It opens the
+% input file, converts it, and prints the conversion result.
+%
+% \end{markdown}
+% \begin{macrocode}
+\cs_new:Npn
+ \markdownConvert
+ {
+ local~filename = \markdownInputFilename
+ local~file = assert(io.open(filename, "r"),
+ [[Could~not~open~file~"]] .. filename .. [["~for~reading]])
+ local~input = assert(file:read("*a"))
+ assert(file:close())
+ print(convert(input))
+ }
+\ExplSyntaxOff
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \mdef{markdownCleanup} macro contains the Lua code that is executed
@@ -33940,10 +37087,11 @@ end
% Remove the `options.cacheDir` directory if it is empty.
% \end{markdown}
% \begin{macrocode}
- lfs.rmdir(cacheDir)
+ if options.cacheDir then
+ lfs.rmdir(options.cacheDir)
+ end
}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Buffering Block-Level Markdown Input {#buffering-block}
@@ -33957,7 +37105,6 @@ end
\csname newread\endcsname\markdownInputFileStream
\csname newwrite\endcsname\markdownOutputFileStream
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \mdef{markdownReadAndConvertTab} macro contains the tab character literal.
@@ -33969,7 +37116,6 @@ end
\gdef\markdownReadAndConvertTab{^^I}%
\endgroup
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \mref{markdownReadAndConvert} macro is largely a rewrite of the
@@ -34127,7 +37273,6 @@ end
% \begin{macrocode}
|endgroup
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Use the \pkg{lt3luabridge} library to define the \mdef{markdownLuaExecute}
@@ -34161,6 +37306,9 @@ end
}
}
}
+ \str_gset:NV
+ \g_luabridge_output_dirname_str
+ \markdownOptionOutputDir
\luabridge_now:e
{ #1 }
}
@@ -34297,12 +37445,14 @@ end
\msg_new:nnn
{ markdown }
{ buffering-markinline }
- { Buffering~inline~markdown~input~into~the~temporary~input~file~"#1". }
+ { Buffering~inline~markdown~input~into~
+ the~temporary~input~file~"#1". }
\msg_new:nnnn
{ markdown }
{ markinline-peek-failure }
{ Use~of~\iow_char:N \\ markinline~doesn't~match~its~definition }
- { The~macro~should~be~followed~by~inline~markdown~text~in~curly~braces }
+ { The~macro~should~be~followed~by~inline~
+ markdown~text~in~curly~braces }
\ExplSyntaxOff
% \end{macrocode}
% \begin{markdown}
@@ -34321,6 +37471,13 @@ end
\markdownInput
#1
{
+ \@@_if_option:nTF
+ { frozenCache }
+ {
+ \markdownInputRaw
+ { #1 }
+ }
+ {
% \end{macrocode}
% \begin{markdown}
%
@@ -34330,19 +37487,23 @@ end
%
% \end{markdown}
% \begin{macrocode}
- \file_get_full_name:nNTF
- { #1 }
- \l_tmpa_tl
- {
- \exp_args:NV
- \markdownInputRaw
+ \tl_set:Nx
\l_tmpa_tl
- }
- {
- \msg_error:nnnV
- { markdown }
- { markdown-file-does-not-exist }
{ #1 }
+ \file_get_full_name:VNTF
+ \l_tmpa_tl
+ \l_tmpb_tl
+ {
+ \exp_args:NV
+ \markdownInputRaw
+ \l_tmpb_tl
+ }
+ {
+ \msg_error:nnV
+ { markdown }
+ { markdown-file-does-not-exist }
+ \l_tmpa_tl
+ }
}
}
\msg_new:nnn
@@ -34396,7 +37557,8 @@ end
|fi
|markdownInfo{Including markdown document number
"|the|markdownOptionFrozenCacheCounter" from frozen cache}%
- |csname markdownFrozenCache|the|markdownOptionFrozenCacheCounter|endcsname
+ |csname markdownFrozenCache%
+ |the|markdownOptionFrozenCacheCounter|endcsname
|global|advance|markdownOptionFrozenCacheCounter by 1|relax
}{%
|markdownInfo{Including markdown document "&1"}%
@@ -34410,13 +37572,10 @@ end
|openin|markdownInputFileStream&1
|closein|markdownInputFileStream
|markdownPrepareLuaOptions
+ |markdownPrepareInputFilename{&1}%
|markdownLuaExecute{%
|markdownPrepare
- local file = assert(io.open("&1", "r"),
- [[Could not open file "&1" for reading]])
- local input = assert(file:read("*a"))
- assert(file:close())
- print(convert(input))
+ |markdownConvert
|markdownCleanup}%
% \end{macrocode}
% \begin{markdown}
@@ -34430,7 +37589,6 @@ end
}%
|endgroup
% \end{macrocode}
-% \par
% \begin{markdown}
% The \mref{markdownEscape} macro resets the category codes of the percent sign
% and the hash sign back to comment and parameter, respectively, before using
@@ -34450,13 +37608,12 @@ end
%</tex>
%<*latex>
% \fi
-% \par
% \begin{markdown}
%
% \LaTeX{} Implementation {#lateximplementation}
%-------------------------
%
-% The \LaTeX{} implemenation makes use of the fact that, apart from some subtle
+% The \LaTeX{} implementation makes use of the fact that, apart from some subtle
% differences, \LaTeX{} implements the majority of the plain \TeX{}
% format~[@latex17, Section 9]. As a consequence, we can directly reuse the
% existing plain \TeX{} implementation.
@@ -34467,7 +37624,6 @@ end
\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
\markdownVersion\markdownVersionSpace markdown renderer]%
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Typesetting Markdown
@@ -34489,7 +37645,6 @@ end
{ ( \[ (.*?) \] ) ? }
{
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Apply the options locally.
@@ -34507,13 +37662,13 @@ end
}
\ExplSyntaxOff
% \end{macrocode}
-% \par
% \begin{markdown}
%
% The \mdef{markdownInputPlainTeX} macro is used to store the original plain
-% \TeX{} implementation of the \mref{markdownInput} macro. The \mref{markdownInput}
-% macro is then redefined to accept an optional argument with options recognized by
-% the \LaTeX{} interface (see Section <#sec:latex-options>).
+% \TeX{} implementation of the \mref{yamlInput} macro. The \mref{markdownInput}
+% and \mref{yamlInput} macros are then redefined to accept an optional argument
+% with options recognized by the \LaTeX{} interface (see Section
+% <#sec:latex-options>).
%
% \end{markdown}
% \begin{macrocode}
@@ -34523,12 +37678,16 @@ end
\markdownSetup{#1}%
\markdownInputPlainTeX{#2}%
\endgroup}%
+\renewcommand\yamlInput[2][]{%
+ \begingroup
+ \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData, #1}%
+ \markdownInputPlainTeX{#2}%
+ \endgroup}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
-% The \envmref{markdown}, and \envmref{markdown*} \LaTeX{} environments are
-% implemented using the \mref{markdownReadAndConvert} macro.
+% The \envmref{markdown}, \envmref{markdown*}, and \envmref{yaml} \LaTeX{}
+% environments are implemented using the \mref{markdownReadAndConvert} macro.
%
% \end{markdown}
% \begin{macrocode}
@@ -34620,13 +37779,26 @@ end
% we let the \mref{markdownReadAndConvert} macro process the rest of the
% \LaTeX{} environment.
%
+% We also make provision for using the \mref{markdown} command as a part of a
+% different \LaTeX{} environment as follows:
+%
+% ``` tex
+% \newenvironment{foo}\%
+% {code before \markdown[some, options]}\%
+% {\markdownEnd code after}
+% ```
+%
% \end{markdown}
% \begin{macrocode}
- \c { markdownReadAndConvert@markdown } { }
+ \c { exp_args:NV }
+ \c { markdownReadAndConvert@ }
+ \c { @currenvir }
}
{
\group_end:
- \markdownReadAndConvert@markdown { }
+ \exp_args:NV
+ \markdownReadAndConvert@
+ \@currenvir
}
}
{ \markdownEnd }
@@ -34634,15 +37806,35 @@ end
{ markdown* }
[ 1 ]
{
- \msg_warning:nnn
- { markdown }
- { latex-markdown-star-deprecated }
- { #1 }
+ \@@_if_option:nTF
+ { experimental }
+ {
+ \msg_error:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
+ { #1 }
+ }
+ {
+ \msg_warning:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
+ { #1 }
+ }
\@@_setup:n
{ #1 }
- \markdownReadAndConvert@markdown *
+ \markdownReadAndConvert@
+ { markdown* }
}
{ \markdownEnd }
+\renewenvironment
+ { yaml }
+ {
+ \group_begin:
+ \yamlSetup
+ { jekyllData, expectJekyllData, ensureJekyllData }
+ \markdown
+ }
+ { \yamlEnd }
\msg_new:nnn
{ markdown }
{ latex-markdown-star-deprecated }
@@ -34650,6 +37842,9 @@ end
The~markdown*~LaTeX~environment~has~been~deprecated~and~will~
be~removed~in~the~next~major~version~of~the~Markdown~package.
}
+\cs_generate_variant:Nn
+ \@@_setup:n
+ { V }
\ExplSyntaxOff
\begingroup
% \end{macrocode}
@@ -34663,44 +37858,35 @@ end
% \begin{macrocode}
\catcode`\|=0\catcode`\<=1\catcode`\>=2%
\catcode`\\=12|catcode`|{=12|catcode`|}=12%
- |gdef|markdownReadAndConvert@markdown#1<%
- |markdownReadAndConvert<\end{markdown#1}>%
- <|end<markdown#1>>>%
+ |gdef|markdownReadAndConvert@#1<%
+ |markdownReadAndConvert<\end{#1}>%
+ <|end<#1>>>%
|endgroup
% \end{macrocode}
-% \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}
%
%### Themes {#latex-themes-implementation}
%
% This section overrides the plain \TeX{} implementation of the theme-loading
-% mechanism from Section <#sec:themes-implementation>. Futhermore, this section
+% mechanism from Section <#sec:themes-implementation>. Furthermore, this section
% also implements the built-in \LaTeX{} themes provided with the Markdown package.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
+\prop_new:N \g_@@_latex_loaded_themes_linenos_prop
+\prop_new:N \g_@@_latex_loaded_themes_versions_prop
\cs_gset:Nn
- \@@_load_theme:nn
+ \@@_load_theme:nnn
{
% \end{macrocode}
-% \par
% \begin{markdown}
%
-% 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.
+% If the Markdown package has not yet been loaded, determine whether
+% either this is a built-in theme according to the prop
+% \mref{g_@@_latex_built_in_themes_prop} or a file named
+% `markdowntheme`\meta{munged theme name}`.sty` exists and whether we are still
+% in the preamble.
%
% \end{markdown}
% \begin{macrocode}
@@ -34709,24 +37895,42 @@ end
% \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.
+% If both conditions are true, end with an error, since we cannot load
+% \LaTeX{} themes after the preamble.
%
% \end{markdown}
% \begin{macrocode}
- \file_if_exist:nTF
- { markdown theme #2.sty }
+ \bool_if:nTF
+ {
+ \bool_lazy_or_p:nn
+ {
+ \prop_if_in_p:Nn
+ \g_@@_latex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \file_if_exist_p:n
+ { markdown theme #3.sty }
+ }
+ }
{
\msg_error:nnn
{ markdown }
{ latex-theme-after-preamble }
{ #1 }
}
+% \end{macrocode}
+% \begin{markdown}
+%
+% Otherwise, try loading a plain \TeX{} theme instead.
+%
+% \end{markdown}
+% \begin{macrocode}
{
- \@@_plain_tex_load_theme:nn
+ \@@_plain_tex_load_theme:nnn
{ #1 }
{ #2 }
+ { #3 }
}
\else
% \end{macrocode}
@@ -34738,20 +37942,96 @@ end
%
% \end{markdown}
% \begin{macrocode}
- \file_if_exist:nTF
- { markdown theme #2.sty }
+ \bool_if:nTF
{
- \msg_info:nnn
- { markdown }
- { loading-latex-theme }
+ \bool_lazy_or_p:nn
+ {
+ \prop_if_in_p:Nn
+ \g_@@_latex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \file_if_exist_p:n
+ { markdown theme #3.sty }
+ }
+ }
+ {
+ \prop_get:NnNTF
+ \g_@@_latex_loaded_themes_linenos_prop
{ #1 }
- \RequirePackage
- { markdown theme #2 }
+ \l_tmpa_tl
+ {
+ \prop_get:NnN
+ \g_@@_latex_loaded_themes_versions_prop
+ { #1 }
+ \l_tmpb_tl
+ \str_if_eq:nVTF
+ { #2 }
+ \l_tmpb_tl
+ {
+ \msg_warning:nnnVn
+ { markdown }
+ { repeatedly-loaded-latex-theme }
+ { #1 }
+ \l_tmpa_tl
+ { #2 }
+ }
+ {
+ \msg_error:nnnnVV
+ { markdown }
+ { different-versions-of-latex-theme }
+ { #1 }
+ { #2 }
+ \l_tmpb_tl
+ \l_tmpa_tl
+ }
+ }
+ {
+ \prop_gput:Nnx
+ \g_@@_latex_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D } % noqa: W200
+ \prop_gput:Nnn
+ \g_@@_latex_loaded_themes_versions_prop
+ { #1 }
+ { #2 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Load built-in plain \TeX{} themes from the prop
+% \mref{g_@@_latex_built_in_themes_prop} and from the filesystem otherwise.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \prop_if_in:NnTF
+ \g_@@_latex_built_in_themes_prop
+ { #1 }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-built-in-latex-theme }
+ { #1 }
+ { #2 }
+ \prop_item:Nn
+ \g_@@_latex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-latex-theme }
+ { #1 }
+ { #2 }
+ \RequirePackage
+ { markdown theme #3 }
+ }
+ }
}
{
- \@@_plain_tex_load_theme:nn
+ \@@_plain_tex_load_theme:nnn
{ #1 }
{ #2 }
+ { #3 }
}
\fi
\else
@@ -34763,15 +38043,15 @@ end
%
% \end{markdown}
% \begin{macrocode}
- \msg_info:nnn
+ \msg_info:nnnn
{ markdown }
{ theme-loading-postponed }
{ #1 }
+ { #2 }
\AtEndOfPackage
{
- \@@_load_theme:nn
- { #1 }
- { #2 }
+ \@@_set_theme:n
+ { #1 @ #2 }
}
\fi
}
@@ -34779,13 +38059,31 @@ end
{ markdown }
{ theme-loading-postponed }
{
- Postponing~loading~Markdown~theme~#1~until~
+ Postponing~loading~version~#2~of~Markdown~theme~#1~until~
Markdown~package~has~finished~loading
}
\msg_new:nnn
{ markdown }
+ { loading-built-in-latex-theme }
+ { Loading~version~#2~of~built-in~LaTeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
{ loading-latex-theme }
- { Loading~LaTeX~Markdown~theme~#1 }
+ { Loading~version~#2~of~LaTeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { repeatedly-loaded-latex-theme }
+ {
+ Version~#3~of~LaTeX~Markdown~theme~#1~was~previously~
+ loaded~on~line~#2,~not~loading~it~again
+ }
+\msg_new:nnn
+ { markdown }
+ { different-versions-of-latex-theme }
+ {
+ Tried~to~load~version~#2~of~LaTeX~Markdown~theme~#1~
+ but~version~#3~has~already~been~loaded~on~line~#4
+ }
\cs_generate_variant:Nn
\msg_new:nnnn
{ nnVV }
@@ -34797,7 +38095,7 @@ end
\c_backslash_str
\tl_put_right:Nn
\l_tmpa_tl
- { begin{document} }
+ { begin { document } }
\tl_set:Nn
\l_tmpb_tl
{ Load~Markdown~theme~#1~before~ }
@@ -34806,333 +38104,350 @@ end
\c_backslash_str
\tl_put_right:Nn
\l_tmpb_tl
- { begin{document} }
+ { begin { document } }
\msg_new:nnVV
{ markdown }
{ latex-theme-after-preamble }
\l_tmpa_tl
\l_tmpb_tl
-\ExplSyntaxOff
% \end{macrocode}
% \begin{markdown}
%
-% The `witiko/dot` theme enables the \Opt{fencedCode} Lua option:
+% The `witiko/dot` and `witiko/graphicx/http` \LaTeX{} themes load the package
+% \pkg{graphicx}, see also Section <#sec:latex-prerequisites>. Then, they
+% load the corresponding plain \TeX{} themes.
%
% \end{markdown}
+% \begin{macrocode}
+\tl_set:Nn
+ \l_tmpa_tl
+ {
+ \RequirePackage
+ { graphicx }
+ \markdownLoadPlainTeXTheme
+ }
+\prop_gput:NnV
+ \g_@@_latex_built_in_themes_prop
+ { witiko / dot }
+ \l_tmpa_tl
+\prop_gput:NnV
+ \g_@@_latex_built_in_themes_prop
+ { witiko / graphicx / http }
+ \l_tmpa_tl
+\ExplSyntaxOff
+% \end{macrocode}
% \iffalse
%</latex>
-%<*themes-witiko-dot>
+%<*themes-witiko-markdown-defaults-latex>
% \fi
-% \begin{macrocode}
-\markdownSetup{fencedCode}%
-% \end{macrocode}
% \begin{markdown}
%
-% We load the \pkg{ifthen} and \pkg{grffile} packages, see also
-% Section <#sec:latex-prerequisites>:
+% The `witiko/markdown/defaults` \LaTeX{} theme also loads the corresponding
+% plain \TeX{} theme.
%
% \end{markdown}
% \begin{macrocode}
-\RequirePackage{ifthen,grffile}
-% \end{macrocode}
-% \begin{markdown}
-%
-% We store the previous definition of the fenced code token renderer prototype:
-%
-% \end{markdown}
-% \begin{macrocode}
-\let\markdown@witiko@dot@oldRendererInputFencedCodePrototype
- \markdownRendererInputFencedCodePrototype
-% \end{macrocode}
-% \begin{markdown}
-%
-% If the infostring starts with `dot …`, we redefine the fenced code block
-% token renderer prototype, so that it typesets the code block via Graphviz
-% tools if and only if the \Opt{frozenCache} plain \TeX{} option is
-% disabled and the code block has not been previously typeset:
-%
-% \end{markdown}
-% \begin{macrocode}
-\renewcommand\markdownRendererInputFencedCodePrototype[3]{%
- \def\next##1 ##2\relax{%
- \ifthenelse{\equal{##1}{dot}}{%
- \markdownIfOption{frozenCache}{}{%
- \immediate\write18{%
- if ! test -e #1.pdf.source || ! diff #1 #1.pdf.source;
- then
- dot -Tpdf -o #1.pdf #1;
- cp #1 #1.pdf.source;
- fi}}%
+\markdownLoadPlainTeXTheme
% \end{macrocode}
% \begin{markdown}
%
-% We include the typeset image using the image token renderer:
-%
-% \end{markdown}
-% \begin{macrocode}
- \markdownRendererImage{Graphviz image}{#1.pdf}{#1.pdf}{##2}%
-% \end{macrocode}
-% \begin{markdown}
+% Next, the \LaTeX{} theme overrides some of the plain \TeX{} definitions.
+% See Section <#sec:latex-token-renderer-prototypes> for the actual
+% definitions.
%
-% If the infostring does not start with `dot …`, we use the previous definition
-% of the fenced code token renderer prototype:
+%### Options
+% The supplied package options are processed using the \mref{markdownSetup} macro.
%
% \end{markdown}
-% \begin{macrocode}
- }{%
- \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}{#3}%
- }%
- }%
- \next#2 \relax}%
-% \end{macrocode}
% \iffalse
-%</themes-witiko-dot>
-%<*themes-witiko-graphicx-http>
+%</themes-witiko-markdown-defaults-latex>
+%<*latex>
% \fi
-% \par
-% \begin{markdown}
-%
-% The `witiko/graphicx/http` theme stores the previous definition of the image
-% token renderer prototype:
-%
-% \end{markdown}
-% \begin{macrocode}
-\let\markdown@witiko@graphicx@http@oldRendererImagePrototype
- \markdownRendererImagePrototype
-% \end{macrocode}
-% \begin{markdown}
-%
-% We load the \pkg{catchfile} and \pkg{grffile} packages, see also
-% Section <#sec:latex-prerequisites>:
-%
-% \end{markdown}
-% \begin{macrocode}
-\RequirePackage{catchfile,grffile}
-% \end{macrocode}
-% \begin{markdown}
-%
-% We define the \mdef{markdown@witiko@graphicx@http@counter} counter to enumerate
-% the images for caching and the \mdef{markdown@witiko@graphicx@http@filename}
-% command, which will store the pathname of the file containing the pathname
-% of the downloaded image file.
-%
-% \end{markdown}
-% \begin{macrocode}
-\newcount\markdown@witiko@graphicx@http@counter
-\markdown@witiko@graphicx@http@counter=0
-\newcommand\markdown@witiko@graphicx@http@filename{%
- \markdownOptionCacheDir/witiko_graphicx_http%
- .\the\markdown@witiko@graphicx@http@counter}%
-% \end{macrocode}
-% \begin{markdown}
-%
-% We define the \mdef{markdown@witiko@graphicx@http@download} command, which will
-% receive two arguments that correspond to the URL of the online image and to
-% the pathname, where the online image should be downloaded. The command will
-% produce a shell command that tries to downloads the online image to the
-% pathname.
-%
-% \end{markdown}
-% \begin{macrocode}
-\newcommand\markdown@witiko@graphicx@http@download[2]{%
- wget -O #2 #1 || curl --location -o #2 #1 || rm -f #2}
-% \end{macrocode}
-% \begin{markdown}
-%
-% We locally swap the category code of the percentage sign with the line feed
-% control character, so that we can use percentage signs in the shell code:
-%
-% \end{markdown}
% \begin{macrocode}
-\begingroup
-\catcode`\%=12
-\catcode`\^^A=14
-% \end{macrocode}
-% \begin{markdown}
-%
-% We redefine the image token renderer prototype, so that it tries to download
-% an online image.
-%
-% \end{markdown}
-% \begin{macrocode}
-\global\def\markdownRendererImagePrototype#1#2#3#4{^^A
- \begingroup
- \edef\filename{\markdown@witiko@graphicx@http@filename}^^A
+\DeclareOption*{%
+ \expandafter\markdownSetup\expandafter{\CurrentOption}}%
+\ProcessOptions\relax
% \end{macrocode}
+% \iffalse
+%</latex>
+%<*themes-witiko-markdown-defaults-latex>
+% \fi
% \begin{markdown}
%
-% The image will be downloaded only if the image URL has the http or https
-% protocols and the \Opt{frozenCache} plain \TeX{} option is disabled:
+%### Token Renderer Prototypes {#latex-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{frozenCache}{}{^^A
- \immediate\write18{^^A
- mkdir -p "\markdownOptionCacheDir";
- if printf '%s' "#3" | grep -q -E '^https?:';
- then
+\markdownIfOption{plain}{\iffalse}{\iftrue}
% \end{macrocode}
% \begin{markdown}
%
-% The image will be downloaded to the pathname \Opt{cacheDir}<!--
-% -->`/`\meta{the MD5 digest of the image URL}`.`\meta{the suffix of the
-% image URL}:
+%#### Lists
%
-% \end{markdown}
-% \begin{macrocode}
- OUTPUT_PREFIX="\markdownOptionCacheDir";
- OUTPUT_BODY="$(printf '%s' '#3' | md5sum | cut -d' ' -f1)";
- OUTPUT_SUFFIX="$(printf '%s' '#3' | sed 's/.*[.]//')";
- OUTPUT="$OUTPUT_PREFIX/$OUTPUT_BODY.$OUTPUT_SUFFIX";
-% \end{macrocode}
-% \begin{markdown}
+% If either the \Opt{tightLists} or the \Opt{fancyLists} Lua option is enabled
+% and the current document class is not \pkg{beamer}, use a package that
+% provides support for tight and fancy lists.
%
-% The image will be downloaded only if it has not already been downloaded:
+% If either the package \pkg{paralist} or the package \pkg{enumitem} have already
+% been loaded, use them. Otherwise, if the option \Opt{experimental} or any test
+% phase has been enabled, use the package \pkg{enumitem}. Otherwise, use the
+% package \pkg{paralist}.
%
% \end{markdown}
% \begin{macrocode}
- if ! [ -e "$OUTPUT" ];
- then
- \markdown@witiko@graphicx@http@download{'#3'}{"$OUTPUT"};
- printf '%s' "$OUTPUT" > "\filename";
- fi;
+\ExplSyntaxOn
+\bool_new:N
+ \g_@@_tight_or_fancy_lists_bool
+\bool_gset_false:N
+ \g_@@_tight_or_fancy_lists_bool
+\@@_if_option:nTF
+ { tightLists }
+ {
+ \bool_gset_true:N
+ \g_@@_tight_or_fancy_lists_bool
+ }
+ {
+ \@@_if_option:nT
+ { fancyLists }
+ {
+ \bool_gset_true:N
+ \g_@@_tight_or_fancy_lists_bool
+ }
+ }
+\bool_new:N
+ \g_@@_beamer_paralist_or_enumitem_bool
+\bool_gset_true:N
+ \g_@@_beamer_paralist_or_enumitem_bool
+\@ifclassloaded
+ { beamer }
+ { }
+ {
+ \@ifpackageloaded
+ { paralist }
+ { }
+ {
+ \@ifpackageloaded
+ { enumitem }
+ { }
+ {
+ \bool_gset_false:N
+ \g_@@_beamer_paralist_or_enumitem_bool
+ }
+ }
+ }
+\bool_if:nT
+ {
+ \g_@@_tight_or_fancy_lists_bool &&
+ ! \g_@@_beamer_paralist_or_enumitem_bool
+ }
+ {
+ \bool_if:nTF
+ {
+ \bool_lazy_or_p:nn
+ {
+ \str_if_eq_p:en
+ { \markdownThemeVersion }
+ { experimental }
+ }
+ {
+ \bool_lazy_and_p:nn
+ {
+ \prop_if_exist_p:N
+ \g__pdfmanagement_documentproperties_prop
+ }
+ {
+ \bool_lazy_any_p:n
+ {
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-I }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-II }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-III }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-IV }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-V }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-VI }
+ }
+ }
+ }
+ }
+ }
+ {
+ \RequirePackage
+ { enumitem }
+ }
+ {
+ \RequirePackage
+ { paralist }
+ }
+ }
+\ExplSyntaxOff
% \end{macrocode}
% \begin{markdown}
%
-% If the image does not have the http or https protocols or the image has
-% already been downloaded, the URL will be stored as-is:
+% If we loaded the \pkg{enumitem} package, define the tight and
+% fancy list renderer prototypes to make use of the capabilities of
+% the package.
%
% \end{markdown}
% \begin{macrocode}
- else
- printf '%s' '#3' > "\filename";
- fi}}^^A
+\ExplSyntaxOn
+\cs_new:Nn
+ \@@_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
+ \@@_latex_fancy_list_item_label_delimiter:n
+ {
+ \str_case:nn
+ { #1 }
+ {
+ { Default } { . }
+ { OneParen } { ) }
+ { Period } { . }
+ }
+ }
+\cs_new:Nn
+ \@@_latex_fancy_list_item_label:nnn
+ {
+ \@@_latex_fancy_list_item_label_number:nn
+ { #1 }
+ { #3 }
+ \@@_latex_fancy_list_item_label_delimiter:n
+ { #2 }
+ }
+\cs_generate_variant:Nn
+ \@@_latex_fancy_list_item_label:nnn
+ { VVn }
+\tl_new:N
+ \l_@@_latex_fancy_list_item_label_number_style_tl
+\tl_new:N
+ \l_@@_latex_fancy_list_item_label_delimiter_style_tl
+\@ifpackageloaded { enumitem } {
+ \markdownSetup { rendererPrototypes = {
% \end{macrocode}
% \begin{markdown}
%
-% We load the pathname of the downloaded image and we typeset the image using
-% the previous definition of the image renderer prototype:
+% First, let's define the tight list item renderer prototypes.
%
% \end{markdown}
% \begin{macrocode}
- \CatchFileDef{\filename}{\filename}{\endlinechar=-1}^^A
- \markdown@witiko@graphicx@http@oldRendererImagePrototype^^A
- {#1}{#2}{\filename}{#4}^^A
- \endgroup
- \global\advance\markdown@witiko@graphicx@http@counter by 1\relax}^^A
-\endgroup
+ ulBeginTight = {
+ \begin
+ { itemize }
+ [ noitemsep ]
+ },
+ ulEndTight = {
+ \end
+ { itemize }
+ },
+ olBeginTight = {
+ \begin
+ { enumerate }
+ [ noitemsep ]
+ },
+ olEndTight = {
+ \end
+ { enumerate }
+ },
+ dlBeginTight = {
+ \begin
+ { description }
+ [ noitemsep ]
+ },
+ dlEndTight = {
+ \end
+ { description }
+ },
% \end{macrocode}
-% \iffalse
-%</themes-witiko-graphicx-http>
-%<*themes-witiko-markdown-defaults-latex>
-% \fi
-% \par
% \begin{markdown}
%
-% 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{}:
+% Second, let's define the fancy list item renderer prototypes.
%
% \end{markdown}
% \begin{macrocode}
-\markdownLoadPlainTeXTheme
+ fancyOlBegin = {
+ \group_begin:
+ \tl_set:Nn
+ \l_@@_latex_fancy_list_item_label_number_style_tl
+ { #1 }
+ \tl_set:Nn
+ \l_@@_latex_fancy_list_item_label_delimiter_style_tl
+ { #2 }
+ \begin
+ { enumerate }
+ },
+ fancyOlBeginTight = {
+ \group_begin:
+ \tl_set:Nn
+ \l_@@_latex_fancy_list_item_label_number_style_tl
+ { #1 }
+ \tl_set:Nn
+ \l_@@_latex_fancy_list_item_label_delimiter_style_tl
+ { #2 }
+ \begin
+ { enumerate }
+ [ noitemsep ]
+ },
+ fancyOlEnd(|Tight) = {
+ \end { enumerate }
+ \group_end:
+ },
+ fancyOlItemWithNumber = {
+ \item
+ [
+ \@@_latex_fancy_list_item_label:VVn
+ \l_@@_latex_fancy_list_item_label_number_style_tl
+ \l_@@_latex_fancy_list_item_label_delimiter_style_tl
+ { #1 }
+ ]
+ },
+ } }
% \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-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}
-% \end{macrocode}
-% \par
-% \begin{markdown}%
-% If either the \Opt{tightLists} or the \Opt{fancyLists} Lua option is enabled
-% and the current document class is not \pkg{beamer}, then load the
-% \pkg{paralist} package.
+% Otherwise, if we loaded the \pkg{paralist} package, define the
+% tight and fancy list renderer prototypes to make use of the
+% capabilities of the package.
%
% \end{markdown}
% \begin{macrocode}
-\@ifclassloaded{beamer}{}{%
- \markdownIfOption{tightLists}{\RequirePackage{paralist}}{}%
- \markdownIfOption{fancyLists}{\RequirePackage{paralist}}{}%
}
+{ \@ifpackageloaded { paralist } {
+ \markdownSetup { rendererPrototypes = {
% \end{macrocode}
-% \par
-% \begin{markdown}
-%
-% If we loaded the \pkg{paralist} package, define the respective renderer
-% prototypes to make use of the capabilities of the package. Otherwise,
-% define the renderer prototypes to fall back on the corresponding renderers
-% for the non-tight lists.
-%
-% \end{markdown}
-% \begin{macrocode}
-\ExplSyntaxOn
-\@ifpackageloaded{paralist}{
- \tl_new:N
- \l_@@_latex_fancy_list_item_label_number_style_tl
- \tl_new:N
- \l_@@_latex_fancy_list_item_label_delimiter_style_tl
- \cs_new:Nn
- \@@_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
- \@@_latex_fancy_list_item_label_delimiter:n
- {
- \str_case:nn
- { #1 }
- {
- { Default } { . }
- { OneParen } { ) }
- { Period } { . }
- }
- }
- \cs_new:Nn
- \@@_latex_fancy_list_item_label:nnn
- {
- \@@_latex_fancy_list_item_label_number:nn
- { #1 }
- { #3 }
- \@@_latex_fancy_list_item_label_delimiter:n
- { #2 }
- }
- \cs_new:Nn
- \@@_latex_paralist_style:nn
- {
- \str_case:nn
- { #1 }
- {
- { Decimal } { 1 }
- { LowerRoman } { i }
- { UpperRoman } { I }
- { LowerAlpha } { a }
- { UpperAlpha } { A }
- }
- \@@_latex_fancy_list_item_label_delimiter:n
- { #2 }
- }
- \markdownSetup{rendererPrototypes={
-% \end{macrocode}
-% \par
% \begin{markdown}
%
% Make tight bullet lists a little less compact by adding extra vertical space
@@ -35140,14 +38455,14 @@ end
%
% \end{markdown}
% \begin{macrocode}
- ulBeginTight = {%
+ ulBeginTight = {
\group_begin:
\pltopsep=\topsep
\plpartopsep=\partopsep
- \begin{compactitem}
+ \begin { compactitem }
},
ulEndTight = {
- \end{compactitem}
+ \end { compactitem }
\group_end:
},
fancyOlBegin = {
@@ -35158,33 +38473,13 @@ end
\tl_set:Nn
\l_@@_latex_fancy_list_item_label_delimiter_style_tl
{ #2 }
- \@@_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
+ \begin { enumerate }
},
fancyOlEnd = {
- \end{enumerate}
+ \end { enumerate }
\group_end:
},
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Make tight ordered lists a little less compact by adding extra vertical
@@ -35192,14 +38487,14 @@ end
%
% \end{markdown}
% \begin{macrocode}
- olBeginTight = {%
+ olBeginTight = {
\group_begin:
\plpartopsep=\partopsep
\pltopsep=\topsep
- \begin{compactenum}
+ \begin { compactenum }
},
olEndTight = {
- \end{compactenum}
+ \end { compactenum }
\group_end:
},
fancyOlBeginTight = {
@@ -35210,35 +38505,12 @@ end
\tl_set:Nn
\l_@@_latex_fancy_list_item_label_delimiter_style_tl
{ #2 }
- \@@_if_option:nTF
- { startNumber }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{compactenum} }
- }
- {
- \tl_set: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_put_left:Nn
- \l_tmpa_tl
- {
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- }
- \tl_use:N
- \l_tmpa_tl
+ \plpartopsep=\partopsep
+ \pltopsep=\topsep
+ \begin { compactenum }
},
fancyOlEndTight = {
- \end{compactenum}
+ \end { compactenum }
\group_end:
},
fancyOlItemWithNumber = {
@@ -35251,7 +38523,6 @@ end
]
},
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Make tight definition lists a little less compact by adding extra
@@ -35263,32 +38534,44 @@ end
\group_begin:
\plpartopsep=\partopsep
\pltopsep=\topsep
- \begin{compactdesc}
+ \begin { compactdesc }
},
dlEndTight = {
- \end{compactdesc}
+ \end { compactdesc }
\group_end:
- }}}
- \cs_generate_variant:Nn
- \@@_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}}}
+ }
+ } }
}
+{
+% \end{macrocode}
+% \begin{markdown}
+%
+% Otherwise, if we loaded neither the \pkg{enumitem} package nor the
+% \pkg{paralist} package, define the tight and fancy list renderer
+% prototypes to fall back on the corresponding renderers for the
+% non-tight lists.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \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}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Unless the \pkg{unicode-math} package has been loaded, load the \pkg{amssymb}
@@ -35320,7 +38603,6 @@ end
tilde = {\textasciitilde},
pipe = {\textbar},
% \end{macrocode}
-% \par
% \begin{markdown}
%
% We can capitalize on the fact that the expansion of renderers is performed by
@@ -35344,6 +38626,19 @@ end
\texttt{#1}%
\fi
}}}
+% \end{macrocode}
+% \begin{markdown}
+%
+%#### Content Blocks
+%
+% In content block renderer prototypes, display the content as a table using
+% the package \pkg{csvsimple} when the raw attribute is `csv`, display the
+% content using the default templates of the package \pkg{luaxml} when the
+% raw attribute is `html`, execute the content with TeX when the raw attribute
+% is `tex`, and display the content as markdown otherwise.
+%
+% \end{markdown}
+% \begin{macrocode}
\ExplSyntaxOn
\markdownSetup{
rendererPrototypes = {
@@ -35353,32 +38648,59 @@ end
{
{ csv }
{
- \begin{table}
- \begin{center}
- \csvautotabular{#3}
- \end{center}
+ \begin { table }
+ \begin { center }
+ \csvautotabular { #3 }
+ \end{ center }
\tl_if_empty:nF
{ #4 }
- { \caption{#4} }
- \end{table}
+ { \caption { #4 } }
+ \end { table }
+ }
+ { html }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% If we are using [\TeX{}4ht][1], we will pass HTML elements to the
+% output HTML document unchanged.
+%
+% [1]: https://tug.org/tex4ht/
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_if_exist:NTF
+ \HCode
+ {
+ \if_mode_vertical:
+ \IgnorePar
+ \fi:
+ \EndP
+ \special
+ { t4ht* < #3 }
+ \par
+ \ShowPar
+ }
+ {
+ \@@_luaxml_print_html:n
+ { #3 }
+ }
+ }
+ { tex }
+ {
+ \markdownEscape
+ { #3 }
}
- { tex } { \markdownEscape{#3} }
}
- { \markdownInput{#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}},
@@ -35392,7 +38714,6 @@ end
tickedBox = {$\boxtimes$},
halfTickedBox = {$\boxdot$}}}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% If \acro{HTML} identifiers appear after a heading, we make them
@@ -35402,7 +38723,7 @@ end
% \begin{macrocode}
\ExplSyntaxOn
\seq_new:N
- \l_@@_header_identifiers_seq
+ \g_@@_header_identifiers_seq
\markdownSetup
{
rendererPrototypes = {
@@ -35411,8 +38732,8 @@ end
{
rendererPrototypes = {
attributeIdentifier = {
- \seq_put_right:Nn
- \l_@@_header_identifiers_seq
+ \seq_gput_right:Nn
+ \g_@@_header_identifiers_seq
{ ##1 }
},
},
@@ -35420,10 +38741,10 @@ end
},
headerAttributeContextEnd = {
\seq_map_inline:Nn
- \l_@@_header_identifiers_seq
+ \g_@@_header_identifiers_seq
{ \label { ##1 } }
- \seq_clear:N
- \l_@@_header_identifiers_seq
+ \seq_gclear:N
+ \g_@@_header_identifiers_seq
},
},
}
@@ -35485,7 +38806,6 @@ end
thematicBreak = {\noindent\rule[0.5ex]{\linewidth}{1pt}},
note = {\footnote{#1}}}}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Fenced Code
@@ -35496,7 +38816,7 @@ end
% \begin{macrocode}
\RequirePackage{ltxcmds}
\ExplSyntaxOn
-\cs_gset:Npn
+\cs_gset_protected:Npn
\markdownRendererInputFencedCodePrototype#1#2#3
{
\tl_if_empty:nTF
@@ -35519,7 +38839,6 @@ end
\l_tmpa_seq
\l_tmpa_tl
% \end{macrocode}
-% \par
% \begin{markdown}
%
% When the \pkg{minted} package is loaded, use it for syntax highlighting.
@@ -35529,16 +38848,17 @@ end
\ltx@ifpackageloaded
{ minted }
{
+ \catcode`\%=14\relax
\catcode`\#=6\relax
\exp_args:NV
\inputminted
\l_tmpa_tl
{ #1 }
+ \catcode`\%=12\relax
\catcode`\#=12\relax
}
{
% \end{macrocode}
-% \par
% \begin{markdown}
%
% When the \pkg{listings} package is loaded, use it for syntax highlighting.
@@ -35547,9 +38867,8 @@ end
% \begin{macrocode}
\ltx@ifpackageloaded
{ listings }
- { \lstinputlisting[language=\l_tmpa_tl]{#1} }
+ { \lstinputlisting [ language = \l_tmpa_tl ] { #1 } }
% \end{macrocode}
-% \par
% \begin{markdown}
%
% When neither the \pkg{listings} package nor the \pkg{minted} package is
@@ -35557,13 +38876,12 @@ end
%
% \end{markdown}
% \begin{macrocode}
- { \markdownRendererInputFencedCode{#1}{}{} }
+ { \markdownRendererInputFencedCode { #1 } { } { } }
}
}
}
\ExplSyntaxOff
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Support the nesting of strong emphasis.
@@ -35571,7 +38889,7 @@ end
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
-\def\markdownLATEXStrongEmphasis#1{%
+\def\markdownLATEXStrongEmphasis#1{
\str_if_in:NnTF
\f@series
{ b }
@@ -35582,7 +38900,6 @@ end
\markdownSetup{rendererPrototypes={strongEmphasis={%
\protect\markdownLATEXStrongEmphasis{#1}}}}
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Support \LaTeX{} document classes that do not provide chapters.
@@ -35606,7 +38923,6 @@ end
headingSix = {\subparagraph{#1}}}}
}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Tickboxes
@@ -35642,7 +38958,6 @@ end
\fi
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### HTML elements
@@ -35676,7 +38991,6 @@ end
}
}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Citations
@@ -35691,13 +39005,14 @@ end
\newcount\markdownLaTeXCitationsCounter
% Basic implementation
-\RequirePackage{gobble}
+\long\def\@gobblethree#1#2#3{}%
\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
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
+ \cite{#1#2#6}% No prenotes/postnotes, just accumulate cites
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
\@gobblethree
@@ -35707,7 +39022,8 @@ end
\cite{#1}%
\fi
\cite[#5]{#6}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -35734,7 +39050,8 @@ end
\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
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -35754,8 +39071,9 @@ end
\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
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
+ \citep{#1,#5}% No prenotes/postnotes, just accumulate cites
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
\@gobbletwo
@@ -35765,7 +39083,8 @@ end
\citep{#1}%
\fi
\citep[][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -35785,7 +39104,8 @@ end
\citep{#1}%
\fi
\citep[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -35800,8 +39120,9 @@ end
\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
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
+ \citet{#1,#5}% No prenotes/postnotes, just accumulate cites
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
\@gobbletwo
@@ -35811,10 +39132,13 @@ end
\citet{#1}%
\fi
, \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal
+ \relax
,
\else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
+ \ifnum
+ \markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal
+ \relax
,
\fi
\fi
@@ -35833,10 +39157,13 @@ end
\citet{#1}%
\fi
, \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal
+ \relax
,
\else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
+ \ifnum
+ \markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal
+ \relax
,
\fi
\fi
@@ -35851,13 +39178,15 @@ end
% BibLaTeX implementation
\def\markdownLaTeXBibLaTeXCitations#1#2#3#4#5{%
\advance\markdownLaTeXCitationsCounter by 1\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\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
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\textcites#1[#3][#4]{#5}%
\expandafter\@gobbletwo
\fi\markdownLaTeXBibLaTeXTextCitations{#1[#3][#4]{#5}}}
@@ -35908,7 +39237,6 @@ end
\expandafter{\expandafter}%
}}}}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Links
@@ -35919,23 +39247,26 @@ end
\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
- }
+\cs_gset_protected:Npn
+ \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
+ }
% \end{macrocode}
% \begin{markdown}
% If the label and the fully-escaped URI are equivalent and the title is
@@ -35943,17 +39274,19 @@ end
% link is either direct or indirect.
% \end{markdown}
% \begin{macrocode}
- \bool_if:nTF
- {
- \l_tmpa_bool && \l_tmpb_bool
- }
- {
- \markdownLaTeXRendererAutolink { #2 } { #3 }
- }{
- \markdownLaTeXRendererDirectOrIndirectLink { #1 } { #2 } { #3 } { #4 }
- }
-}
-\def\markdownLaTeXRendererAutolink#1#2{%
+ \bool_if:nTF
+ {
+ \l_tmpa_bool && \l_tmpb_bool
+ }
+ {
+ \markdownLaTeXRendererAutolink { #2 } { #3 }
+ }
+ {
+ \markdownLaTeXRendererDirectOrIndirectLink
+ { #1 } { #2 } { #3 } { #4 }
+ }
+ }
+\def\markdownLaTeXRendererAutolink#1#2{
% \end{macrocode}
% \begin{markdown}
% If the URL begins with a hash sign, then we assume that it is a relative
@@ -35988,7 +39321,8 @@ end
\exp_args:NV
\ref
\l_tmpb_tl
- }{
+ }
+ {
\url { #2 }
}
}
@@ -35996,7 +39330,6 @@ end
\def\markdownLaTeXRendererDirectOrIndirectLink#1#2#3#4{%
#1\footnote{\ifx\empty#4\empty\else#4: \fi\url{#3}}}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Tables
@@ -36035,7 +39368,59 @@ end
\begin{table}
\centering}%
\addto@hook\markdownLaTeXTableEnd{%
- \caption{#1}
+ \caption{#1}}%
+ \fi
+ }
+}}
+% \end{macrocode}
+% \begin{markdown}
+%
+% If the \Opt{tableAttributes} option is enabled, we will register any
+% identifiers, so that they can be used as \LaTeX{} labels for referencing
+% tables.
+%
+% \end{markdown}
+% \begin{macrocode}
+\ExplSyntaxOn
+\seq_new:N
+ \l_@@_table_identifiers_seq
+\markdownSetup {
+ rendererPrototypes = {
+ table += {
+ \seq_map_inline:Nn
+ \l_@@_table_identifiers_seq
+ {
+ \addto@hook
+ \markdownLaTeXTableEnd
+ { \label { ##1 } }
+ }
+ },
+ }
+}
+\markdownSetup {
+ rendererPrototypes = {
+ tableAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup {
+ rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l_@@_table_identifiers_seq
+ { ##1 }
+ },
+ },
+ }
+ },
+ tableAttributeContextEnd = {
+ \group_end:
+ },
+ },
+}
+\ExplSyntaxOff
+\markdownSetup{rendererPrototypes={
+ table += {%
+ \ifx\empty#1\empty\else
+ \addto@hook\markdownLaTeXTableEnd{%
\end{table}}%
\fi
\addto@hook\markdownLaTeXTable{\begin{tabular}}%
@@ -36084,7 +39469,6 @@ end
\expandafter\@gobble
\fi\markdownLaTeXRenderTableCell}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Line Blocks
@@ -36110,7 +39494,6 @@ end
}{}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### YAML Metadata {#latex-yaml-metadata}
@@ -36124,12 +39507,19 @@ end
% \begin{macrocode}
\ExplSyntaxOn
\keys_define:nn
- { markdown/jekyllData }
+ { markdown / jekyllData }
{
- author .code:n = { \author{#1} },
- date .code:n = { \date{#1} },
- title .code:n = { \title{#1} },
- }
+ author .code:n = {
+ \author
+ { #1 }
+ },
+ date .code:n = {
+ \date
+ { #1 }
+ },
+ title .code:n = {
+ \title
+ { #1 }
% \end{macrocode}
% \begin{markdown}
%
@@ -36141,107 +39531,201 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\markdownSetup{
- rendererPrototypes = {
- jekyllDataEnd = {
- \AddToHook{begindocument/end}{\maketitle}
+ \AddToHook
+ { begindocument / end }
+ { \maketitle }
},
- },
-}
-\ExplSyntaxOff
+ }
% \end{macrocode}
-% \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 either the \pkg{soul}
+% package or the \pkg{lua-ul} package and use it to implement marked text.
%
% \end{markdown}
% \begin{macrocode}
-\markdownIfOption{strikeThrough}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
- },
- }
+\@@_if_option:nT
+ { mark }
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \RequirePackage
+ { luacolor }
+ \RequirePackage
+ { lua-ul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ mark = {
+ \highLight
+ { #1 }
+ },
+ }
+ }
+ }
+ {
+ \RequirePackage
+ { xcolor }
+ \RequirePackage
+ { soul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ mark = {
+ \hl
+ { #1 }
+ },
+ }
+ }
+ }
}
-}{}
% \end{macrocode}
-% \par
% \begin{markdown}
%
-%#### Marked Text
-% If the \Opt{mark} option is enabled, we will load the \pkg{soulutf8} package
-% and use it to implement marked text.
+%#### Strike-Through
+% If the \Opt{strikeThrough} option is enabled, we will load either the
+% \pkg{soul} package or the \pkg{lua-ul} package and use it to implement
+% strike-throughs.
%
% \end{markdown}
% \begin{macrocode}
-\markdownIfOption{mark}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- mark = {%
- \hl{#1}%
- },
- }
+\@@_if_option:nT
+ { strikeThrough }
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \RequirePackage
+ { lua-ul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ strikeThrough = {
+ \strikeThrough
+ { #1 }
+ },
+ }
+ }
+ }
+ {
+ \RequirePackage
+ { soul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ strikeThrough = {
+ \st
+ { #1 }
+ },
+ }
+ }
+ }
}
-}{}
% \end{macrocode}
-% \par
% \begin{markdown}
%
-%#### Image Attributes
+%#### Images and their attributes
%
-% If the \Opt{linkAttributes} option is enabled, we will load
-% the \pkg{graphicx} package. Furthermore, in image attribute contexts,
-% we will make attributes in the form \meta{key}`=`\meta{value} set the
-% corresponding keys of the \pkg{graphicx} package to the corresponding
-% values.
+% We define images to be rendered as floating figures using the command
+% `\includegraphics`, where the image label is the alt text and the image
+% title is the caption of the figure.
+%
+% If the \Opt{linkAttributes} option is enabled, we will make attributes in the
+% form \meta{key}`=`\meta{value} set the corresponding keys of the
+% \pkg{graphicx} package to the corresponding values and we will register any
+% identifiers, so that they can be used as \LaTeX{} labels for referencing
+% figures.
%
% \end{markdown}
% \begin{macrocode}
-\ExplSyntaxOn
+\seq_new:N
+ \l_@@_image_identifiers_seq
+\markdownSetup {
+ rendererPrototypes = {
+ image = {
+ \tl_if_empty:nTF
+ { #4 }
+ {
+ \begin { center }
+ \includegraphics
+ [ alt = { #1 } ]
+ { #3 }
+ \end { center }
+ }
+ {
+ \begin { figure }
+ \begin { center }
+ \includegraphics
+ [ alt = { #1 } ]
+ { #3 }
+ \caption { #4 }
+ \seq_map_inline:Nn
+ \l_@@_image_identifiers_seq
+ { \label { ##1 } }
+ \end { center }
+ \end { figure }
+ }
+ },
+ }
+}
\@@_if_option:nT
{ linkAttributes }
{
- \RequirePackage{graphicx}
- \markdownSetup{
- rendererPrototypes = {
- imageAttributeContextBegin = {
- \group_begin:
- \markdownSetup{
- rendererPrototypes = {
- attributeKeyValue = {
- \setkeys
- { Gin }
- { { ##1 } = { ##2 } }
- },
- },
- }
- },
- imageAttributeContextEnd = {
- \group_end:
- },
- },
- }
+ \RequirePackage { graphicx }
}
+\markdownSetup {
+ rendererPrototypes = {
+ imageAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup {
+ rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l_@@_image_identifiers_seq
+ { ##1 }
+ },
+ attributeKeyValue = {
+ \setkeys
+ { Gin }
+ { { ##1 } = { ##2 } }
+ },
+ },
+ }
+ },
+ imageAttributeContextEnd = {
+ \group_end:
+ },
+ },
+}
\ExplSyntaxOff
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Raw Attributes
%
-% In the raw block and inline raw span renderer prototypes, default to the
-% plain TeX renderer prototypes, translating raw attribute `latex` to `tex`.
+% In the raw block and inline raw span renderer prototypes, display the content
+% using the default templates of the package \pkg{luaxml} when the raw
+% attribute is `html` and default to the plain TeX renderer prototypes
+% otherwise, translating raw attribute `latex` to `tex`.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
-\cs_gset:Npn
+\cs_new:Nn
+ \@@_luaxml_print_html:n
+ {
+ \luabridge_now:n
+ {
+ local~input_file = assert(io.open(" #1 ", "r"))
+ local~input = assert(input_file:read("*a"))
+ assert(input_file:close())
+ input = "<body>" .. input .. "</body>"
+ local~dom = require("luaxml-domobject").html_parse(input)
+ local~output = require("luaxml-htmltemplates"):process_dom(dom)
+ print(output)
+ }
+ }
+\cs_gset_protected:Npn
\markdownRendererInputRawInlinePrototype#1#2
{
\str_case:nnF
@@ -36249,18 +39733,45 @@ end
{
{ latex }
{
- \@@_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_inline:nn
{ #1 }
{ tex }
}
+ { html }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% If we are using [\TeX{}4ht][1], we will pass HTML elements to the
+% output HTML document unchanged.
+%
+% [1]: https://tug.org/tex4ht/
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_if_exist:NTF
+ \HCode
+ {
+ \if_mode_vertical:
+ \IgnorePar
+ \EndP
+ \fi:
+ \special
+ { t4ht* < #1 }
+ }
+ {
+ \@@_luaxml_print_html:n
+ { #1 }
+ }
+ }
}
{
- \@@_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_inline:nn
{ #1 }
{ #2 }
}
}
-\cs_gset:Npn
+\cs_gset_protected:Npn
\markdownRendererInputRawBlockPrototype#1#2
{
\str_case:nnF
@@ -36268,17 +39779,81 @@ end
{
{ latex }
{
- \@@_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_block:nn
{ #1 }
{ tex }
}
+ { html }
+ {
+% \end{macrocode}
+% \begin{markdown}
+%
+% If we are using [\TeX{}4ht][1], we will pass HTML elements to the
+% output HTML document unchanged.
+%
+% [1]: https://tug.org/tex4ht/
+%
+% \end{markdown}
+% \begin{macrocode}
+ \cs_if_exist:NTF
+ \HCode
+ {
+ \if_mode_vertical:
+ \IgnorePar
+ \fi:
+ \EndP
+ \special
+ { t4ht* < #1 }
+ \par
+ \ShowPar
+ }
+ {
+ \@@_luaxml_print_html:n
+ { #1 }
+ }
+ }
}
{
- \@@_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_block:nn
{ #1 }
{ #2 }
}
}
+% \end{macrocode}
+% \begin{markdown}
+%
+%#### Bracketed spans
+%
+% If the \Opt{bracketedSpans} option is enabled, we will register any
+% identifiers, so that they can be used as \LaTeX{} labels for referencing
+% the last \LaTeX{} counter that has been incremented in e.g. ordered lists.
+%
+% \end{markdown}
+% \begin{macrocode}
+\seq_new:N
+ \l_@@_bracketed_span_identifiers_seq
+\markdownSetup {
+ rendererPrototypes = {
+ bracketedSpanAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup {
+ rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l_@@_bracketed_span_identifiers_seq
+ { ##1 }
+ },
+ },
+ }
+ },
+ bracketedSpanAttributeContextEnd = {
+ \seq_map_inline:Nn
+ \l_@@_bracketed_span_identifiers_seq
+ { \label { ##1 } }
+ \group_end:
+ },
+ },
+}
\ExplSyntaxOff
\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}`
% \end{macrocode}
@@ -36286,7 +39861,6 @@ end
%</themes-witiko-markdown-defaults-latex>
%<*latex>
% \fi
-% \par
% \begin{markdown}
%
%### Miscellanea
@@ -36308,7 +39882,6 @@ end
%</latex>
%<*context>
% \fi
-% \par
% \begin{markdown}
%
% \Hologo{ConTeXt} Implementation {#contextimplementation}
@@ -36336,7 +39909,6 @@ end
\advance\count0 by 1\relax
\ifnum\count0<256\repeat
% \end{macrocode}
-% \par
% \begin{markdown}
%
% On top of that, make the pipe character (`|`) inactive during the scanning.
@@ -36346,13 +39918,12 @@ end
% \begin{macrocode}
\catcode`|=12}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Typesetting Markdown
-% The \mref{inputmarkdown} macro is defined to accept an optional argument with
-% options recognized by the \Hologo{ConTeXt} interface (see Section
-% <#sec:context-options>).
+% The \mref{inputmarkdown} and \mref{inputyaml} macros are defined to accept an
+% optional argument with options recognized by the \Hologo{ConTeXt} interface
+% (see Section <#sec:context-options>).
%
% \end{markdown}
% \begin{macrocode}
@@ -36366,11 +39937,17 @@ end
\fi
\markdownInput{#2}%
\endgroup}%
+\long\def\inputyaml{%
+ \dosingleempty
+ \doinputyaml}%
+\long\def\doinputyaml[#1]#2{%
+ \doinputmarkdown
+ [jekyllData, expectJekyllData, ensureJekyllData, #1]{#2}}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
-% The \mref{startmarkdown} and \mref{stopmarkdown} macros are implemented using the
+% The \mref{startmarkdown}, \mref{stopmarkdown}, \mref{startyaml}, and
+% \mref{stopyaml} macros are implemented using the
% \mref{markdownReadAndConvert} macro.
%
% In Knuth's \TeX, trailing spaces are removed very early on when a line is
@@ -36404,62 +39981,165 @@ end
|gdef|stopmarkdown{%
|ctxlua{document.markdown_buffering = false}%
|markdownEnd}%
+ |gdef|startyaml{%
+ |begingroup
+ |ctxlua{document.markdown_buffering = true}%
+ |setupyaml[jekyllData, expectJekyllData, ensureJekyllData]%
+ |markdownReadAndConvert{\stopyaml}%
+ {|stopyaml}}%
+ |gdef|stopyaml{%
+ |ctxlua{document.markdown_buffering = false}%
+ |yamlEnd}%
|endgroup
% \end{macrocode}
-% \par
% \begin{markdown}
%
%### Themes {#context-themes-implementation}
%
% This section overrides the plain \TeX{} implementation of the theme-loading
-% mechanism from Section <#sec:themes-implementation>. Futhermore, this section
+% mechanism from Section <#sec:themes-implementation>. Furthermore, this section
% also implements the built-in \Hologo{ConTeXt} themes provided with the
% Markdown package.
%
% \end{markdown}
% \begin{macrocode}
\ExplSyntaxOn
+\prop_new:N \g_@@_context_loaded_themes_linenos_prop
+\prop_new:N \g_@@_context_loaded_themes_versions_prop
\cs_gset:Nn
- \@@_load_theme:nn
+ \@@_load_theme:nnn
{
% \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.
+% Determine whether either this is a built-in theme according to the prop
+% \mref{g_@@_context_built_in_themes_prop} or 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 }
+ \bool_if:nTF
{
- \msg_info:nnn
- { markdown }
- { loading-context-theme }
+ \bool_lazy_or_p:nn
+ {
+ \prop_if_in_p:Nn
+ \g_@@_context_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \file_if_exist_p:n
+ { t - markdown theme #3.tex }
+ }
+ }
+ {
+ \prop_get:NnNTF
+ \g_@@_context_loaded_themes_linenos_prop
{ #1 }
- \usemodule
- [ t ]
- [ markdown theme #2 ]
+ \l_tmpa_tl
+ {
+ \prop_get:NnN
+ \g_@@_context_loaded_themes_versions_prop
+ { #1 }
+ \l_tmpb_tl
+ \str_if_eq:nVTF
+ { #2 }
+ \l_tmpb_tl
+ {
+ \msg_warning:nnnVn
+ { markdown }
+ { repeatedly-loaded-context-theme }
+ { #1 }
+ \l_tmpa_tl
+ { #2 }
+ }
+ {
+ \msg_error:nnnnVV
+ { markdown }
+ { different-versions-of-context-theme }
+ { #1 }
+ { #2 }
+ \l_tmpb_tl
+ \l_tmpa_tl
+ }
+ }
+ {
+ \prop_gput:Nnx
+ \g_@@_context_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D } % noqa: W200
+ \prop_gput:Nnn
+ \g_@@_context_loaded_themes_versions_prop
+ { #1 }
+ { #2 }
+% \end{macrocode}
+% \begin{markdown}
+%
+% Load built-in plain \TeX{} themes from the prop
+% \mref{g_@@_context_built_in_themes_prop} and from the filesystem otherwise.
+%
+% \end{markdown}
+% \begin{macrocode}
+ \prop_if_in:NnTF
+ \g_@@_context_built_in_themes_prop
+ { #1 }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-built-in-context-theme }
+ { #1 }
+ { #2 }
+ \prop_item:Nn
+ \g_@@_context_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-context-theme }
+ { #1 }
+ { #2 }
+ \usemodule
+ [ t ]
+ [ markdown theme #3 ]
+ }
+ }
}
{
- \@@_plain_tex_load_theme:nn
+ \@@_plain_tex_load_theme:nnn
{ #1 }
{ #2 }
+ { #3 }
}
}
\msg_new:nnn
{ markdown }
+ { loading-built-in-context-theme }
+ { Loading~version~#2~of~built-in~ConTeXt~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
{ loading-context-theme }
- { Loading~ConTeXt~Markdown~theme~#1 }
+ { Loading~version~#2~of~ConTeXt~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { repeatedly-loaded-context-theme }
+ {
+ Version~#3~of~ConTeXt~Markdown~theme~#1~was~previously~
+ loaded~on~line~#2,~not~loading~it~again
+ }
+\msg_new:nnn
+ { markdown }
+ { different-versions-of-context-theme }
+ {
+ Tried~to~load~version~#2~of~ConTeXt~Markdown~theme~#1~
+ but~version~#3~has~already~been~loaded~on~line~#4
+ }
\ExplSyntaxOff
% \end{macrocode}
% \iffalse
%</context>
-%<*themes-witiko-markdown-defaults-context>
+%<*themes-witiko-markdown-defaults-ctx>
% \fi
-% \par
% \begin{markdown}
%
% The `witiko/markdown/defaults` \Hologo{ConTeXt} theme provides default
@@ -36470,7 +40150,6 @@ end
% \begin{macrocode}
\markdownLoadPlainTeXTheme
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Next, the \Hologo{ConTeXt} theme overrides some of the plain \TeX{} definitions.
@@ -36569,7 +40248,6 @@ end
}%
\def\markdownRendererInputVerbatimPrototype#1{\typefile{#1}}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Fenced Code
@@ -36586,7 +40264,6 @@ end
{ #2 }
{ \markdownRendererInputVerbatim{#1} }
% \end{macrocode}
-% \par
% \begin{markdown}
%
% Otherwise, extract the first word of the infostring and treat it as the name
@@ -36620,7 +40297,7 @@ end
\seq_pop_left:NN
\l_tmpa_seq
\l_tmpa_tl
- \typefile[\l_tmpa_tl][]{#1}
+ \typefile[ \l_tmpa_tl ][] {#1}
}
}
\ExplSyntaxOff
@@ -36639,9 +40316,9 @@ end
\def\markdownRendererStrikeThroughPrototype#1{\overstrikes{#1}}
\def\markdownRendererSuperscriptPrototype#1{\high{#1}}
\def\markdownRendererSubscriptPrototype#1{\low{#1}}
-\def\markdownRendererDisplayMathPrototype#1{\startformula#1\stopformula}%
+\def\markdownRendererDisplayMathPrototype#1{%
+ \startformula#1\stopformula}%
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Tables
@@ -36665,8 +40342,10 @@ end
\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][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%
@@ -36704,18 +40383,19 @@ end
\fi\if#1r%
\setupTABLE[c][\the\markdownConTeXtColumnCounter][align=left]
\fi
- \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else
+ \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
+ \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax
+ \else
\expandafter\gobbleoneargument
\fi\markdownConTeXtRenderTableCell}
% \end{macrocode}
-% \par
% \begin{markdown}
%
%#### Raw Attributes
@@ -36734,13 +40414,13 @@ end
{
{ latex }
{
- \@@_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_inline:nn
{ #1 }
{ context }
}
}
{
- \@@_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_inline:nn
{ #1 }
{ #2 }
}
@@ -36753,13 +40433,13 @@ end
{
{ context }
{
- \@@_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_block:nn
{ #1 }
{ tex }
}
}
{
- \@@_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \@@_plain_tex_default_input_raw_block:nn
{ #1 }
{ #2 }
}
@@ -36773,10 +40453,9 @@ end
\protect
% \end{macrocode}
% \iffalse
-%</themes-witiko-markdown-defaults-context>
+%</themes-witiko-markdown-defaults-ctx>
%<*context>
% \fi
-% \par
% \begin{markdown}
%
% At the end of the \Hologo{ConTeXt} module, we load the
@@ -36786,9 +40465,31 @@ end
%
% \end{markdown}
% \begin{macrocode}
-\markdownIfOption{noDefaults}{}{
- \setupmarkdown[theme=witiko/markdown/defaults]
-}
+\ExplSyntaxOn
+\str_if_eq:VVT
+ \c_@@_top_layer_tl
+ \c_@@_option_layer_context_tl
+ {
+ \use:c
+ { ExplSyntaxOff }
+ \@@_if_option:nF
+ { noDefaults }
+ {
+ \@@_if_option:nTF
+ { experimental }
+ {
+ \@@_setup:n
+ { theme = witiko/markdown/defaults@experimental }
+ }
+ {
+ \@@_setup:n
+ { theme = witiko/markdown/defaults }
+ }
+ }
+ \use:c
+ { ExplSyntaxOn }
+ }
+\ExplSyntaxOff
\stopmodule
\protect
% \end{macrocode}
diff --git a/macros/generic/markdown/markdown.html b/macros/generic/markdown/markdown.html
index f16477d948..3b67c6a3f3 100644
--- a/macros/generic/markdown/markdown.html
+++ b/macros/generic/markdown/markdown.html
@@ -4,7 +4,7 @@
<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 Starý Novotný" />
+ <meta name="author" content="Vít Starý Novotný, Andrej Genčur" />
<title>Markdown Package User Manual</title>
<style>
code{white-space: pre-wrap;}
@@ -35,7 +35,7 @@
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
- pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
+ pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
@@ -92,8 +92,8 @@
<body>
<header id="title-block-header">
<h1 class="title">Markdown Package User Manual</h1>
-<p class="author">Vít Starý Novotný</p>
-<p class="date">3.6.1-0-g5a45a922 2024-06-20</p>
+<p class="author">Vít Starý Novotný, Andrej Genčur</p>
+<p class="date">3.10.0-0-g626df6ad 2025-01-27</p>
</header>
<nav id="TOC" role="doc-toc">
<ul>
@@ -153,17 +153,12 @@ 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="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="#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>
+<li><a href="#context-1" id="toc-context-1"><span
+class="toc-section-number">2.2.4</span> Con<span
+class="tex">T<sub>e</sub>X</span>t</a></li>
</ul></li>
<li><a href="#markdown-tokens" id="toc-markdown-tokens"><span
class="toc-section-number">2.3</span> Markdown Tokens</a>
@@ -191,7 +186,7 @@ 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
directly typeset <span class="tex">T<sub>e</sub>X</span> documents
-containing markdown markup. Unlike other convertors, the Markdown
+containing markdown markup. Unlike other converters, 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. <i class="em em-wink"></i></p>
@@ -211,7 +206,7 @@ which contains the latest development version of the Markdown package,
or a <span class="tex">T<sub>e</sub>X</span> distribution: <a
href="https://www.tug.org/texlive/"
title="TeX Live - TeX Users Group"><span
-class="tex">T<sub>e</sub>X</span> Live</a> ≥ 2022 is known to work with
+class="tex">T<sub>e</sub>X</span> Live</a> ≥ 2023 is known to work with
the current version of the Markdown package and so are recent versions
of <a href="https://miktex.org/" title="Home - MiKTeXorg">Mik<span
class="tex">T<sub>e</sub>X</span></a>. If you are using an older,
@@ -227,12 +222,12 @@ class="tex">T<sub>e</sub>X</span> distribution, you will need to install
it.</p>
<p>From <a href="https://github.com/witiko/markdown/releases"
title="Releases - witiko/markdown">Releases</a>, download <a
-href="https://github.com/witiko/markdown/releases/download/3.6.1/markdown.zip"
-title="Release 3.6.1 - witiko/markdown">an archive
+href="https://github.com/witiko/markdown/releases/download/3.10.0/markdown.zip"
+title="Release 3.10.0 - witiko/markdown">an archive
<code>markdown.zip</code> for this version of the Markdown package
-(3.6.1)</a> or a different version that you wish to install. Then, unzip
-the archive. If you downloaded an archive for a different version of the
-Markdown package, you should now locate a file named
+(3.10.0)</a> or a different version that you wish to install. Then,
+unzip the archive. If you downloaded an archive for a different version
+of the Markdown package, you should now locate a file named
<code>markdown.html</code> with the user manual for that version, open
it, and follow the installation steps in it rather than the steps from
this manual.</p>
@@ -245,22 +240,14 @@ enter the directory named <code>markdown</code> and run the
<p>Either of the two abovelisted approaches 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.lua</code>, <code>markdown-parser.lua</code>, and
+<code>markdown-unicode-data.lua</code>: The Lua module</li>
+<li><code>markdown-cli.lua</code> and <code>markdown2tex.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
-<code>witiko/graphicx/http</code> <span
-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
@@ -275,14 +262,13 @@ class="header-section-number">1.2.1</span> Local Installation</h3>
generally where the individual files should be placed:</p>
<ul>
<li><code>⟨TEXMF⟩/tex/luatex/markdown/markdown.lua</code></li>
-<li><code>⟨TEXMF⟩/tex/luatex/markdown/markdown-tinyyaml.lua</code></li>
+<li><code>⟨TEXMF⟩/tex/luatex/markdown/markdown-parser.lua</code></li>
+<li><code>⟨TEXMF⟩/tex/luatex/markdown/markdown-unicode-data.lua</code></li>
<li><code>⟨TEXMF⟩/scripts/markdown/markdown-cli.lua</code></li>
+<li><code>⟨TEXMF⟩/scripts/markdown/markdown2tex.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_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>
@@ -302,14 +288,13 @@ them together. This way your document can be portably typeset on legacy
<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-parser.lua</code></li>
+<li><code>./markdown-unicode-data.lua</code></li>
<li><code>./markdown-cli.lua</code></li>
+<li><code>./markdown2tex.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>
@@ -370,21 +355,12 @@ Interface</h4>
<code>hello.md</code> with the following content:</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode md"><code class="sourceCode markdown"><span id="cb7-1"><a href="#cb7-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="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> hello.md hello.tex</span>
+<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> hello.md hello.tex</span>
<span id="cb8-2"><a href="#cb8-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
-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 text “Hello <em>world</em>!” Invoking pdfTeX should have the
same effect:</p>
-<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> hello.md hello.tex</span>
+<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> hello.md hello.tex</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="ex">pdftex</span> document.tex</span></code></pre></div>
<h3 data-number="1.3.2" id="using-plain-tex"><span
class="header-section-number">1.3.2</span> Using Plain <span
@@ -688,18 +664,9 @@ class="sourceCode tex"><code class="sourceCode latex"><span id="cb34-1"><a href=
class="sourceCode md"><code class="sourceCode markdown"><span id="cb35-1"><a href="#cb35-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="cb36"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb36-1"><a href="#cb36-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="cb36-2"><a href="#cb36-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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb36-1"><a href="#cb36-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> example.md nomath.tex</span>
+<span id="cb36-2"><a href="#cb36-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> tex_math_dollars=true <span class="at">--</span> example.md math.tex</span>
<span id="cb36-3"><a href="#cb36-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>
@@ -709,8 +676,8 @@ contain the following text:</p>
</blockquote>
<p>Invoking pdfTeX should have the same effect:</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">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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb37-1"><a href="#cb37-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <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">markdown2tex</span> 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">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
@@ -770,8 +737,8 @@ accepts the same options as the plain <span
class="tex">T<sub>e</sub>X</span> interface, but now the options are
specified as ⟨<em>key</em>⟩<span
class="math inline"> = </span>⟨<em>value</em>⟩ pairs and they are passed
-either as package options, in the <code>\markdownSetup</code> command,
-or as parameters for the <code>markdown*</code> <span
+either as package options, in the <code>markdownSetup</code> command, 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>
@@ -858,19 +825,22 @@ class="tex">T<sub>e</sub>X</span>t interfaces.</p>
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>
+<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
+<code><strong>cacheDir</strong></code>. 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>
+versions of the documents from the cache. Furthermore, it can also
+significantly improve the processing speed for documents that require
+multiple compilation runs, since each markdown document is only
+converted once. 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>
+<code><strong>finalizeCache</strong></code> option is enabled.</p>
</dd>
</dl>
</dd>
@@ -880,9 +850,14 @@ the Lua command-line interface when it is used for plumbing.</p>
<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>
+Lua command-line interface for plumbing. However, it makes it impossible
+to post-process the converted documents and recover historical versions
+of the documents from the cache. Furthermore, it can significantly
+reduce the processing speed for documents that require multiple
+compilation runs, since each markdown document is converted multiple
+times needlessly.</p>
<p>This behavior will only be used when the
-<strong><code>finalizeCache</code></strong> option is disabled.</p>
+<code><strong>finalizeCache</strong></code> option is disabled.</p>
</dd>
</dl>
</dd>
@@ -893,18 +868,9 @@ Lua command-line interface for plumbing.</p>
<div class="sourceCode" id="cb46"><pre
class="sourceCode md"><code class="sourceCode markdown"><span id="cb46-1"><a href="#cb46-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>
+<code><strong>eagerCache</strong></code> option disabled:</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">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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb47-1"><a href="#cb47-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> eagerCache=false <span class="at">--</span> 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>
@@ -912,9 +878,9 @@ code:</p>
class="sourceCode tex"><code class="sourceCode latex"><span id="cb48-1"><a href="#cb48-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>
+<code><strong>eagerCache</strong></code> option enabled:</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>texlua ⟨CLI pathname⟩ eagerCache=true -- hello.md hello.tex</span></code></pre></div>
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb49-1"><a href="#cb49-1" aria-hidden="true" tabindex="-1"></a>markdown2tex 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>
@@ -925,8 +891,36 @@ named <code>⟨hash⟩.md.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>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
+<h4 data-number="2.2.1.2" id="option-experimental"><span
class="header-section-number">2.2.1.2</span> Option
+<code>experimental</code></h4>
+<dl>
+<dt><code>experimental</code> (default value: <code>false</code>)</dt>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>Experimental features that are planned to be the new default in the
+next major release of the Markdown package will be enabled.</p>
+<p>At the moment, this just means that the version
+<code>experimental</code> of the theme
+<code>witiko/markdown/defaults</code> will be loaded and warnings for
+hard-deprecated features will become errors. However, the effects may
+extend to other areas in the future as well.</p>
+</dd>
+</dl>
+</dd>
+<dd>
+<dl>
+<dt>false</dt>
+<dd>
+<p>Experimental features will be disabled.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h4 data-number="2.2.1.3" id="option-singletoncache"><span
+class="header-section-number">2.2.1.3</span> Option
<code>singletonCache</code></h4>
<dl>
<dt><code>singletonCache</code> (default value: <code>true</code>)</dt>
@@ -935,7 +929,7 @@ class="header-section-number">2.2.1.2</span> Option
<dt>true</dt>
<dd>
<p>Conversion functions produced by the function
-\luamref{new}<code>(options)</code> will be cached in an LRU cache of
+<code>new</code><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>
@@ -948,11 +942,12 @@ Markdown package.</p>
<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
+<p>Every call to the function <code>new</code><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://github.com/witiko/markdown/pull/226#issuecomment-1599641634">#226</a>.</p>
+memory leaks in the creation of conversion functions, see also <a
+href="https://github.com/witiko/markdown/pull/226#issuecomment-1599641634">#226
+(comment)</a>.</p>
<p>This was the default behavior until version 3.0.0 of the Markdown
package.</p>
</dd>
@@ -989,8 +984,8 @@ contain the following text:</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-unicodenormalization"><span
-class="header-section-number">2.2.1.3</span> Option
+<h4 data-number="2.2.1.4" id="option-unicodenormalization"><span
+class="header-section-number">2.2.1.4</span> Option
<code>unicodeNormalization</code></h4>
<dl>
<dt><code>unicodeNormalization</code> (default value:
@@ -1003,7 +998,7 @@ class="header-section-number">2.2.1.3</span> Option
href="https://unicode.org/faq/normalization.html">Unicode normalization
forms</a> before conversion. The Unicode normalization norm used is
determined by option
-<strong><code>unicodeNormalizationForm</code></strong>.</p>
+<code><strong>unicodeNormalizationForm</strong></code>.</p>
</dd>
</dl>
</dd>
@@ -1017,8 +1012,8 @@ conversion.</p>
</dl>
</dd>
</dl>
-<h4 data-number="2.2.1.4" id="option-unicodenormalizationform"><span
-class="header-section-number">2.2.1.4</span> Option
+<h4 data-number="2.2.1.5" id="option-unicodenormalizationform"><span
+class="header-section-number">2.2.1.5</span> Option
<code>unicodeNormalizationForm</code></h4>
<dl>
<dt><code>unicodeNormalizationForm</code> (default value:
@@ -1027,7 +1022,7 @@ class="header-section-number">2.2.1.4</span> Option
<dl>
<dt>nfc</dt>
<dd>
-<p>When option <strong><code>unicodeNormalization</code></strong> has
+<p>When option <code><strong>unicodeNormalization</strong></code> has
been enabled, markdown documents will be normalized using Unicode
Normalization Form C (NFC) before conversion.</p>
</dd>
@@ -1037,7 +1032,7 @@ Normalization Form C (NFC) before conversion.</p>
<dl>
<dt>nfd</dt>
<dd>
-<p>When option <strong><code>unicodeNormalization</code></strong> has
+<p>When option <code><strong>unicodeNormalization</strong></code> has
been enabled, markdown documents will be normalized using Unicode
Normalization Form D (NFD) before conversion.</p>
</dd>
@@ -1047,7 +1042,7 @@ Normalization Form D (NFD) before conversion.</p>
<dl>
<dt>nfkc</dt>
<dd>
-<p>When option <strong><code>unicodeNormalization</code></strong> has
+<p>When option <code><strong>unicodeNormalization</strong></code> has
been enabled, markdown documents will be normalized using Unicode
Normalization Form KC (NFKC) before conversion.</p>
</dd>
@@ -1057,15 +1052,15 @@ Normalization Form KC (NFKC) before conversion.</p>
<dl>
<dt>nfkd</dt>
<dd>
-<p>When option <strong><code>unicodeNormalization</code></strong> has
+<p>When option <code><strong>unicodeNormalization</strong></code> has
been enabled, markdown documents will be normalized using Unicode
Normalization Form KD (NFKD) before conversion.</p>
</dd>
</dl>
</dd>
</dl>
-<h4 data-number="2.2.1.5" id="option-cachedir"><span
-class="header-section-number">2.2.1.5</span> Option
+<h4 data-number="2.2.1.6" id="option-cachedir"><span
+class="header-section-number">2.2.1.6</span> Option
<code>cacheDir</code></h4>
<dl>
<dt><code>cacheDir</code> (default value: <code>"."</code>)</dt>
@@ -1122,17 +1117,8 @@ class="sourceCode tex"><code class="sourceCode latex"><span id="cb56-1"><a href=
class="sourceCode md"><code class="sourceCode markdown"><span id="cb57-1"><a href="#cb57-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="cb58"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb58-1"><a href="#cb58-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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb58-1"><a href="#cb58-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> cacheDir=cache <span class="at">--</span> hello.md hello.tex</span>
<span id="cb58-2"><a href="#cb58-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
-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 text “Hello <em>world</em>!” A directory named
<code>cache</code> containing several cache files of the Markdown
@@ -1197,8 +1183,8 @@ 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.6" id="option-contentblockslanguagemap"><span
-class="header-section-number">2.2.1.6</span> Option
+<h4 data-number="2.2.1.7" id="option-contentblockslanguagemap"><span
+class="header-section-number">2.2.1.7</span> Option
<code>contentBlocksLanguageMap</code></h4>
<dl>
<dt><code>contentBlocksLanguageMap</code> (default value:
@@ -1206,7 +1192,7 @@ class="header-section-number">2.2.1.6</span> Option
<dd>
<p>The filename of the <abbr>JSON</abbr> file that maps filename
extensions to programming language names in the iA Writer content blocks
-when the <strong><code>contentBlocks</code></strong> option is
+when the <code><strong>contentBlocks</strong></code> option is
enabled.</p>
</dd>
</dl>
@@ -1362,39 +1348,39 @@ contain the following text:</p>
class="sourceCode tex"><code class="sourceCode latex"><span id="cb78-1"><a href="#cb78-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.7" id="option-debugextensionsfilename"><span
-class="header-section-number">2.2.1.7</span> Option
+<h4 data-number="2.2.1.8" id="option-debugextensionsfilename"><span
+class="header-section-number">2.2.1.8</span> Option
<code>debugExtensionsFileName</code></h4>
<dl>
<dt><code>debugExtensionsFileName</code> (default value:
<code>"debug-extensions.json"</code>)</dt>
<dd>
<p>The filename of the <abbr>JSON</abbr> file that will be produced when
-the <strong><code>debugExtensions</code></strong> option is enabled.
+the <code><strong>debugExtensions</strong></code> option is enabled.
This file will contain the extensible subset of the <abbr>peg</abbr>
grammar of markdown after built-in syntax extensions (see options
-<strong><code>citations</code></strong>,
-<strong><code>contentBlocks</code></strong>,
-<strong><code>definitionLists</code></strong>, etc.) and user-defined
-syntax extensions (see option <strong><code>extensions</code></strong>)
+<code><strong>citations</strong></code>,
+<code><strong>contentBlocks</strong></code>,
+<code><strong>definitionLists</strong></code>, etc.) and user-defined
+syntax extensions (see option <code><strong>extensions</strong></code>)
have been applied.</p>
</dd>
</dl>
-<h4 data-number="2.2.1.8" id="option-frozencachefilename"><span
-class="header-section-number">2.2.1.8</span> Option
+<h4 data-number="2.2.1.9" id="option-frozencachefilename"><span
+class="header-section-number">2.2.1.9</span> Option
<code>frozenCacheFileName</code></h4>
<dl>
<dt><code>frozenCacheFileName</code> (default value:
<code>"frozenCache.tex"</code>)</dt>
<dd>
<p>A path to an output file (frozen cache) that will be created when the
-<strong><code>finalizeCache</code></strong> option is enabled and will
+<code><strong>finalizeCache</strong></code> option is enabled and will
contain a mapping between an enumeration of markdown documents and their
auxiliary cache files.</p>
<p>The frozen cache makes it possible to later typeset a plain <span
class="tex">T<sub>e</sub>X</span> document that contains markdown
documents without invoking Lua using the
-<strong><code>frozenCache</code></strong> plain <span
+<code><strong>frozenCache</strong></code> plain <span
class="tex">T<sub>e</sub>X</span> option. As a result, the plain <span
class="tex">T<sub>e</sub>X</span> document becomes more portable, but
further changes in the order and the content of markdown documents will
@@ -1441,17 +1427,8 @@ class="sourceCode tex"><code class="sourceCode latex"><span id="cb81-1"><a href=
class="sourceCode md"><code class="sourceCode markdown"><span id="cb82-1"><a href="#cb82-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="cb83"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb83-1"><a href="#cb83-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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb83-1"><a href="#cb83-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> finalizeCache=true frozenCacheFileName=cache.tex <span class="at">--</span> hello.md hello.tex</span>
<span id="cb83-2"><a href="#cb83-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
-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 text “Hello <em>world</em>!” A frozen cache will also be
produced in the <code>cache.tex</code> output file as we requested using
@@ -1585,8 +1562,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.9" id="option-autoidentifiers"><span
-class="header-section-number">2.2.1.9</span> Option
+<h4 data-number="2.2.1.10" id="option-autoidentifiers"><span
+class="header-section-number">2.2.1.10</span> Option
<code>autoIdentifiers</code></h4>
<dl>
<dt><code>autoIdentifiers</code> (default value:
@@ -1611,9 +1588,9 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb96-1"><a hre
</dd>
</dl>
<p>See also the option
-<strong><code>gfmAutoIdentifiers</code></strong>.</p>
-<h4 data-number="2.2.1.10" id="option-blankbeforeblockquote"><span
-class="header-section-number">2.2.1.10</span> Option
+<code><strong>gfmAutoIdentifiers</strong></code>.</p>
+<h4 data-number="2.2.1.11" id="option-blankbeforeblockquote"><span
+class="header-section-number">2.2.1.11</span> Option
<code>blankBeforeBlockquote</code></h4>
<dl>
<dt><code>blankBeforeBlockquote</code> (default value:
@@ -1690,18 +1667,9 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb100-1"><a hr
<span id="cb100-2"><a href="#cb100-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="cb101"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb101-1"><a href="#cb101-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="cb101-2"><a href="#cb101-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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb101-1"><a href="#cb101-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb101-2"><a href="#cb101-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> blankBeforeBlockquote=true <span class="at">--</span> content.md optiontrue.tex</span>
<span id="cb101-3"><a href="#cb101-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>
@@ -1806,8 +1774,8 @@ contain the following text:</p>
</blockquote>
<p>A paragraph &gt; Not a quote.</p>
</blockquote>
-<h4 data-number="2.2.1.11" id="option-blankbeforecodefence"><span
-class="header-section-number">2.2.1.11</span> Option
+<h4 data-number="2.2.1.12" id="option-blankbeforecodefence"><span
+class="header-section-number">2.2.1.12</span> Option
<code>blankBeforeCodeFence</code></h4>
<dl>
<dt><code>blankBeforeCodeFence</code> (default value:
@@ -1889,18 +1857,9 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb112-1"><a hr
<span id="cb112-4"><a href="#cb112-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="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">texlua</span> ⟨CLI pathname⟩ fencedCode=true <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb113-2"><a href="#cb113-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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb113-1"><a href="#cb113-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> fencedCode=true <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb113-2"><a href="#cb113-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> fencedCode=true blankBeforeCodeFence=true <span class="at">--</span> content.md optiontrue.tex</span>
<span id="cb113-3"><a href="#cb113-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>
@@ -2011,8 +1970,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.12" id="option-blankbeforedivfence"><span
-class="header-section-number">2.2.1.12</span> Option
+<h4 data-number="2.2.1.13" id="option-blankbeforedivfence"><span
+class="header-section-number">2.2.1.13</span> Option
<code>blankBeforeDivFence</code></h4>
<dl>
<dt><code>blankBeforeDivFence</code> (default value:
@@ -2068,8 +2027,8 @@ contain the following text:</p>
<p>A paragraph.</p>
<p>::: {.identifier} Not a fenced div. :::</p>
</blockquote>
-<h4 data-number="2.2.1.13" id="option-blankbeforeheading"><span
-class="header-section-number">2.2.1.13</span> Option
+<h4 data-number="2.2.1.14" id="option-blankbeforeheading"><span
+class="header-section-number">2.2.1.14</span> Option
<code>blankBeforeHeading</code></h4>
<dl>
<dt><code>blankBeforeHeading</code> (default value:
@@ -2148,18 +2107,9 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb129-1"><a hr
<span id="cb129-3"><a href="#cb129-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="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⟩ blankBeforeHeading=true <span class="at">--</span> content.md optiontrue.tex</span>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb130-1"><a href="#cb130-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <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">markdown2tex</span> blankBeforeHeading=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>
-<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>
@@ -2262,8 +2212,8 @@ 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.14" id="option-blankbeforelist"><span
-class="header-section-number">2.2.1.14</span> Option
+<h4 data-number="2.2.1.15" id="option-blankbeforelist"><span
+class="header-section-number">2.2.1.15</span> Option
<code>blankBeforeList</code></h4>
<dl>
<dt><code>blankBeforeList</code> (default value:
@@ -2340,18 +2290,9 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb140-1"><a hr
<span id="cb140-2"><a href="#cb140-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="cb141"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb141-1"><a href="#cb141-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="cb141-2"><a href="#cb141-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>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb141-1"><a href="#cb141-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb141-2"><a href="#cb141-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> blankBeforeList=true <span class="at">--</span> content.md optiontrue.tex</span>
<span id="cb141-3"><a href="#cb141-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>
@@ -2456,8 +2397,8 @@ contain the following text:</p>
</ul>
<p>A paragraph. - not a list</p>
</blockquote>
-<h4 data-number="2.2.1.15" id="option-bracketedspans"><span
-class="header-section-number">2.2.1.15</span> Option
+<h4 data-number="2.2.1.16" id="option-bracketedspans"><span
+class="header-section-number">2.2.1.16</span> Option
<code>bracketedSpans</code></h4>
<dl>
<dt><code>bracketedSpans</code> (default value: <code>false</code>)</dt>
@@ -2529,8 +2470,8 @@ 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.16" id="option-breakableblockquotes"><span
-class="header-section-number">2.2.1.16</span> Option
+<h4 data-number="2.2.1.17" id="option-breakableblockquotes"><span
+class="header-section-number">2.2.1.17</span> Option
<code>breakableBlockquotes</code></h4>
<dl>
<dt><code>breakableBlockquotes</code> (default value:
@@ -2611,18 +2552,9 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb154-1"><a hr
<span id="cb154-3"><a href="#cb154-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="cb155"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb155-1"><a href="#cb155-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="cb155-2"><a href="#cb155-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb155-1"><a href="#cb155-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> breakableBlockquotes=false <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb155-2"><a href="#cb155-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> content.md optiontrue.tex</span>
<span id="cb155-3"><a href="#cb155-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>
@@ -2751,8 +2683,8 @@ contain the following text:</p>
<p>Another block quote.</p>
</blockquote>
</blockquote>
-<h4 data-number="2.2.1.17" id="option-citationnbsps"><span
-class="header-section-number">2.2.1.17</span> Option
+<h4 data-number="2.2.1.18" id="option-citationnbsps"><span
+class="header-section-number">2.2.1.18</span> Option
<code>citationNbsps</code></h4>
<dl>
<dt><code>citationNbsps</code> (default value: <code>true</code>)</dt>
@@ -2818,8 +2750,8 @@ non-breaking space:</p>
<p>[1] Donald·Ervin Knuth. <em>The TeXbook, volume A of Computers and
typesetting.</em> Addison-Wesley, 1984.</p>
</blockquote>
-<h4 data-number="2.2.1.18" id="option-citations"><span
-class="header-section-number">2.2.1.18</span> Option
+<h4 data-number="2.2.1.19" id="option-citations"><span
+class="header-section-number">2.2.1.19</span> Option
<code>citations</code></h4>
<dl>
<dt><code>citations</code> (default value: <code>false</code>)</dt>
@@ -2897,8 +2829,8 @@ contain the following text:</p>
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.19" id="option-codespans"><span
-class="header-section-number">2.2.1.19</span> Option
+<h4 data-number="2.2.1.20" id="option-codespans"><span
+class="header-section-number">2.2.1.20</span> Option
<code>codeSpans</code></h4>
<dl>
<dt><code>codeSpans</code> (default value: <code>true</code>)</dt>
@@ -2980,18 +2912,9 @@ class="sourceCode tex"><code class="sourceCode latex"><span id="cb173-1"><a href
class="sourceCode md"><code class="sourceCode markdown"><span id="cb174-1"><a href="#cb174-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="cb175"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb175-1"><a href="#cb175-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="cb175-2"><a href="#cb175-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb175-1"><a href="#cb175-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> codeSpans=false <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb175-2"><a href="#cb175-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> content.md optiontrue.tex</span>
<span id="cb175-3"><a href="#cb175-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>
@@ -3087,8 +3010,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.20" id="option-contentblocks"><span
-class="header-section-number">2.2.1.20</span> Option
+<h4 data-number="2.2.1.21" id="option-contentblocks"><span
+class="header-section-number">2.2.1.21</span> Option
<code>contentBlocks</code></h4>
<dl>
<dt><code>contentBlocks</code> (default value: <code>false</code>)</dt>
@@ -3261,8 +3184,8 @@ contain the following text:</p>
class="sourceCode tex"><code class="sourceCode latex"><span id="cb196-1"><a href="#cb196-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.21" id="option-contentlevel"><span
-class="header-section-number">2.2.1.21</span> Option
+<h4 data-number="2.2.1.22" id="option-contentlevel"><span
+class="header-section-number">2.2.1.22</span> Option
<code>contentLevel</code></h4>
<dl>
<dt><code>contentLevel</code> (default value: <code>block</code>)</dt>
@@ -3373,8 +3296,8 @@ contain the following text:</p>
</ul>
<p>- this is - a text</p>
</blockquote>
-<h4 data-number="2.2.1.22" id="option-debugextensions"><span
-class="header-section-number">2.2.1.22</span> Option
+<h4 data-number="2.2.1.23" id="option-debugextensions"><span
+class="header-section-number">2.2.1.23</span> Option
<code>debugExtensions</code></h4>
<dl>
<dt><code>debugExtensions</code> (default value:
@@ -3385,13 +3308,13 @@ class="header-section-number">2.2.1.22</span> Option
<dd>
<p>Produce a <abbr>JSON</abbr> file that will contain the extensible
subset of the <abbr>peg</abbr> grammar of markdown after built-in syntax
-extensions (see options <strong><code>citations</code></strong>,
-<strong><code>contentBlocks</code></strong>,
-<strong><code>definitionLists</code></strong>, etc.) and user-defined
-syntax extensions (see option <strong><code>extensions</code></strong>)
+extensions (see options <code><strong>citations</strong></code>,
+<code><strong>contentBlocks</strong></code>,
+<code><strong>definitionLists</strong></code>, etc.) and user-defined
+syntax extensions (see option <code><strong>extensions</strong></code>)
have been applied. This helps you to see how the different extensions
interact. The name of the produced <abbr>JSON</abbr> file is controlled
-by the <strong><code>debugExtensionsFileName</code></strong> option.</p>
+by the <code><strong>debugExtensionsFileName</strong></code> option.</p>
</dd>
</dl>
</dd>
@@ -3496,8 +3419,8 @@ class="sourceCode json"><code class="sourceCode json"><span id="cb208-1"><a href
<span id="cb208-37"><a href="#cb208-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.23" id="option-definitionlists"><span
-class="header-section-number">2.2.1.23</span> Option
+<h4 data-number="2.2.1.24" id="option-definitionlists"><span
+class="header-section-number">2.2.1.24</span> Option
<code>definitionLists</code></h4>
<dl>
<dt><code>definitionLists</code> (default value:
@@ -3613,8 +3536,39 @@ contain the following text:</p>
</dd>
</dl>
</blockquote>
-<h4 data-number="2.2.1.24" id="option-expectjekylldata"><span
-class="header-section-number">2.2.1.24</span> Option
+<h4 data-number="2.2.1.25" id="option-ensurejekylldata"><span
+class="header-section-number">2.2.1.25</span> Option
+<code>ensureJekyllData</code></h4>
+<dl>
+<dt><code>ensureJekyllData</code> (default value:
+<code>false</code>)</dt>
+<dd>
+<dl>
+<dt>false</dt>
+<dd>
+<p>When the <code><strong>jekyllData</strong></code> and
+<code><strong>expectJekyllData</strong></code> options are enabled, then
+a markdown document may begin directly with <abbr>yaml</abbr> metadata
+and may contain nothing but <abbr>yaml</abbr> metadata. Otherwise, the
+markdown document is processed as markdown text.</p>
+</dd>
+</dl>
+</dd>
+<dd>
+<dl>
+<dt>true</dt>
+<dd>
+<p>When the <code><strong>jekyllData</strong></code> and
+<code><strong>expectJekyllData</strong></code> options are enabled, then
+a markdown document must begin directly with <abbr>yaml</abbr> metadata
+and must contain nothing but <abbr>yaml</abbr> metadata. Otherwise, an
+error is produced.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h4 data-number="2.2.1.26" id="option-expectjekylldata"><span
+class="header-section-number">2.2.1.26</span> Option
<code>expectJekyllData</code></h4>
<dl>
<dt><code>expectJekyllData</code> (default value:
@@ -3623,7 +3577,7 @@ class="header-section-number">2.2.1.24</span> Option
<dl>
<dt>false</dt>
<dd>
-<p>When the <strong><code>jekyllData</code></strong> option is enabled,
+<p>When the <code><strong>jekyllData</strong></code> option is enabled,
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
@@ -3655,7 +3609,7 @@ class="sourceCode latex"><code class="sourceCode latex"><span id="cb216-1"><a hr
<dl>
<dt>true</dt>
<dd>
-<p>When the <strong><code>jekyllData</code></strong> option is enabled,
+<p>When the <code><strong>jekyllData</strong></code> 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="cb217"><pre
@@ -3713,14 +3667,14 @@ contain the following text:</p>
<blockquote>
<p>Jane Doe is 99 years old.</p>
</blockquote>
-<h4 data-number="2.2.1.25" id="option-extensions"><span
-class="header-section-number">2.2.1.25</span> Option
+<h4 data-number="2.2.1.27" id="option-extensions"><span
+class="header-section-number">2.2.1.27</span> Option
<code>extensions</code></h4>
<dl>
<dt><code>extensions</code> (default value: <code>{}</code>)</dt>
<dd>
<p>The filenames of user-defined syntax extensions that will be applied
-to the markdown reader. If the <strong><code>kpathsea</code></strong>
+to the markdown reader. If the <code><strong>kpathsea</strong></code>
library is available, files will be searched for not only in the current
working directory but also in the <span
class="tex">T<sub>e</sub>X</span> directory structure.</p>
@@ -3773,8 +3727,8 @@ 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.26" id="option-fancylists"><span
-class="header-section-number">2.2.1.26</span> Option
+<h4 data-number="2.2.1.28" id="option-fancylists"><span
+class="header-section-number">2.2.1.28</span> Option
<code>fancyLists</code></h4>
<dl>
<dt><code>fancyLists</code> (default value: <code>false</code>)</dt>
@@ -3854,8 +3808,8 @@ contain the following text:</p>
<li>third item</li>
</ol>
</blockquote>
-<h4 data-number="2.2.1.27" id="option-fencedcode"><span
-class="header-section-number">2.2.1.27</span> Option
+<h4 data-number="2.2.1.29" id="option-fencedcode"><span
+class="header-section-number">2.2.1.29</span> Option
<code>fencedCode</code></h4>
<dl>
<dt><code>fencedCode</code> (default value: <code>true</code>)</dt>
@@ -3990,8 +3944,8 @@ class="sourceCode html"><code class="sourceCode html"><span id="cb237-1"><a href
<span id="cb237-7"><a href="#cb237-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="cb237-8"><a href="#cb237-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.28" id="option-fencedcodeattributes"><span
-class="header-section-number">2.2.1.28</span> Option
+<h4 data-number="2.2.1.30" id="option-fencedcodeattributes"><span
+class="header-section-number">2.2.1.30</span> Option
<code>fencedCodeAttributes</code></h4>
<dl>
<dt><code>fencedCodeAttributes</code> (default value:
@@ -4067,8 +4021,8 @@ class="sourceCode js linenos"><code class="sourceCode javascript"><span id="cb24
<span id="cb241-2"><a href="#cb241-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="cb241-3"><a href="#cb241-3" aria-hidden="true" tabindex="-1"></a><span class="fl">3.</span> }</span></code></pre></div>
</blockquote>
-<h4 data-number="2.2.1.29" id="fenced-divs"><span
-class="header-section-number">2.2.1.29</span> Option
+<h4 data-number="2.2.1.31" id="fenced-divs"><span
+class="header-section-number">2.2.1.31</span> Option
<code>fencedDivs</code></h4>
<dl>
<dt><code>fencedDivs</code> (default value: <code>false</code>)</dt>
@@ -4123,20 +4077,20 @@ contain the following text:</p>
<blockquote>
<p>Here is a special paragraph.</p>
</blockquote>
-<h4 data-number="2.2.1.30" id="option-finalizecache"><span
-class="header-section-number">2.2.1.30</span> Option
+<h4 data-number="2.2.1.32" id="option-finalizecache"><span
+class="header-section-number">2.2.1.32</span> Option
<code>finalizeCache</code></h4>
<dl>
<dt><code>finalizeCache</code> (default value: <code>false</code>)</dt>
<dd>
<p>Whether an output file specified with the
-<strong><code>frozenCacheFileName</code></strong> option (frozen cache)
+<code><strong>frozenCacheFileName</strong></code> option (frozen cache)
that contains a mapping between an enumeration of markdown documents and
their auxiliary cache files will be created.</p>
<p>The frozen cache makes it possible to later typeset a plain <span
class="tex">T<sub>e</sub>X</span> document that contains markdown
documents without invoking Lua using the
-<strong><code>frozenCache</code></strong> plain <span
+<code><strong>frozenCache</strong></code> plain <span
class="tex">T<sub>e</sub>X</span> option. As a result, the plain <span
class="tex">T<sub>e</sub>X</span> document becomes more portable, but
further changes in the order and the content of markdown documents will
@@ -4255,15 +4209,15 @@ 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.31" id="option-frozencachecounter"><span
-class="header-section-number">2.2.1.31</span> Option
+<h4 data-number="2.2.1.33" id="option-frozencachecounter"><span
+class="header-section-number">2.2.1.33</span> Option
<code>frozenCacheCounter</code></h4>
<dl>
<dt><code>frozenCacheCounter</code> (default value: <code>0</code>)</dt>
<dd>
<p>The number of the current markdown document that will be stored in an
output file (frozen cache) when the
-<strong><code>finalizeCache</code></strong> is enabled. When the
+<code><strong>finalizeCache</strong></code> is enabled. When the
document number is 0, then a new frozen cache will be created.
Otherwise, the frozen cache will be appended.</p>
<p>Each frozen cache entry will define a <span
@@ -4296,8 +4250,8 @@ class="sourceCode sh"><code class="sourceCode bash"><span id="cb258-1"><a href="
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.32" id="option-gfmautoidentifiers"><span
-class="header-section-number">2.2.1.32</span> Option
+<h4 data-number="2.2.1.34" id="option-gfmautoidentifiers"><span
+class="header-section-number">2.2.1.34</span> Option
<code>gfmAutoIdentifiers</code></h4>
<dl>
<dt><code>gfmAutoIdentifiers</code> (default value:
@@ -4323,9 +4277,9 @@ extension.</p>
</dd>
</dl>
<p>See also the option
-<strong><code>autoIdentifiers</code></strong>.</p>
-<h4 data-number="2.2.1.33" id="option-hashenumerators"><span
-class="header-section-number">2.2.1.33</span> Option
+<code><strong>autoIdentifiers</strong></code>.</p>
+<h4 data-number="2.2.1.35" id="option-hashenumerators"><span
+class="header-section-number">2.2.1.35</span> Option
<code>hashEnumerators</code></h4>
<dl>
<dt><code>hashEnumerators</code> (default value:
@@ -4427,8 +4381,8 @@ contain the following text:</p>
<li>Parish</li>
</ol>
</blockquote>
-<h4 data-number="2.2.1.34" id="header-attributes"><span
-class="header-section-number">2.2.1.34</span> Option
+<h4 data-number="2.2.1.36" id="header-attributes"><span
+class="header-section-number">2.2.1.36</span> Option
<code>headerAttributes</code></h4>
<dl>
<dt><code>headerAttributes</code> (default value:
@@ -4457,8 +4411,8 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb265-1"><a hr
</dl>
</dd>
</dl>
-<h4 data-number="2.2.1.35" id="option-html"><span
-class="header-section-number">2.2.1.35</span> Option
+<h4 data-number="2.2.1.37" id="option-html"><span
+class="header-section-number">2.2.1.37</span> Option
<code>html</code></h4>
<dl>
<dt><code>html</code> (default value: <code>true</code>)</dt>
@@ -4548,23 +4502,14 @@ class="sourceCode tex"><code class="sourceCode latex"><span id="cb268-1"><a href
class="sourceCode html"><code class="sourceCode html"><span id="cb269-1"><a href="#cb269-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="cb269-2"><a href="#cb269-2" aria-hidden="true" tabindex="-1"></a>*Is there block tag support?*</span>
<span id="cb269-3"><a href="#cb269-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="cb269-4"><a href="#cb269-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="cb269-4"><a href="#cb269-4" aria-hidden="true" tabindex="-1"></a>*Is there <span class="dt">&lt;</span><span class="kw">inline</span><span class="ot"> tag</span><span class="op">=</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="cb269-5"><a href="#cb269-5" aria-hidden="true" tabindex="-1"></a>_Is there <span class="co">&lt;!-- comment --&gt;</span> support?_</span>
<span id="cb269-6"><a href="#cb269-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="cb270"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb270-1"><a href="#cb270-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="cb270-2"><a href="#cb270-2" aria-hidden="true" tabindex="-1"></a><span class="ex">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optiontrue.tex</span>
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb270-1"><a href="#cb270-1" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> html=false <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb270-2"><a href="#cb270-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> <span class="at">--</span> content.md optiontrue.tex</span>
<span id="cb270-3"><a href="#cb270-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>
@@ -4695,8 +4640,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.36" id="option-hybrid"><span
-class="header-section-number">2.2.1.36</span> Option
+<h4 data-number="2.2.1.38" id="option-hybrid"><span
+class="header-section-number">2.2.1.38</span> Option
<code>hybrid</code></h4>
<dl>
<dt><code>hybrid</code> (default value: <code>false</code>)</dt>
@@ -4720,7 +4665,7 @@ markdown markup freely.</p>
<dd>
<p>Enable the escaping of special plain <span
class="tex">T<sub>e</sub>X</span> characters outside verbatim
-environments, so that they are not interpretted by <span
+environments, so that they are not interpreted by <span
class="tex">T<sub>e</sub>X</span>. This is encouraged when typesetting
automatically generated content or markdown documents that were not
prepared with this package in mind.</p>
@@ -4728,35 +4673,83 @@ prepared with this package in mind.</p>
</dl>
</dd>
</dl>
+<p>The <code><strong>hybrid</strong></code> option makes it difficult to
+untangle <span class="tex">T<sub>e</sub>X</span> input from markdown
+text, which makes documents written with the
+<code><strong>hybrid</strong></code> option less interoperable and more
+difficult to read for authors. Therefore, the option has been
+soft-deprecated in version 3.7.1 of the Markdown package: It will never
+be removed but using it prints a warning and is discouraged.</p>
+<p>Consider one of the following better alternatives for mixing <span
+class="tex">T<sub>e</sub>X</span> and markdown:</p>
+<ul>
+<li><p>With the <code><strong>contentBlocks</strong></code> option,
+authors can move large blocks of TeX code to separate files and include
+them in their markdown documents as external resources:</p>
+<div class="sourceCode" id="cb277"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb277-1"><a href="#cb277-1" aria-hidden="true" tabindex="-1"></a><span class="an">Here is a mathematical formula:</span></span>
+<span id="cb277-2"><a href="#cb277-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb277-3"><a href="#cb277-3" aria-hidden="true" tabindex="-1"></a> /math-formula.tex</span></code></pre></div></li>
+<li><p>With the <code><strong>rawAttribute</strong></code> option,
+authors can denote raw text spans and code blocks that will be
+interpreted as <span class="tex">T<sub>e</sub>X</span> code:</p>
+<div class="sourceCode" id="cb278"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb278-1"><a href="#cb278-1" aria-hidden="true" tabindex="-1"></a><span class="in">`$H_2 O$`</span>{=tex} is a liquid.</span>
+<span id="cb278-2"><a href="#cb278-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb278-3"><a href="#cb278-3" aria-hidden="true" tabindex="-1"></a>Here is a mathematical formula:</span>
+<span id="cb278-4"><a href="#cb278-4" aria-hidden="true" tabindex="-1"></a><span class="in">``` {=tex}</span></span>
+<span id="cb278-5"><a href="#cb278-5" aria-hidden="true" tabindex="-1"></a><span class="in">\[distance[i] =</span></span>
+<span id="cb278-6"><a href="#cb278-6" aria-hidden="true" tabindex="-1"></a><span class="in"> \begin{dcases}</span></span>
+<span id="cb278-7"><a href="#cb278-7" aria-hidden="true" tabindex="-1"></a><span class="in"> a &amp; b \\</span></span>
+<span id="cb278-8"><a href="#cb278-8" aria-hidden="true" tabindex="-1"></a><span class="in"> c &amp; d</span></span>
+<span id="cb278-9"><a href="#cb278-9" aria-hidden="true" tabindex="-1"></a><span class="in"> \end{dcases}</span></span>
+<span id="cb278-10"><a href="#cb278-10" aria-hidden="true" tabindex="-1"></a><span class="in">\]</span></span>
+<span id="cb278-11"><a href="#cb278-11" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div></li>
+<li><p>With options <code><strong>texMathDollars</strong></code>,
+<code><strong>texMathSingleBackslash</strong></code>, and
+<code><strong>texMathDoubleBackslash</strong></code>, authors can freely
+type <span class="tex">T<sub>e</sub>X</span> commands between dollar
+signs or backslash-escaped brackets:</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>$H_2 O$ is a liquid.</span>
+<span id="cb279-2"><a href="#cb279-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb279-3"><a href="#cb279-3" aria-hidden="true" tabindex="-1"></a>Here is a mathematical formula:</span>
+<span id="cb279-4"><a href="#cb279-4" aria-hidden="true" tabindex="-1"></a><span class="sc">\[</span>distance<span class="co">[</span><span class="ot">i</span><span class="co">]</span> =</span>
+<span id="cb279-5"><a href="#cb279-5" aria-hidden="true" tabindex="-1"></a> \begin{dcases}</span>
+<span id="cb279-6"><a href="#cb279-6" aria-hidden="true" tabindex="-1"></a> a &amp; b <span class="sc">\\</span></span>
+<span id="cb279-7"><a href="#cb279-7" aria-hidden="true" tabindex="-1"></a> c &amp; d</span>
+<span id="cb279-8"><a href="#cb279-8" aria-hidden="true" tabindex="-1"></a> \end{dcases}</span>
+<span id="cb279-9"><a href="#cb279-9" aria-hidden="true" tabindex="-1"></a><span class="sc">\]</span></span></code></pre></div></li>
+</ul>
<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="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="fu">\input</span> markdown</span>
-<span id="cb277-2"><a href="#cb277-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb277-3"><a href="#cb277-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb277-4"><a href="#cb277-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb277-5"><a href="#cb277-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb277-6"><a href="#cb277-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb277-7"><a href="#cb277-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb277-8"><a href="#cb277-8" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span>
-<span id="cb277-9"><a href="#cb277-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb277-10"><a href="#cb277-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="cb277-11"><a href="#cb277-11" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span>
-<span id="cb277-12"><a href="#cb277-12" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span>
-<span id="cb277-13"><a href="#cb277-13" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span>
-<span id="cb277-14"><a href="#cb277-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb277-15"><a href="#cb277-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span>
-<span id="cb277-16"><a href="#cb277-16" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span>
-<span id="cb277-17"><a href="#cb277-17" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</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>}</span>
-<span id="cb277-20"><a href="#cb277-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb277-21"><a href="#cb277-21" 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">\directlua</span>{</span>
+<span id="cb280-7"><a href="#cb280-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb280-8"><a href="#cb280-8" aria-hidden="true" tabindex="-1"></a> local input, convert_safe, convert_unsafe, paragraph</span>
+<span id="cb280-9"><a href="#cb280-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb280-10"><a href="#cb280-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="cb280-11"><a href="#cb280-11" aria-hidden="true" tabindex="-1"></a> convert_safe = markdown.new()</span>
+<span id="cb280-12"><a href="#cb280-12" aria-hidden="true" tabindex="-1"></a> convert_unsafe = markdown.new({hybrid = true})</span>
+<span id="cb280-13"><a href="#cb280-13" aria-hidden="true" tabindex="-1"></a> paragraph = [[<span class="fu">\par</span>]]</span>
+<span id="cb280-14"><a href="#cb280-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb280-15"><a href="#cb280-15" aria-hidden="true" tabindex="-1"></a> tex.sprint(</span>
+<span id="cb280-16"><a href="#cb280-16" aria-hidden="true" tabindex="-1"></a> convert_safe(input) .. paragraph ..</span>
+<span id="cb280-17"><a href="#cb280-17" aria-hidden="true" tabindex="-1"></a> convert_unsafe(input)</span>
+<span id="cb280-18"><a href="#cb280-18" aria-hidden="true" tabindex="-1"></a> )</span>
+<span id="cb280-19"><a href="#cb280-19" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb280-20"><a href="#cb280-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb280-21"><a href="#cb280-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="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">luatex</span> document.tex</span></code></pre></div>
+<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>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -4767,35 +4760,26 @@ contain the following text:</p>
<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="cb279"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb279-1"><a href="#cb279-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb279-2"><a href="#cb279-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb279-3"><a href="#cb279-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb279-4"><a href="#cb279-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb279-5"><a href="#cb279-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb279-6"><a href="#cb279-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb279-7"><a href="#cb279-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb279-8"><a href="#cb279-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb279-9"><a href="#cb279-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb279-10"><a href="#cb279-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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="fu">\input</span> markdown</span>
+<span id="cb282-2"><a href="#cb282-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb282-3"><a href="#cb282-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb282-4"><a href="#cb282-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb282-5"><a href="#cb282-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb282-6"><a href="#cb282-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb282-7"><a href="#cb282-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb282-8"><a href="#cb282-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb282-9"><a href="#cb282-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb282-10"><a href="#cb282-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="cb280"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb280-1"><a href="#cb280-1" aria-hidden="true" tabindex="-1"></a>$\sqrt{-1}$ *equals* $i$.</span></code></pre></div>
+<div class="sourceCode" id="cb283"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb283-1"><a href="#cb283-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="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">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb281-2"><a href="#cb281-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="cb281-3"><a href="#cb281-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>
+<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">markdown2tex</span> <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb284-2"><a href="#cb284-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> hybrid=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb284-3"><a href="#cb284-3" 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>
@@ -4807,23 +4791,23 @@ 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="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="fu">\input</span> markdown</span>
-<span id="cb282-2"><a href="#cb282-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb282-3"><a href="#cb282-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb282-4"><a href="#cb282-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb282-5"><a href="#cb282-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="cb282-6"><a href="#cb282-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb282-7"><a href="#cb282-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb282-8"><a href="#cb282-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
-<span id="cb282-9"><a href="#cb282-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb282-10"><a href="#cb282-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="cb282-11"><a href="#cb282-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb282-12"><a href="#cb282-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb282-13"><a href="#cb282-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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="fu">\input</span> markdown</span>
+<span id="cb285-2"><a href="#cb285-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb285-3"><a href="#cb285-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb285-4"><a href="#cb285-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb285-5"><a href="#cb285-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="cb285-6"><a href="#cb285-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb285-7"><a href="#cb285-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb285-8"><a href="#cb285-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
+<span id="cb285-9"><a href="#cb285-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></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="fu">\markdownEnd</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="fu">\bye</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">luatex</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">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>
@@ -4835,23 +4819,23 @@ 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb284-2"><a href="#cb284-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb284-3"><a href="#cb284-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb284-4"><a href="#cb284-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb284-5"><a href="#cb284-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb284-6"><a href="#cb284-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="cb284-7"><a href="#cb284-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb284-8"><a href="#cb284-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb284-9"><a href="#cb284-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</span>
-<span id="cb284-10"><a href="#cb284-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="cb284-11"><a href="#cb284-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb284-12"><a href="#cb284-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb284-13"><a href="#cb284-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="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>{<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>
+<span id="cb287-5"><a href="#cb287-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb287-6"><a href="#cb287-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="cb287-7"><a href="#cb287-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</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><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</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="kw">\end</span>{<span class="ex">markdown</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="kw">\end</span>{<span class="ex">document</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">lualatex</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">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>
@@ -4863,23 +4847,23 @@ 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="cb286"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb286-1"><a href="#cb286-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb286-2"><a href="#cb286-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb286-3"><a href="#cb286-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-4"><a href="#cb286-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb286-5"><a href="#cb286-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="cb286-6"><a href="#cb286-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb286-7"><a href="#cb286-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-8"><a href="#cb286-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
-<span id="cb286-9"><a href="#cb286-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb286-10"><a href="#cb286-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="cb286-11"><a href="#cb286-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb286-12"><a href="#cb286-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb286-13"><a href="#cb286-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb289"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb289-1"><a href="#cb289-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb289-2"><a href="#cb289-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb289-3"><a href="#cb289-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb289-4"><a href="#cb289-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb289-5"><a href="#cb289-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="cb289-6"><a href="#cb289-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb289-7"><a href="#cb289-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb289-8"><a href="#cb289-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
+<span id="cb289-9"><a href="#cb289-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb289-10"><a href="#cb289-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="cb289-11"><a href="#cb289-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb289-12"><a href="#cb289-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb289-13"><a href="#cb289-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="cb287"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb287-1"><a href="#cb287-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb290"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb290-1"><a href="#cb290-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>
@@ -4887,8 +4871,8 @@ contain the following text:</p>
<p><math><msqrt><mo>−</mo><mn>1</mn></msqrt></math> <em>equals</em>
<math><mi>i</mi></math>.</p>
</blockquote>
-<h4 data-number="2.2.1.37" id="option-inlinecodeattributes"><span
-class="header-section-number">2.2.1.37</span> Option
+<h4 data-number="2.2.1.39" id="option-inlinecodeattributes"><span
+class="header-section-number">2.2.1.39</span> Option
<code>inlineCodeAttributes</code></h4>
<dl>
<dt><code>inlineCodeAttributes</code> (default value:
@@ -4900,8 +4884,8 @@ class="header-section-number">2.2.1.37</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="cb288"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb288-1"><a href="#cb288-1" aria-hidden="true" tabindex="-1"></a><span class="in">`&lt;$&gt;`</span>{.haskell}</span></code></pre></div>
+<div class="sourceCode" id="cb291"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb291-1"><a href="#cb291-1" aria-hidden="true" tabindex="-1"></a><span class="in">`&lt;$&gt;`</span>{.haskell}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4918,52 +4902,52 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb288-1"><a hr
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="cb289"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb289-1"><a href="#cb289-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb289-2"><a href="#cb289-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb289-3"><a href="#cb289-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb289-4"><a href="#cb289-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb289-5"><a href="#cb289-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb289-6"><a href="#cb289-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb289-7"><a href="#cb289-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {</span>
-<span id="cb289-8"><a href="#cb289-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
-<span id="cb289-9"><a href="#cb289-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span>
-<span id="cb289-10"><a href="#cb289-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb289-11"><a href="#cb289-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb289-12"><a href="#cb289-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
-<span id="cb289-13"><a href="#cb289-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span>
-<span id="cb289-14"><a href="#cb289-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span>
-<span id="cb289-15"><a href="#cb289-15" aria-hidden="true" tabindex="-1"></a> { color }</span>
-<span id="cb289-16"><a href="#cb289-16" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb289-17"><a href="#cb289-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span>
-<span id="cb289-18"><a href="#cb289-18" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb289-19"><a href="#cb289-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb289-20"><a href="#cb289-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb289-21"><a href="#cb289-21" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb289-22"><a href="#cb289-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb289-23"><a href="#cb289-23" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {</span>
-<span id="cb289-24"><a href="#cb289-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span>
-<span id="cb289-25"><a href="#cb289-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb289-26"><a href="#cb289-26" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb289-27"><a href="#cb289-27" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb289-28"><a href="#cb289-28" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb289-29"><a href="#cb289-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb289-30"><a href="#cb289-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb289-31"><a href="#cb289-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb289-32"><a href="#cb289-32" aria-hidden="true" tabindex="-1"></a>Here is some `colored text`{color=red}.</span>
-<span id="cb289-33"><a href="#cb289-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb289-34"><a href="#cb289-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="cb292"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb292-1"><a href="#cb292-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb292-2"><a href="#cb292-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb292-3"><a href="#cb292-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb292-4"><a href="#cb292-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb292-5"><a href="#cb292-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb292-6"><a href="#cb292-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb292-7"><a href="#cb292-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {</span>
+<span id="cb292-8"><a href="#cb292-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb292-9"><a href="#cb292-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_begin:</span>
+<span id="cb292-10"><a href="#cb292-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb292-11"><a href="#cb292-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb292-12"><a href="#cb292-12" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
+<span id="cb292-13"><a href="#cb292-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnT</span>
+<span id="cb292-14"><a href="#cb292-14" aria-hidden="true" tabindex="-1"></a> { ##1 }</span>
+<span id="cb292-15"><a href="#cb292-15" aria-hidden="true" tabindex="-1"></a> { color }</span>
+<span id="cb292-16"><a href="#cb292-16" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb292-17"><a href="#cb292-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_select:n { ##2 }</span>
+<span id="cb292-18"><a href="#cb292-18" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb292-19"><a href="#cb292-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb292-20"><a href="#cb292-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb292-21"><a href="#cb292-21" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb292-22"><a href="#cb292-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb292-23"><a href="#cb292-23" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {</span>
+<span id="cb292-24"><a href="#cb292-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\color</span>_group_end:</span>
+<span id="cb292-25"><a href="#cb292-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb292-26"><a href="#cb292-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb292-27"><a href="#cb292-27" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb292-28"><a href="#cb292-28" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb292-29"><a href="#cb292-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb292-30"><a href="#cb292-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb292-31"><a href="#cb292-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb292-32"><a href="#cb292-32" aria-hidden="true" tabindex="-1"></a>Here is some `colored text`{color=red}.</span>
+<span id="cb292-33"><a href="#cb292-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb292-34"><a href="#cb292-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="cb290"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb290-1"><a href="#cb290-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb293"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb293-1"><a href="#cb293-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.38" id="option-inlinenotes"><span
-class="header-section-number">2.2.1.38</span> Option
+<h4 data-number="2.2.1.40" id="option-inlinenotes"><span
+class="header-section-number">2.2.1.40</span> Option
<code>inlineNotes</code></h4>
<dl>
<dt><code>inlineNotes</code> (default value: <code>false</code>)</dt>
@@ -4974,10 +4958,10 @@ class="header-section-number">2.2.1.38</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="cb291"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb291-1"><a href="#cb291-1" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
-<span id="cb291-2"><a href="#cb291-2" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
-<span id="cb291-3"><a href="#cb291-3" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span></code></pre></div>
+<div class="sourceCode" id="cb294"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb294-1"><a href="#cb294-1" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
+<span id="cb294-2"><a href="#cb294-2" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
+<span id="cb294-3"><a href="#cb294-3" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -4994,19 +4978,19 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb291-1"><a hr
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="cb292"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb292-1"><a href="#cb292-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb292-2"><a href="#cb292-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineNotes]{<span class="ex">markdown</span>}</span>
-<span id="cb292-3"><a href="#cb292-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb292-4"><a href="#cb292-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb292-5"><a href="#cb292-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
-<span id="cb292-6"><a href="#cb292-6" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
-<span id="cb292-7"><a href="#cb292-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span>
-<span id="cb292-8"><a href="#cb292-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb292-9"><a href="#cb292-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb295-2"><a href="#cb295-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineNotes]{<span class="ex">markdown</span>}</span>
+<span id="cb295-3"><a href="#cb295-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb295-4"><a href="#cb295-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</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="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb295-9"><a href="#cb295-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="cb293"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb293-1"><a href="#cb293-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -5017,27 +5001,27 @@ id="fnref1" role="doc-noteref"><sup>1</sup></a></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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb294-2"><a href="#cb294-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[inlineNotes = yes]</span>
-<span id="cb294-3"><a href="#cb294-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb294-4"><a href="#cb294-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb294-5"><a href="#cb294-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
-<span id="cb294-6"><a href="#cb294-6" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
-<span id="cb294-7"><a href="#cb294-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span>
-<span id="cb294-8"><a href="#cb294-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb294-9"><a href="#cb294-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb297"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb297-1"><a href="#cb297-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb297-2"><a href="#cb297-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[inlineNotes = yes]</span>
+<span id="cb297-3"><a href="#cb297-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb297-4"><a href="#cb297-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb297-5"><a href="#cb297-5" aria-hidden="true" tabindex="-1"></a>Here is an inline note.^[Inlines notes are easier to</span>
+<span id="cb297-6"><a href="#cb297-6" aria-hidden="true" tabindex="-1"></a>write, since you don&#39;t have to pick an identifier and</span>
+<span id="cb297-7"><a href="#cb297-7" aria-hidden="true" tabindex="-1"></a>move down to type the note.]</span>
+<span id="cb297-8"><a href="#cb297-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb297-9"><a href="#cb297-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb298"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb298-1"><a href="#cb298-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.39" id="option-jekylldata"><span
-class="header-section-number">2.2.1.39</span> Option
+<h4 data-number="2.2.1.41" id="option-jekylldata"><span
+class="header-section-number">2.2.1.41</span> Option
<code>jekyllData</code></h4>
<dl>
<dt><code>jekyllData</code> (default value: <code>false</code>)</dt>
@@ -5049,18 +5033,18 @@ class="header-section-number">2.2.1.39</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="cb296"><pre
-class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb296-1"><a href="#cb296-1" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span>
-<span id="cb296-2"><a href="#cb296-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="cb296-3"><a href="#cb296-3" aria-hidden="true" tabindex="-1"></a><span class="fu">author</span><span class="kw">:</span></span>
-<span id="cb296-4"><a href="#cb296-4" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author One</span></span>
-<span id="cb296-5"><a href="#cb296-5" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author Two</span></span>
-<span id="cb296-6"><a href="#cb296-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="cb296-7"><a href="#cb296-7" aria-hidden="true" tabindex="-1"></a><span class="fu">abstract</span><span class="kw">: </span><span class="ch">|</span></span>
-<span id="cb296-8"><a href="#cb296-8" aria-hidden="true" tabindex="-1"></a> This is the abstract.</span>
-<span id="cb296-9"><a href="#cb296-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb296-10"><a href="#cb296-10" aria-hidden="true" tabindex="-1"></a> It consists of two paragraphs.</span>
-<span id="cb296-11"><a href="#cb296-11" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span></code></pre></div>
+<div class="sourceCode" id="cb299"><pre
+class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb299-1"><a href="#cb299-1" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span>
+<span id="cb299-2"><a href="#cb299-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="cb299-3"><a href="#cb299-3" aria-hidden="true" tabindex="-1"></a><span class="fu">author</span><span class="kw">:</span></span>
+<span id="cb299-4"><a href="#cb299-4" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author One</span></span>
+<span id="cb299-5"><a href="#cb299-5" aria-hidden="true" tabindex="-1"></a><span class="kw">-</span><span class="at"> Author Two</span></span>
+<span id="cb299-6"><a href="#cb299-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="cb299-7"><a href="#cb299-7" aria-hidden="true" tabindex="-1"></a><span class="fu">abstract</span><span class="kw">: </span><span class="ch">|</span></span>
+<span id="cb299-8"><a href="#cb299-8" aria-hidden="true" tabindex="-1"></a> This is the abstract.</span>
+<span id="cb299-9"><a href="#cb299-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb299-10"><a href="#cb299-10" aria-hidden="true" tabindex="-1"></a> It consists of two paragraphs.</span>
+<span id="cb299-11"><a href="#cb299-11" aria-hidden="true" tabindex="-1"></a><span class="pp">---</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5078,29 +5062,29 @@ for entering metadata in <abbr>yaml</abbr>.</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="cb297"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb297-1"><a href="#cb297-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb297-2"><a href="#cb297-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
-<span id="cb297-3"><a href="#cb297-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb297-4"><a href="#cb297-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb297-5"><a href="#cb297-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb297-6"><a href="#cb297-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb297-7"><a href="#cb297-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb297-8"><a href="#cb297-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</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><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb297-11"><a href="#cb297-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb297-12"><a href="#cb297-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb297-13"><a href="#cb297-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb297-14"><a href="#cb297-14" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb297-15"><a href="#cb297-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb297-16"><a href="#cb297-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb297-17"><a href="#cb297-17" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb297-18"><a href="#cb297-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb297-19"><a href="#cb297-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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="fu">\input</span> markdown</span>
+<span id="cb300-2"><a href="#cb300-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
+<span id="cb300-3"><a href="#cb300-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb300-4"><a href="#cb300-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb300-5"><a href="#cb300-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
+<span id="cb300-6"><a href="#cb300-6" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb300-7"><a href="#cb300-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
+<span id="cb300-8"><a href="#cb300-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
+<span id="cb300-9"><a href="#cb300-9" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb300-10"><a href="#cb300-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb300-11"><a href="#cb300-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb300-12"><a href="#cb300-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb300-13"><a href="#cb300-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb300-14"><a href="#cb300-14" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb300-15"><a href="#cb300-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb300-16"><a href="#cb300-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb300-17"><a href="#cb300-17" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb300-18"><a href="#cb300-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb300-19"><a href="#cb300-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="cb298"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb298-1"><a href="#cb298-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -5110,31 +5094,31 @@ 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="cb299"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb299-1"><a href="#cb299-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb299-2"><a href="#cb299-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb299-3"><a href="#cb299-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb299-4"><a href="#cb299-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
-<span id="cb299-5"><a href="#cb299-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
-<span id="cb299-6"><a href="#cb299-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
-<span id="cb299-7"><a href="#cb299-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb299-8"><a href="#cb299-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb299-9"><a href="#cb299-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
-<span id="cb299-10"><a href="#cb299-10" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb299-11"><a href="#cb299-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb299-12"><a href="#cb299-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb299-13"><a href="#cb299-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb299-14"><a href="#cb299-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb299-15"><a href="#cb299-15" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb299-16"><a href="#cb299-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb299-17"><a href="#cb299-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb299-18"><a href="#cb299-18" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb299-19"><a href="#cb299-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb299-20"><a href="#cb299-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb299-21"><a href="#cb299-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb302-2"><a href="#cb302-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb302-3"><a href="#cb302-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb302-4"><a href="#cb302-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
+<span id="cb302-5"><a href="#cb302-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
+<span id="cb302-6"><a href="#cb302-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
+<span id="cb302-7"><a href="#cb302-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb302-8"><a href="#cb302-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb302-9"><a href="#cb302-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
+<span id="cb302-10"><a href="#cb302-10" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb302-11"><a href="#cb302-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb302-12"><a href="#cb302-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb302-13"><a href="#cb302-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb302-14"><a href="#cb302-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb302-15"><a href="#cb302-15" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb302-16"><a href="#cb302-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb302-17"><a href="#cb302-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb302-18"><a href="#cb302-18" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb302-19"><a href="#cb302-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb302-20"><a href="#cb302-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb302-21"><a href="#cb302-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="cb300"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb300-1"><a href="#cb300-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -5144,39 +5128,39 @@ 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="cb301"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb301-1"><a href="#cb301-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb301-2"><a href="#cb301-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
-<span id="cb301-3"><a href="#cb301-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb301-4"><a href="#cb301-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb301-5"><a href="#cb301-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb301-6"><a href="#cb301-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb301-7"><a href="#cb301-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb301-8"><a href="#cb301-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
-<span id="cb301-9"><a href="#cb301-9" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb301-10"><a href="#cb301-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb301-11"><a href="#cb301-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb301-12"><a href="#cb301-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb301-13"><a href="#cb301-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb301-14"><a href="#cb301-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb301-15"><a href="#cb301-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb301-16"><a href="#cb301-16" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb301-17"><a href="#cb301-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb301-18"><a href="#cb301-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb301-19"><a href="#cb301-19" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb301-20"><a href="#cb301-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb301-21"><a href="#cb301-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb301-22"><a href="#cb301-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb304"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb304-1"><a href="#cb304-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb304-2"><a href="#cb304-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
+<span id="cb304-3"><a href="#cb304-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb304-4"><a href="#cb304-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb304-5"><a href="#cb304-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
+<span id="cb304-6"><a href="#cb304-6" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb304-7"><a href="#cb304-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
+<span id="cb304-8"><a href="#cb304-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
+<span id="cb304-9"><a href="#cb304-9" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb304-10"><a href="#cb304-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb304-11"><a href="#cb304-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb304-12"><a href="#cb304-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb304-13"><a href="#cb304-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb304-14"><a href="#cb304-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb304-15"><a href="#cb304-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb304-16"><a href="#cb304-16" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb304-17"><a href="#cb304-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb304-18"><a href="#cb304-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb304-19"><a href="#cb304-19" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb304-20"><a href="#cb304-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb304-21"><a href="#cb304-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb304-22"><a href="#cb304-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="cb302"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb302-1"><a href="#cb302-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb305"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb305-1"><a href="#cb305-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.40" id="option-linkattributes"><span
-class="header-section-number">2.2.1.40</span> Option
+<h4 data-number="2.2.1.42" id="option-linkattributes"><span
+class="header-section-number">2.2.1.42</span> Option
<code>linkAttributes</code></h4>
<dl>
<dt><code>linkAttributes</code> (default value: <code>false</code>)</dt>
@@ -5187,11 +5171,11 @@ class="header-section-number">2.2.1.40</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="cb303"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb303-1"><a href="#cb303-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="cb303-2"><a href="#cb303-2" aria-hidden="true" tabindex="-1"></a>and a reference <span class="al">![image][ref]</span> with attributes.</span>
-<span id="cb303-3"><a href="#cb303-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb303-4"><a href="#cb303-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="cb306"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb306-1"><a href="#cb306-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="cb306-2"><a href="#cb306-2" aria-hidden="true" tabindex="-1"></a>and a reference <span class="al">![image][ref]</span> with attributes.</span>
+<span id="cb306-3"><a href="#cb306-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb306-4"><a href="#cb306-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>
@@ -5208,47 +5192,47 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb303-1"><a hr
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="cb304"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb304-1"><a href="#cb304-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb304-2"><a href="#cb304-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb304-3"><a href="#cb304-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3, graphicx</span>}</span>
-<span id="cb304-4"><a href="#cb304-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb304-5"><a href="#cb304-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb304-6"><a href="#cb304-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb304-7"><a href="#cb304-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {</span>
-<span id="cb304-8"><a href="#cb304-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
-<span id="cb304-9"><a href="#cb304-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb304-10"><a href="#cb304-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb304-11"><a href="#cb304-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
-<span id="cb304-12"><a href="#cb304-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setkeys</span></span>
-<span id="cb304-13"><a href="#cb304-13" aria-hidden="true" tabindex="-1"></a> { Gin }</span>
-<span id="cb304-14"><a href="#cb304-14" aria-hidden="true" tabindex="-1"></a> { { ##1 } = { ##2 } }</span>
-<span id="cb304-15"><a href="#cb304-15" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb304-16"><a href="#cb304-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb304-17"><a href="#cb304-17" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb304-18"><a href="#cb304-18" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb304-19"><a href="#cb304-19" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {</span>
-<span id="cb304-20"><a href="#cb304-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb304-21"><a href="#cb304-21" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb304-22"><a href="#cb304-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb304-23"><a href="#cb304-23" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb304-24"><a href="#cb304-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb304-25"><a href="#cb304-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb304-26"><a href="#cb304-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb304-27"><a href="#cb304-27" aria-hidden="true" tabindex="-1"></a>Here is an example image:</span>
-<span id="cb304-28"><a href="#cb304-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb304-29"><a href="#cb304-29" aria-hidden="true" tabindex="-1"></a> ![example image](example-image){width=5cm height=4cm}</span>
-<span id="cb304-30"><a href="#cb304-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb304-31"><a href="#cb304-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="cb307"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb307-1"><a href="#cb307-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb307-2"><a href="#cb307-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb307-3"><a href="#cb307-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3, graphicx</span>}</span>
+<span id="cb307-4"><a href="#cb307-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb307-5"><a href="#cb307-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb307-6"><a href="#cb307-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb307-7"><a href="#cb307-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {</span>
+<span id="cb307-8"><a href="#cb307-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb307-9"><a href="#cb307-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb307-10"><a href="#cb307-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb307-11"><a href="#cb307-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {</span>
+<span id="cb307-12"><a href="#cb307-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setkeys</span></span>
+<span id="cb307-13"><a href="#cb307-13" aria-hidden="true" tabindex="-1"></a> { Gin }</span>
+<span id="cb307-14"><a href="#cb307-14" aria-hidden="true" tabindex="-1"></a> { { ##1 } = { ##2 } }</span>
+<span id="cb307-15"><a href="#cb307-15" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb307-16"><a href="#cb307-16" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb307-17"><a href="#cb307-17" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb307-18"><a href="#cb307-18" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb307-19"><a href="#cb307-19" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {</span>
+<span id="cb307-20"><a href="#cb307-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb307-21"><a href="#cb307-21" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb307-22"><a href="#cb307-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb307-23"><a href="#cb307-23" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb307-24"><a href="#cb307-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb307-25"><a href="#cb307-25" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb307-26"><a href="#cb307-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb307-27"><a href="#cb307-27" aria-hidden="true" tabindex="-1"></a>Here is an example image:</span>
+<span id="cb307-28"><a href="#cb307-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb307-29"><a href="#cb307-29" aria-hidden="true" tabindex="-1"></a> ![example image](example-image){width=5cm height=4cm}</span>
+<span id="cb307-30"><a href="#cb307-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb307-31"><a href="#cb307-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="cb305"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb305-1"><a href="#cb305-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb308"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb308-1"><a href="#cb308-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.41" id="option-lineblocks"><span
-class="header-section-number">2.2.1.41</span> Option
+<h4 data-number="2.2.1.43" id="option-lineblocks"><span
+class="header-section-number">2.2.1.43</span> Option
<code>lineBlocks</code></h4>
<dl>
<dt><code>lineBlocks</code> (default value: <code>false</code>)</dt>
@@ -5259,12 +5243,12 @@ class="header-section-number">2.2.1.41</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="cb306"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb306-1"><a href="#cb306-1" aria-hidden="true" tabindex="-1"></a>| this is a line block that</span>
-<span id="cb306-2"><a href="#cb306-2" aria-hidden="true" tabindex="-1"></a>| spans multiple</span>
-<span id="cb306-3"><a href="#cb306-3" aria-hidden="true" tabindex="-1"></a>| even</span>
-<span id="cb306-4"><a href="#cb306-4" aria-hidden="true" tabindex="-1"></a> discontinuous</span>
-<span id="cb306-5"><a href="#cb306-5" aria-hidden="true" tabindex="-1"></a>| lines</span></code></pre></div>
+<div class="sourceCode" id="cb309"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb309-1"><a href="#cb309-1" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> this is a line block that</span>
+<span id="cb309-2"><a href="#cb309-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> spans multiple</span>
+<span id="cb309-3"><a href="#cb309-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> even</span>
+<span id="cb309-4"><a href="#cb309-4" aria-hidden="true" tabindex="-1"></a> discontinuous</span>
+<span id="cb309-5"><a href="#cb309-5" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> lines</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5281,19 +5265,19 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb306-1"><a hr
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="cb307"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb307-1"><a href="#cb307-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb307-2"><a href="#cb307-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span>
-<span id="cb307-3"><a href="#cb307-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb307-4"><a href="#cb307-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb307-5"><a href="#cb307-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb307-6"><a href="#cb307-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb307-7"><a href="#cb307-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb307-8"><a href="#cb307-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb307-9"><a href="#cb307-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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="fu">\input</span> markdown</span>
+<span id="cb310-2"><a href="#cb310-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span>
+<span id="cb310-3"><a href="#cb310-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb310-4"><a href="#cb310-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb310-5"><a href="#cb310-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb310-6"><a href="#cb310-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb310-7"><a href="#cb310-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb310-8"><a href="#cb310-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb310-9"><a href="#cb310-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="cb308"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb308-1"><a href="#cb308-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -5306,20 +5290,20 @@ Tread softly because you tread on my dreams.</div>
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="cb309"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb309-1"><a href="#cb309-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb309-2"><a href="#cb309-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb309-3"><a href="#cb309-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb309-4"><a href="#cb309-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb309-5"><a href="#cb309-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb309-6"><a href="#cb309-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb309-7"><a href="#cb309-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb309-8"><a href="#cb309-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb309-9"><a href="#cb309-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb309-10"><a href="#cb309-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb312-2"><a href="#cb312-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb312-3"><a href="#cb312-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb312-4"><a href="#cb312-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</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="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb312-10"><a href="#cb312-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="cb310"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb310-1"><a href="#cb310-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -5332,20 +5316,20 @@ Tread softly because you tread on my dreams.</div>
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="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">\setupmarkdown</span>[lineBlocks = yes]</span>
-<span id="cb311-3"><a href="#cb311-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb311-4"><a href="#cb311-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb311-5"><a href="#cb311-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb311-6"><a href="#cb311-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb311-7"><a href="#cb311-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb311-8"><a href="#cb311-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb311-9"><a href="#cb311-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb311-10"><a href="#cb311-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<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">\usemodule</span>[t][markdown]</span>
+<span id="cb314-2"><a href="#cb314-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span>
+<span id="cb314-3"><a href="#cb314-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb314-4"><a href="#cb314-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb314-5"><a href="#cb314-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb314-6"><a href="#cb314-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb314-7"><a href="#cb314-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb314-8"><a href="#cb314-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb314-9"><a href="#cb314-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb314-10"><a href="#cb314-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="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> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -5354,8 +5338,8 @@ 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.42" id="option-mark"><span
-class="header-section-number">2.2.1.42</span> Option
+<h4 data-number="2.2.1.44" id="option-mark"><span
+class="header-section-number">2.2.1.44</span> Option
<code>mark</code></h4>
<dl>
<dt><code>mark</code> (default value: <code>false</code>)</dt>
@@ -5366,8 +5350,8 @@ class="header-section-number">2.2.1.42</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-mark">mark syntax
extension</a>:</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>This ==is highlighted text.==</span></code></pre></div>
+<div class="sourceCode" id="cb316"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb316-1"><a href="#cb316-1" aria-hidden="true" tabindex="-1"></a>This <span class="al">==is highlighted text.==</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5384,26 +5368,26 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb313-1"><a hr
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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb314-2"><a href="#cb314-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span>
-<span id="cb314-3"><a href="#cb314-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb314-4"><a href="#cb314-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb314-5"><a href="#cb314-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb314-6"><a href="#cb314-6" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span>
-<span id="cb314-7"><a href="#cb314-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb314-8"><a href="#cb314-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb314-9"><a href="#cb314-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="cb317"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb317-1"><a href="#cb317-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb317-2"><a href="#cb317-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span>
+<span id="cb317-3"><a href="#cb317-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb317-4"><a href="#cb317-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb317-5"><a href="#cb317-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-6"><a href="#cb317-6" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span>
+<span id="cb317-7"><a href="#cb317-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb317-8"><a href="#cb317-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb317-9"><a href="#cb317-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="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">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb318"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb318-1"><a href="#cb318-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.43" id="option-notes"><span
-class="header-section-number">2.2.1.43</span> Option
+<h4 data-number="2.2.1.45" id="option-notes"><span
+class="header-section-number">2.2.1.45</span> Option
<code>notes</code></h4>
<dl>
<dt><code>notes</code> (default value: <code>false</code>)</dt>
@@ -5414,24 +5398,24 @@ class="header-section-number">2.2.1.43</span> Option
<p>Enable the Pandoc <a
href="https://pandoc.org/MANUAL.html#extension-footnotes">note syntax
extension</a>:</p>
-<div class="sourceCode" id="cb316"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb316-1"><a href="#cb316-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="cb316-2"><a href="#cb316-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb316-3"><a href="#cb316-3" aria-hidden="true" tabindex="-1"></a><span class="ot">[^1]: </span>Here is the note.</span>
-<span id="cb316-4"><a href="#cb316-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb316-5"><a href="#cb316-5" aria-hidden="true" tabindex="-1"></a><span class="ot">[^longnote]: </span>Here&#39;s one with multiple blocks.</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><span class="in"> Subsequent paragraphs are indented to show that they</span></span>
-<span id="cb316-8"><a href="#cb316-8" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</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><span class="in"> { some.code }</span></span>
-<span id="cb316-11"><a href="#cb316-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb316-12"><a href="#cb316-12" aria-hidden="true" tabindex="-1"></a><span class="in"> The whole paragraph can be indented, or just the</span></span>
-<span id="cb316-13"><a href="#cb316-13" aria-hidden="true" tabindex="-1"></a><span class="in"> first line. In this way, multi-paragraph notes</span></span>
-<span id="cb316-14"><a href="#cb316-14" aria-hidden="true" tabindex="-1"></a><span class="in"> work like multi-paragraph list items.</span></span>
-<span id="cb316-15"><a href="#cb316-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb316-16"><a href="#cb316-16" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
-<span id="cb316-17"><a href="#cb316-17" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span></code></pre></div>
+<div class="sourceCode" id="cb319"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb319-1"><a href="#cb319-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="cb319-2"><a href="#cb319-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb319-3"><a href="#cb319-3" aria-hidden="true" tabindex="-1"></a><span class="ot">[^1]: </span>Here is the note.</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="ot">[^longnote]: </span>Here&#39;s one with multiple blocks.</span>
+<span id="cb319-6"><a href="#cb319-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb319-7"><a href="#cb319-7" aria-hidden="true" tabindex="-1"></a><span class="in"> Subsequent paragraphs are indented to show that they</span></span>
+<span id="cb319-8"><a href="#cb319-8" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
+<span id="cb319-9"><a href="#cb319-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb319-10"><a href="#cb319-10" aria-hidden="true" tabindex="-1"></a><span class="in"> { some.code }</span></span>
+<span id="cb319-11"><a href="#cb319-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb319-12"><a href="#cb319-12" aria-hidden="true" tabindex="-1"></a><span class="in"> The whole paragraph can be indented, or just the</span></span>
+<span id="cb319-13"><a href="#cb319-13" aria-hidden="true" tabindex="-1"></a><span class="in"> first line. In this way, multi-paragraph notes</span></span>
+<span id="cb319-14"><a href="#cb319-14" aria-hidden="true" tabindex="-1"></a><span class="in"> work like multi-paragraph list items.</span></span>
+<span id="cb319-15"><a href="#cb319-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb319-16"><a href="#cb319-16" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
+<span id="cb319-17"><a href="#cb319-17" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5448,33 +5432,33 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb316-1"><a hr
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="cb317"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb317-1"><a href="#cb317-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb317-2"><a href="#cb317-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span>
-<span id="cb317-3"><a href="#cb317-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb317-4"><a href="#cb317-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb317-5"><a href="#cb317-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</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>[^1]: Here is the note.</span>
-<span id="cb317-8"><a href="#cb317-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb317-9"><a href="#cb317-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here&#39;s one with multiple blocks.</span>
-<span id="cb317-10"><a href="#cb317-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb317-11"><a href="#cb317-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span>
-<span id="cb317-12"><a href="#cb317-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
-<span id="cb317-13"><a href="#cb317-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb317-14"><a href="#cb317-14" aria-hidden="true" tabindex="-1"></a> { some.code }</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> The whole paragraph can be indented, or just the</span>
-<span id="cb317-17"><a href="#cb317-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span>
-<span id="cb317-18"><a href="#cb317-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span>
-<span id="cb317-19"><a href="#cb317-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb317-20"><a href="#cb317-20" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
-<span id="cb317-21"><a href="#cb317-21" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span>
-<span id="cb317-22"><a href="#cb317-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb317-23"><a href="#cb317-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="cb320"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb320-1"><a href="#cb320-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb320-2"><a href="#cb320-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span>
+<span id="cb320-3"><a href="#cb320-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb320-4"><a href="#cb320-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb320-5"><a href="#cb320-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span>
+<span id="cb320-6"><a href="#cb320-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb320-7"><a href="#cb320-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span>
+<span id="cb320-8"><a href="#cb320-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb320-9"><a href="#cb320-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here&#39;s one with multiple blocks.</span>
+<span id="cb320-10"><a href="#cb320-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb320-11"><a href="#cb320-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span>
+<span id="cb320-12"><a href="#cb320-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
+<span id="cb320-13"><a href="#cb320-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb320-14"><a href="#cb320-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span>
+<span id="cb320-15"><a href="#cb320-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb320-16"><a href="#cb320-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span>
+<span id="cb320-17"><a href="#cb320-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span>
+<span id="cb320-18"><a href="#cb320-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span>
+<span id="cb320-19"><a href="#cb320-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb320-20"><a href="#cb320-20" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
+<span id="cb320-21"><a href="#cb320-21" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span>
+<span id="cb320-22"><a href="#cb320-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb320-23"><a href="#cb320-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="cb318"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb318-1"><a href="#cb318-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb321"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb321-1"><a href="#cb321-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>
@@ -5493,33 +5477,33 @@ indented.</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="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="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>
+<div class="sourceCode" id="cb324"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb324-1"><a href="#cb324-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb324-2"><a href="#cb324-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span>
+<span id="cb324-3"><a href="#cb324-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb324-4"><a href="#cb324-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb324-5"><a href="#cb324-5" aria-hidden="true" tabindex="-1"></a>Here is a note reference,[^1] and another.[^longnote]</span>
+<span id="cb324-6"><a href="#cb324-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb324-7"><a href="#cb324-7" aria-hidden="true" tabindex="-1"></a>[^1]: Here is the note.</span>
+<span id="cb324-8"><a href="#cb324-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb324-9"><a href="#cb324-9" aria-hidden="true" tabindex="-1"></a>[^longnote]: Here&#39;s one with multiple blocks.</span>
+<span id="cb324-10"><a href="#cb324-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb324-11"><a href="#cb324-11" aria-hidden="true" tabindex="-1"></a> Subsequent paragraphs are indented to show that they</span>
+<span id="cb324-12"><a href="#cb324-12" aria-hidden="true" tabindex="-1"></a>belong to the previous note.</span>
+<span id="cb324-13"><a href="#cb324-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb324-14"><a href="#cb324-14" aria-hidden="true" tabindex="-1"></a> { some.code }</span>
+<span id="cb324-15"><a href="#cb324-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb324-16"><a href="#cb324-16" aria-hidden="true" tabindex="-1"></a> The whole paragraph can be indented, or just the</span>
+<span id="cb324-17"><a href="#cb324-17" aria-hidden="true" tabindex="-1"></a> first line. In this way, multi-paragraph notes</span>
+<span id="cb324-18"><a href="#cb324-18" aria-hidden="true" tabindex="-1"></a> work like multi-paragraph list items.</span>
+<span id="cb324-19"><a href="#cb324-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb324-20"><a href="#cb324-20" aria-hidden="true" tabindex="-1"></a>This paragraph won&#39;t be part of the note, because it</span>
+<span id="cb324-21"><a href="#cb324-21" aria-hidden="true" tabindex="-1"></a>isn&#39;t indented.</span>
+<span id="cb324-22"><a href="#cb324-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb324-23"><a href="#cb324-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="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">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>
@@ -5534,8 +5518,8 @@ work like multi-paragraph list items.</code></pre>
<p>This paragraph won’t be part of the note, because it isn’t
indented.</p>
</blockquote>
-<h4 data-number="2.2.1.44" id="pipe-tables"><span
-class="header-section-number">2.2.1.44</span> Option
+<h4 data-number="2.2.1.46" id="pipe-tables"><span
+class="header-section-number">2.2.1.46</span> Option
<code>pipeTables</code></h4>
<dl>
<dt><code>pipeTables</code> (default value: <code>false</code>)</dt>
@@ -5544,12 +5528,12 @@ class="header-section-number">2.2.1.44</span> Option
<dt>true</dt>
<dd>
<p>Enable the <abbr>PHP</abbr> Markdown pipe table syntax extension:</p>
-<div class="sourceCode" id="cb325"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb325-1"><a href="#cb325-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb325-2"><a href="#cb325-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb325-3"><a href="#cb325-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb325-4"><a href="#cb325-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb325-5"><a href="#cb325-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span></code></pre></div>
+<div class="sourceCode" id="cb328"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb328-1"><a href="#cb328-1" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Right <span class="pp">|</span> Left <span class="pp">|</span> Default <span class="pp">|</span> Center <span class="pp">|</span></span>
+<span id="cb328-2"><a href="#cb328-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|------:|:-----|---------|:------:|</span></span>
+<span id="cb328-3"><a href="#cb328-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span></span>
+<span id="cb328-4"><a href="#cb328-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span></span>
+<span id="cb328-5"><a href="#cb328-5" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5567,21 +5551,21 @@ extension.</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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb326-2"><a href="#cb326-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables]{<span class="ex">markdown</span>}</span>
-<span id="cb326-3"><a href="#cb326-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb326-4"><a href="#cb326-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb326-5"><a href="#cb326-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb326-6"><a href="#cb326-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb326-7"><a href="#cb326-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb326-8"><a href="#cb326-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb326-9"><a href="#cb326-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb326-10"><a href="#cb326-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb326-11"><a href="#cb326-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="cb329"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb329-1"><a href="#cb329-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb329-2"><a href="#cb329-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables]{<span class="ex">markdown</span>}</span>
+<span id="cb329-3"><a href="#cb329-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb329-4"><a href="#cb329-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb329-5"><a href="#cb329-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb329-6"><a href="#cb329-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb329-7"><a href="#cb329-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb329-8"><a href="#cb329-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb329-9"><a href="#cb329-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb329-10"><a href="#cb329-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb329-11"><a href="#cb329-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="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">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb330"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb330-1"><a href="#cb330-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>
@@ -5620,21 +5604,21 @@ 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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb328-2"><a href="#cb328-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[pipeTables = yes]</span>
-<span id="cb328-3"><a href="#cb328-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb328-4"><a href="#cb328-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb328-5"><a href="#cb328-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</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>| 12 | 12 | 12 | 12 |</span>
-<span id="cb328-8"><a href="#cb328-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb328-9"><a href="#cb328-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb328-10"><a href="#cb328-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb328-11"><a href="#cb328-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb331-2"><a href="#cb331-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[pipeTables = yes]</span>
+<span id="cb331-3"><a href="#cb331-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb331-4"><a href="#cb331-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb331-5"><a href="#cb331-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb331-6"><a href="#cb331-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb331-7"><a href="#cb331-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb331-8"><a href="#cb331-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb331-9"><a href="#cb331-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb331-10"><a href="#cb331-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb331-11"><a href="#cb331-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="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">context</span> <span class="at">--luatex</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">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>
@@ -5669,8 +5653,8 @@ contain the following text:</p>
</tbody>
</table>
</blockquote>
-<h4 data-number="2.2.1.45" id="option-preservetabs"><span
-class="header-section-number">2.2.1.45</span> Option
+<h4 data-number="2.2.1.47" id="option-preservetabs"><span
+class="header-section-number">2.2.1.47</span> Option
<code>preserveTabs</code></h4>
<dl>
<dt><code>preserveTabs</code> (default value: <code>true</code>)</dt>
@@ -5691,8 +5675,8 @@ class="header-section-number">2.2.1.45</span> Option
</dl>
</dd>
</dl>
-<h4 data-number="2.2.1.46" id="option-rawattribute"><span
-class="header-section-number">2.2.1.46</span> Option
+<h4 data-number="2.2.1.48" id="option-rawattribute"><span
+class="header-section-number">2.2.1.48</span> Option
<code>rawAttribute</code></h4>
<dl>
<dt><code>rawAttribute</code> (default value: <code>false</code>)</dt>
@@ -5703,24 +5687,24 @@ class="header-section-number">2.2.1.46</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="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="in">`$H_2 O$`</span>{=tex} is a liquid.</span></code></pre></div>
-<p>To enable raw blocks, the <strong><code>fencedCode</code></strong>
+<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><span class="in">`$H_2 O$`</span>{=tex} is a liquid.</span></code></pre></div>
+<p>To enable raw blocks, the <code><strong>fencedCode</strong></code>
option must also be enabled:</p>
-<div class="sourceCode" id="cb331"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb331-1"><a href="#cb331-1" aria-hidden="true" tabindex="-1"></a><span class="an">Here is a mathematical formula:</span></span>
-<span id="cb331-2"><a href="#cb331-2" aria-hidden="true" tabindex="-1"></a><span class="in">``` {=tex}</span></span>
-<span id="cb331-3"><a href="#cb331-3" aria-hidden="true" tabindex="-1"></a><span class="in">\[distance[i] =</span></span>
-<span id="cb331-4"><a href="#cb331-4" aria-hidden="true" tabindex="-1"></a><span class="in"> \begin{dcases}</span></span>
-<span id="cb331-5"><a href="#cb331-5" aria-hidden="true" tabindex="-1"></a><span class="in"> a &amp; b \\</span></span>
-<span id="cb331-6"><a href="#cb331-6" aria-hidden="true" tabindex="-1"></a><span class="in"> c &amp; d</span></span>
-<span id="cb331-7"><a href="#cb331-7" aria-hidden="true" tabindex="-1"></a><span class="in"> \end{dcases}</span></span>
-<span id="cb331-8"><a href="#cb331-8" aria-hidden="true" tabindex="-1"></a><span class="in">\]</span></span>
-<span id="cb331-9"><a href="#cb331-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
-entire document, the <strong><code>rawAttribute</code></strong> option
+<div class="sourceCode" id="cb334"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb334-1"><a href="#cb334-1" aria-hidden="true" tabindex="-1"></a><span class="an">Here is a mathematical formula:</span></span>
+<span id="cb334-2"><a href="#cb334-2" aria-hidden="true" tabindex="-1"></a><span class="in">``` {=tex}</span></span>
+<span id="cb334-3"><a href="#cb334-3" aria-hidden="true" tabindex="-1"></a><span class="in">\[distance[i] =</span></span>
+<span id="cb334-4"><a href="#cb334-4" aria-hidden="true" tabindex="-1"></a><span class="in"> \begin{dcases}</span></span>
+<span id="cb334-5"><a href="#cb334-5" aria-hidden="true" tabindex="-1"></a><span class="in"> a &amp; b \\</span></span>
+<span id="cb334-6"><a href="#cb334-6" aria-hidden="true" tabindex="-1"></a><span class="in"> c &amp; d</span></span>
+<span id="cb334-7"><a href="#cb334-7" aria-hidden="true" tabindex="-1"></a><span class="in"> \end{dcases}</span></span>
+<span id="cb334-8"><a href="#cb334-8" aria-hidden="true" tabindex="-1"></a><span class="in">\]</span></span>
+<span id="cb334-9"><a href="#cb334-9" aria-hidden="true" tabindex="-1"></a><span class="in">```</span></span></code></pre></div>
+<p>The <code><strong>rawAttribute</strong></code> option is a good
+alternative to the <code><strong>hybrid</strong></code> option. Unlike
+the <code><strong>hybrid</strong></code> option, which affects the
+entire document, the <code><strong>rawAttribute</strong></code> option
allows you to isolate the parts of your documents that use TeX:</p>
</dd>
</dl>
@@ -5738,29 +5722,29 @@ allows you to isolate the parts of your documents that use TeX:</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="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>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb332-3"><a href="#cb332-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb332-4"><a href="#cb332-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</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>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</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>``` {=html}</span>
-<span id="cb332-9"><a href="#cb332-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="cb332-10"><a href="#cb332-10" aria-hidden="true" tabindex="-1"></a>```</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 class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb335"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb335-1"><a href="#cb335-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb335-2"><a href="#cb335-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
+<span id="cb335-3"><a href="#cb335-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb335-4"><a href="#cb335-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb335-5"><a href="#cb335-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb335-6"><a href="#cb335-6" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span>
+<span id="cb335-7"><a href="#cb335-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb335-8"><a href="#cb335-8" aria-hidden="true" tabindex="-1"></a>``` {=html}</span>
+<span id="cb335-9"><a href="#cb335-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="cb335-10"><a href="#cb335-10" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb335-11"><a href="#cb335-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb335-12"><a href="#cb335-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="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="cb336"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb336-1"><a href="#cb336-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.47" id="option-relativereferences"><span
-class="header-section-number">2.2.1.47</span> Option
+<h4 data-number="2.2.1.49" id="option-relativereferences"><span
+class="header-section-number">2.2.1.49</span> Option
<code>relativeReferences</code></h4>
<dl>
<dt><code>relativeReferences</code> (default value:
@@ -5772,14 +5756,14 @@ class="header-section-number">2.2.1.47</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="cb334"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb334-1"><a href="#cb334-1" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</span>
-<span id="cb334-2"><a href="#cb334-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb334-3"><a href="#cb334-3" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span>
-<span id="cb334-4"><a href="#cb334-4" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span>
-<span id="cb334-5"><a href="#cb334-5" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
-<span id="cb334-6"><a href="#cb334-6" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
-<span id="cb334-7"><a href="#cb334-7" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span></code></pre></div>
+<div class="sourceCode" id="cb337"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb337-1"><a href="#cb337-1" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</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>Conclusion {#conclusion}</span>
+<span id="cb337-4"><a href="#cb337-4" aria-hidden="true" tabindex="-1"></a><span class="fu">==========</span></span>
+<span id="cb337-5"><a href="#cb337-5" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
+<span id="cb337-6"><a href="#cb337-6" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
+<span id="cb337-7"><a href="#cb337-7" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -5796,26 +5780,26 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb334-1"><a hr
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="cb335"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb335-1"><a href="#cb335-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb335-2"><a href="#cb335-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, relativeReferences]{<span class="ex">markdown</span>}</span>
-<span id="cb335-3"><a href="#cb335-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb335-4"><a href="#cb335-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb335-5"><a href="#cb335-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb335-6"><a href="#cb335-6" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</span>
-<span id="cb335-7"><a href="#cb335-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb335-8"><a href="#cb335-8" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span>
-<span id="cb335-9"><a href="#cb335-9" aria-hidden="true" tabindex="-1"></a>==========</span>
-<span id="cb335-10"><a href="#cb335-10" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
-<span id="cb335-11"><a href="#cb335-11" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
-<span id="cb335-12"><a href="#cb335-12" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span>
-<span id="cb335-13"><a href="#cb335-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb335-14"><a href="#cb335-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb335-15"><a href="#cb335-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="cb338"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb338-1"><a href="#cb338-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb338-2"><a href="#cb338-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, relativeReferences]{<span class="ex">markdown</span>}</span>
+<span id="cb338-3"><a href="#cb338-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb338-4"><a href="#cb338-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb338-5"><a href="#cb338-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb338-6"><a href="#cb338-6" aria-hidden="true" tabindex="-1"></a>I conclude in Section &lt;#conclusion&gt;.</span>
+<span id="cb338-7"><a href="#cb338-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb338-8"><a href="#cb338-8" aria-hidden="true" tabindex="-1"></a>Conclusion {#conclusion}</span>
+<span id="cb338-9"><a href="#cb338-9" aria-hidden="true" tabindex="-1"></a>==========</span>
+<span id="cb338-10"><a href="#cb338-10" aria-hidden="true" tabindex="-1"></a>In this paper, we have discovered that most</span>
+<span id="cb338-11"><a href="#cb338-11" aria-hidden="true" tabindex="-1"></a>grandmas would rather eat dinner with their</span>
+<span id="cb338-12"><a href="#cb338-12" aria-hidden="true" tabindex="-1"></a>grandchildren than get eaten. Begone, wolf!</span>
+<span id="cb338-13"><a href="#cb338-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb338-14"><a href="#cb338-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb338-15"><a href="#cb338-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="cb336"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb336-1"><a href="#cb336-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb336-2"><a href="#cb336-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb339"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb339-1"><a href="#cb339-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb339-2"><a href="#cb339-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>
@@ -5824,8 +5808,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.48" id="option-shiftheadings"><span
-class="header-section-number">2.2.1.48</span> Option
+<h4 data-number="2.2.1.50" id="option-shiftheadings"><span
+class="header-section-number">2.2.1.50</span> Option
<code>shiftHeadings</code></h4>
<dl>
<dt><code>shiftHeadings</code> (default value: <code>0</code>)</dt>
@@ -5841,32 +5825,32 @@ when ⟨<em>shift amount</em>⟩ is positive, and to level 1, when
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="cb337"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb337-1"><a href="#cb337-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div>
+<div class="sourceCode" id="cb340"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb340-1"><a href="#cb340-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="cb338"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb338-1"><a href="#cb338-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb338-2"><a href="#cb338-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb338-3"><a href="#cb338-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
-<span id="cb338-4"><a href="#cb338-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
-<span id="cb338-5"><a href="#cb338-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="cb338-6"><a href="#cb338-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
-<span id="cb338-7"><a href="#cb338-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="cb338-8"><a href="#cb338-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb338-9"><a href="#cb338-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{-1}</span>
-<span id="cb338-10"><a href="#cb338-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb338-11"><a href="#cb338-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb338-12"><a href="#cb338-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{0}</span>
-<span id="cb338-13"><a href="#cb338-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb338-14"><a href="#cb338-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb338-15"><a href="#cb338-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{+1}</span>
-<span id="cb338-16"><a href="#cb338-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb338-17"><a href="#cb338-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb338-18"><a href="#cb338-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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">\input</span> markdown</span>
+<span id="cb341-2"><a href="#cb341-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb341-3"><a href="#cb341-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
+<span id="cb341-4"><a href="#cb341-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
+<span id="cb341-5"><a href="#cb341-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="cb341-6"><a href="#cb341-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
+<span id="cb341-7"><a href="#cb341-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="cb341-8"><a href="#cb341-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb341-9"><a href="#cb341-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{-1}</span>
+<span id="cb341-10"><a href="#cb341-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb341-11"><a href="#cb341-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb341-12"><a href="#cb341-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{0}</span>
+<span id="cb341-13"><a href="#cb341-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb341-14"><a href="#cb341-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb341-15"><a href="#cb341-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionShiftHeadings</span>{+1}</span>
+<span id="cb341-16"><a href="#cb341-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb341-17"><a href="#cb341-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb341-18"><a href="#cb341-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="cb339"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb339-1"><a href="#cb339-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -5878,20 +5862,20 @@ 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="cb340"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb340-1"><a href="#cb340-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb340-2"><a href="#cb340-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb340-3"><a href="#cb340-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="cb340-4"><a href="#cb340-4" aria-hidden="true" tabindex="-1"></a>## A section</span>
-<span id="cb340-5"><a href="#cb340-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
-<span id="cb340-6"><a href="#cb340-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb340-7"><a href="#cb340-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=-1]{example.md}</span>
-<span id="cb340-8"><a href="#cb340-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb340-9"><a href="#cb340-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=+1]{example.md}</span>
-<span id="cb340-10"><a href="#cb340-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="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>{<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">filecontents</span>}[overwrite,nosearch,noheader]{example.md}</span>
+<span id="cb343-4"><a href="#cb343-4" aria-hidden="true" tabindex="-1"></a>## A section</span>
+<span id="cb343-5"><a href="#cb343-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
+<span id="cb343-6"><a href="#cb343-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb343-7"><a href="#cb343-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=-1]{example.md}</span>
+<span id="cb343-8"><a href="#cb343-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb343-9"><a href="#cb343-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[shiftHeadings=+1]{example.md}</span>
+<span id="cb343-10"><a href="#cb343-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="cb341"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb341-1"><a href="#cb341-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb344"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb344-1"><a href="#cb344-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>
@@ -5903,22 +5887,22 @@ 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>example.md</code> with the following content:</p>
-<div class="sourceCode" id="cb342"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb342-1"><a href="#cb342-1" aria-hidden="true" tabindex="-1"></a><span class="fu">## A section</span></span></code></pre></div>
+<div class="sourceCode" id="cb345"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb345-1"><a href="#cb345-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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb343-2"><a href="#cb343-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb343-3"><a href="#cb343-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb343-4"><a href="#cb343-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = -1]{example.md}</span>
-<span id="cb343-5"><a href="#cb343-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = 0]{example.md}</span>
-<span id="cb343-6"><a href="#cb343-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = +1]{example.md}</span>
-<span id="cb343-7"><a href="#cb343-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb343-8"><a href="#cb343-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb346-2"><a href="#cb346-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb346-3"><a href="#cb346-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb346-4"><a href="#cb346-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = -1]{example.md}</span>
+<span id="cb346-5"><a href="#cb346-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = 0]{example.md}</span>
+<span id="cb346-6"><a href="#cb346-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[shiftHeadings = +1]{example.md}</span>
+<span id="cb346-7"><a href="#cb346-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb346-8"><a href="#cb346-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="cb344"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb344-1"><a href="#cb344-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -5926,8 +5910,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.49" id="option-slice"><span
-class="header-section-number">2.2.1.49</span> Option
+<h4 data-number="2.2.1.51" id="option-slice"><span
+class="header-section-number">2.2.1.51</span> Option
<code>slice</code></h4>
<dl>
<dt><code>slice</code> (default value: <code>^ $</code>)</dt>
@@ -5962,43 +5946,43 @@ i.e. the entire section with the <abbr>HTML</abbr> attribute
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="cb345"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb345-1"><a href="#cb345-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span>
-<span id="cb345-2"><a href="#cb345-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</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">## Act III {#act-3}</span></span>
-<span id="cb345-5"><a href="#cb345-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
-<span id="cb345-6"><a href="#cb345-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb345-7"><a href="#cb345-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
-<span id="cb345-8"><a href="#cb345-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</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">## Act I {#act-1}</span></span>
-<span id="cb345-11"><a href="#cb345-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div>
+<div class="sourceCode" id="cb348"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb348-1"><a href="#cb348-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span>
+<span id="cb348-2"><a href="#cb348-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
+<span id="cb348-3"><a href="#cb348-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb348-4"><a href="#cb348-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span>
+<span id="cb348-5"><a href="#cb348-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
+<span id="cb348-6"><a href="#cb348-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb348-7"><a href="#cb348-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
+<span id="cb348-8"><a href="#cb348-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
+<span id="cb348-9"><a href="#cb348-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb348-10"><a href="#cb348-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span>
+<span id="cb348-11"><a href="#cb348-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="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="fu">\input</span> markdown</span>
-<span id="cb346-2"><a href="#cb346-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHeaderAttributes</span>{true}</span>
-<span id="cb346-3"><a href="#cb346-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb346-4"><a href="#cb346-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
-<span id="cb346-5"><a href="#cb346-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
-<span id="cb346-6"><a href="#cb346-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="cb346-7"><a href="#cb346-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
-<span id="cb346-8"><a href="#cb346-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="cb346-9"><a href="#cb346-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb346-10"><a href="#cb346-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{^ ^act-3}</span>
-<span id="cb346-11"><a href="#cb346-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
-<span id="cb346-12"><a href="#cb346-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb346-13"><a href="#cb346-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-1}</span>
-<span id="cb346-14"><a href="#cb346-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
-<span id="cb346-15"><a href="#cb346-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb346-16"><a href="#cb346-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-3 act-5}</span>
-<span id="cb346-17"><a href="#cb346-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
-<span id="cb346-18"><a href="#cb346-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb346-19"><a href="#cb346-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb349"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb349-1"><a href="#cb349-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb349-2"><a href="#cb349-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHeaderAttributes</span>{true}</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">\font\normal</span>=cmr10<span class="fu">\normal</span></span>
+<span id="cb349-5"><a href="#cb349-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\big</span>=cmr10 at 12pt</span>
+<span id="cb349-6"><a href="#cb349-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="cb349-7"><a href="#cb349-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\font\bigger</span>=cmr10 scaled 1440</span>
+<span id="cb349-8"><a href="#cb349-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="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">\def\markdownOptionSlice</span>{^ ^act-3}</span>
+<span id="cb349-11"><a href="#cb349-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
+<span id="cb349-12"><a href="#cb349-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb349-13"><a href="#cb349-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-1}</span>
+<span id="cb349-14"><a href="#cb349-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
+<span id="cb349-15"><a href="#cb349-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb349-16"><a href="#cb349-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSlice</span>{act-3 act-5}</span>
+<span id="cb349-17"><a href="#cb349-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{hamlet.md}</span>
+<span id="cb349-18"><a href="#cb349-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb349-19"><a href="#cb349-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="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">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb350"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb350-1"><a href="#cb350-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>
@@ -6015,30 +5999,30 @@ 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb348-2"><a href="#cb348-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb348-3"><a href="#cb348-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="cb348-4"><a href="#cb348-4" aria-hidden="true" tabindex="-1"></a># The Tragedy of Hamlet</span>
-<span id="cb348-5"><a href="#cb348-5" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
-<span id="cb348-6"><a href="#cb348-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb348-7"><a href="#cb348-7" aria-hidden="true" tabindex="-1"></a>## Act III {#act-3}</span>
-<span id="cb348-8"><a href="#cb348-8" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
-<span id="cb348-9"><a href="#cb348-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb348-10"><a href="#cb348-10" aria-hidden="true" tabindex="-1"></a>## Act V {#act-5}</span>
-<span id="cb348-11"><a href="#cb348-11" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
-<span id="cb348-12"><a href="#cb348-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb348-13"><a href="#cb348-13" aria-hidden="true" tabindex="-1"></a>## Act I {#act-1}</span>
-<span id="cb348-14"><a href="#cb348-14" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span>
-<span id="cb348-15"><a href="#cb348-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
-<span id="cb348-16"><a href="#cb348-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb348-17"><a href="#cb348-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=^ ^act-3]{hamlet.md}</span>
-<span id="cb348-18"><a href="#cb348-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-1]{hamlet.md}</span>
-<span id="cb348-19"><a href="#cb348-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-3 act-5]{hamlet.md}</span>
-<span id="cb348-20"><a href="#cb348-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="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>[headerAttributes]{<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">filecontents</span>}[overwrite,nosearch,noheader]{hamlet.md}</span>
+<span id="cb351-4"><a href="#cb351-4" aria-hidden="true" tabindex="-1"></a># The Tragedy of Hamlet</span>
+<span id="cb351-5"><a href="#cb351-5" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
+<span id="cb351-6"><a href="#cb351-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb351-7"><a href="#cb351-7" aria-hidden="true" tabindex="-1"></a>## Act III {#act-3}</span>
+<span id="cb351-8"><a href="#cb351-8" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
+<span id="cb351-9"><a href="#cb351-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb351-10"><a href="#cb351-10" aria-hidden="true" tabindex="-1"></a>## Act V {#act-5}</span>
+<span id="cb351-11"><a href="#cb351-11" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
+<span id="cb351-12"><a href="#cb351-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb351-13"><a href="#cb351-13" aria-hidden="true" tabindex="-1"></a>## Act I {#act-1}</span>
+<span id="cb351-14"><a href="#cb351-14" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span>
+<span id="cb351-15"><a href="#cb351-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
+<span id="cb351-16"><a href="#cb351-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb351-17"><a href="#cb351-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=^ ^act-3]{hamlet.md}</span>
+<span id="cb351-18"><a href="#cb351-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-1]{hamlet.md}</span>
+<span id="cb351-19"><a href="#cb351-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>[slice=act-3 act-5]{hamlet.md}</span>
+<span id="cb351-20"><a href="#cb351-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="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">lualatex</span> document.tex</span></code></pre></div>
+<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>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -6055,33 +6039,33 @@ 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>hamlet.md</code> with the following content:</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><span class="fu"># The Tragedy of Hamlet</span></span>
-<span id="cb350-2"><a href="#cb350-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
-<span id="cb350-3"><a href="#cb350-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb350-4"><a href="#cb350-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span>
-<span id="cb350-5"><a href="#cb350-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
-<span id="cb350-6"><a href="#cb350-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb350-7"><a href="#cb350-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
-<span id="cb350-8"><a href="#cb350-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
-<span id="cb350-9"><a href="#cb350-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb350-10"><a href="#cb350-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span>
-<span id="cb350-11"><a href="#cb350-11" aria-hidden="true" tabindex="-1"></a>Hamlet talks to ghost.</span></code></pre></div>
+<div class="sourceCode" id="cb353"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb353-1"><a href="#cb353-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># The Tragedy of Hamlet</span></span>
+<span id="cb353-2"><a href="#cb353-2" aria-hidden="true" tabindex="-1"></a>Shakespeare&#39;s longest play.</span>
+<span id="cb353-3"><a href="#cb353-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb353-4"><a href="#cb353-4" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act III {#act-3}</span></span>
+<span id="cb353-5"><a href="#cb353-5" aria-hidden="true" tabindex="-1"></a>Hamlet kills Polonius.</span>
+<span id="cb353-6"><a href="#cb353-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb353-7"><a href="#cb353-7" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act V {#act-5}</span></span>
+<span id="cb353-8"><a href="#cb353-8" aria-hidden="true" tabindex="-1"></a>Hamlet dies.</span>
+<span id="cb353-9"><a href="#cb353-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb353-10"><a href="#cb353-10" aria-hidden="true" tabindex="-1"></a><span class="fu">## Act I {#act-1}</span></span>
+<span id="cb353-11"><a href="#cb353-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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb351-2"><a href="#cb351-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[headerAttributes = yes]</span>
-<span id="cb351-3"><a href="#cb351-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb351-4"><a href="#cb351-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb351-5"><a href="#cb351-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = ^ ^act-3]{example.md}</span>
-<span id="cb351-6"><a href="#cb351-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-1]{example.md}</span>
-<span id="cb351-7"><a href="#cb351-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-3 act-5]{example.md}</span>
-<span id="cb351-8"><a href="#cb351-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb351-9"><a href="#cb351-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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">\usemodule</span>[t][markdown]</span>
+<span id="cb354-2"><a href="#cb354-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[headerAttributes = yes]</span>
+<span id="cb354-3"><a href="#cb354-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb354-4"><a href="#cb354-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb354-5"><a href="#cb354-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = ^ ^act-3]{example.md}</span>
+<span id="cb354-6"><a href="#cb354-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-1]{example.md}</span>
+<span id="cb354-7"><a href="#cb354-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\inputmarkdown</span>[slice = act-3 act-5]{example.md}</span>
+<span id="cb354-8"><a href="#cb354-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb354-9"><a href="#cb354-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb355"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb355-1"><a href="#cb355-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>
@@ -6094,8 +6078,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.50" id="option-smartellipses"><span
-class="header-section-number">2.2.1.50</span> Option
+<h4 data-number="2.2.1.52" id="option-smartellipses"><span
+class="header-section-number">2.2.1.52</span> Option
<code>smartEllipses</code></h4>
<dl>
<dt><code>smartEllipses</code> (default value: <code>false</code>)</dt>
@@ -6104,7 +6088,7 @@ class="header-section-number">2.2.1.50</span> Option
<dt>true</dt>
<dd>
<p>Convert any ellipses in the input to the
-<code>\markdownRendererEllipsis</code> <span
+<code>markdownRendererEllipsis</code> <span
class="tex">T<sub>e</sub>X</span> macro.</p>
</dd>
</dl>
@@ -6122,29 +6106,29 @@ class="tex">T<sub>e</sub>X</span> macro.</p>
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">\input</span> markdown</span>
-<span id="cb353-2"><a href="#cb353-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb353-3"><a href="#cb353-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb353-4"><a href="#cb353-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb353-5"><a href="#cb353-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb353-6"><a href="#cb353-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb353-7"><a href="#cb353-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb353-8"><a href="#cb353-8" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb353-9"><a href="#cb353-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
-<span id="cb353-10"><a href="#cb353-10" aria-hidden="true" tabindex="-1"></a> local input = &quot;These are just three regular dots ...&quot;</span>
-<span id="cb353-11"><a href="#cb353-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb353-12"><a href="#cb353-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb353-13"><a href="#cb353-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb353-14"><a href="#cb353-14" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb353-15"><a href="#cb353-15" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({smartEllipses = true})</span>
-<span id="cb353-16"><a href="#cb353-16" aria-hidden="true" tabindex="-1"></a> local input = &quot;... and this is a victorian ellipsis.&quot;</span>
-<span id="cb353-17"><a href="#cb353-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb353-18"><a href="#cb353-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb353-19"><a href="#cb353-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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="fu">\input</span> markdown</span>
+<span id="cb356-2"><a href="#cb356-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb356-3"><a href="#cb356-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
+<span id="cb356-4"><a href="#cb356-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb356-5"><a href="#cb356-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb356-6"><a href="#cb356-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb356-7"><a href="#cb356-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb356-8"><a href="#cb356-8" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb356-9"><a href="#cb356-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new()</span>
+<span id="cb356-10"><a href="#cb356-10" aria-hidden="true" tabindex="-1"></a> local input = &quot;These are just three regular dots ...&quot;</span>
+<span id="cb356-11"><a href="#cb356-11" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb356-12"><a href="#cb356-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb356-13"><a href="#cb356-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb356-14"><a href="#cb356-14" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb356-15"><a href="#cb356-15" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({smartEllipses = true})</span>
+<span id="cb356-16"><a href="#cb356-16" aria-hidden="true" tabindex="-1"></a> local input = &quot;... and this is a victorian ellipsis.&quot;</span>
+<span id="cb356-17"><a href="#cb356-17" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb356-18"><a href="#cb356-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb356-19"><a href="#cb356-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="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">luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -6154,36 +6138,27 @@ contain the following text:</p>
<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="cb355"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb355-1"><a href="#cb355-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb355-2"><a href="#cb355-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb355-3"><a href="#cb355-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb355-4"><a href="#cb355-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb355-5"><a href="#cb355-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb355-6"><a href="#cb355-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb355-7"><a href="#cb355-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb355-8"><a href="#cb355-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb355-9"><a href="#cb355-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb355-10"><a href="#cb355-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb355-11"><a href="#cb355-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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">\input</span> markdown</span>
+<span id="cb358-2"><a href="#cb358-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb358-3"><a href="#cb358-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
+<span id="cb358-4"><a href="#cb358-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb358-5"><a href="#cb358-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb358-6"><a href="#cb358-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb358-7"><a href="#cb358-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb358-8"><a href="#cb358-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb358-9"><a href="#cb358-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb358-10"><a href="#cb358-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb358-11"><a href="#cb358-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="cb356"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb356-1"><a href="#cb356-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="cb359"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb359-1"><a href="#cb359-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="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">texlua</span> ⟨CLI pathname⟩ <span class="at">--</span> content.md optionfalse.tex</span>
-<span id="cb357-2"><a href="#cb357-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="cb357-3"><a href="#cb357-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>
+<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">markdown2tex</span> <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb360-2"><a href="#cb360-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> smartEllipses=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb360-3"><a href="#cb360-3" 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>
@@ -6195,23 +6170,23 @@ 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="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">\input</span> markdown</span>
-<span id="cb358-2"><a href="#cb358-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb358-3"><a href="#cb358-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb358-4"><a href="#cb358-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb358-5"><a href="#cb358-5" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
-<span id="cb358-6"><a href="#cb358-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb358-7"><a href="#cb358-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb358-8"><a href="#cb358-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
-<span id="cb358-9"><a href="#cb358-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb358-10"><a href="#cb358-10" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
-<span id="cb358-11"><a href="#cb358-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb358-12"><a href="#cb358-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb358-13"><a href="#cb358-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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>
+<span id="cb361-4"><a href="#cb361-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb361-5"><a href="#cb361-5" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
+<span id="cb361-6"><a href="#cb361-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb361-7"><a href="#cb361-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb361-8"><a href="#cb361-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
+<span id="cb361-9"><a href="#cb361-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb361-10"><a href="#cb361-10" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
+<span id="cb361-11"><a href="#cb361-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb361-12"><a href="#cb361-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb361-13"><a href="#cb361-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="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">luatex</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">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>
@@ -6222,28 +6197,28 @@ 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="cb360"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb360-1"><a href="#cb360-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb360-2"><a href="#cb360-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb360-3"><a href="#cb360-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb360-4"><a href="#cb360-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb360-5"><a href="#cb360-5" aria-hidden="true" tabindex="-1"></a> ellipsis = {. . .}</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>}</span>
-<span id="cb360-8"><a href="#cb360-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb360-9"><a href="#cb360-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb360-10"><a href="#cb360-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb360-11"><a href="#cb360-11" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
-<span id="cb360-12"><a href="#cb360-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb360-13"><a href="#cb360-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb360-14"><a href="#cb360-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[smartEllipses]</span>
-<span id="cb360-15"><a href="#cb360-15" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
-<span id="cb360-16"><a href="#cb360-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb360-17"><a href="#cb360-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb360-18"><a href="#cb360-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="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="fu">\markdownSetup</span>{</span>
+<span id="cb363-4"><a href="#cb363-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb363-5"><a href="#cb363-5" aria-hidden="true" tabindex="-1"></a> ellipsis = {. . .}</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>
+<span id="cb363-8"><a href="#cb363-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb363-9"><a href="#cb363-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-10"><a href="#cb363-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb363-11"><a href="#cb363-11" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
+<span id="cb363-12"><a href="#cb363-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb363-13"><a href="#cb363-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-14"><a href="#cb363-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[smartEllipses]</span>
+<span id="cb363-15"><a href="#cb363-15" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
+<span id="cb363-16"><a href="#cb363-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb363-17"><a href="#cb363-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb363-18"><a href="#cb363-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="cb361"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb361-1"><a href="#cb361-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>
@@ -6254,32 +6229,32 @@ 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="cb362"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb362-1"><a href="#cb362-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb362-2"><a href="#cb362-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{. . .}</span>
-<span id="cb362-3"><a href="#cb362-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb362-4"><a href="#cb362-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb362-5"><a href="#cb362-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb362-6"><a href="#cb362-6" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
-<span id="cb362-7"><a href="#cb362-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb362-8"><a href="#cb362-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb362-9"><a href="#cb362-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
-<span id="cb362-10"><a href="#cb362-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb362-11"><a href="#cb362-11" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
-<span id="cb362-12"><a href="#cb362-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb362-13"><a href="#cb362-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb362-14"><a href="#cb362-14" 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">\def\markdownRendererEllipsis</span>{. . .}</span>
+<span id="cb365-3"><a href="#cb365-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb365-4"><a href="#cb365-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb365-5"><a href="#cb365-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb365-6"><a href="#cb365-6" aria-hidden="true" tabindex="-1"></a>These are just three regular dots ...</span>
+<span id="cb365-7"><a href="#cb365-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb365-8"><a href="#cb365-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb365-9"><a href="#cb365-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
+<span id="cb365-10"><a href="#cb365-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb365-11"><a href="#cb365-11" aria-hidden="true" tabindex="-1"></a>... and this is a victorian ellipsis.</span>
+<span id="cb365-12"><a href="#cb365-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb365-13"><a href="#cb365-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb365-14"><a href="#cb365-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="cb363"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb363-1"><a href="#cb363-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</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>
<p>These are just three regular dots …</p>
<p>. . . and this is a victorian ellipsis.</p>
</blockquote>
-<h4 data-number="2.2.1.51" id="option-startnumber"><span
-class="header-section-number">2.2.1.51</span> Option
+<h4 data-number="2.2.1.53" id="option-startnumber"><span
+class="header-section-number">2.2.1.53</span> Option
<code>startNumber</code></h4>
<dl>
<dt><code>startNumber</code> (default value: <code>true</code>)</dt>
@@ -6289,7 +6264,7 @@ class="header-section-number">2.2.1.51</span> Option
<dd>
<p>Make the number in the first item of an ordered lists significant.
The item numbers will be passed to the
-<code>\markdownRendererOlItemWithNumber</code> <span
+<code>markdownRendererOlItemWithNumber</code> <span
class="tex">T<sub>e</sub>X</span> macro.</p>
</dd>
</dl>
@@ -6299,7 +6274,7 @@ class="tex">T<sub>e</sub>X</span> macro.</p>
<dt>false</dt>
<dd>
<p>Ignore the numbers in the ordered list items. Each item will only
-produce a <code>\markdownRendererOlItem</code> <span
+produce a <code>markdownRendererOlItem</code> <span
class="tex">T<sub>e</sub>X</span> macro.</p>
</dd>
</dl>
@@ -6309,32 +6284,32 @@ class="tex">T<sub>e</sub>X</span> macro.</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="cb364"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb364-1"><a href="#cb364-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb364-2"><a href="#cb364-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb364-3"><a href="#cb364-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb364-4"><a href="#cb364-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb364-5"><a href="#cb364-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb364-6"><a href="#cb364-6" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
-<span id="cb364-7"><a href="#cb364-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb364-8"><a href="#cb364-8" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb364-9"><a href="#cb364-9" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb364-10"><a href="#cb364-10" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb364-11"><a href="#cb364-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb364-12"><a href="#cb364-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb364-13"><a href="#cb364-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[startNumber=false]</span>
-<span id="cb364-14"><a href="#cb364-14" aria-hidden="true" tabindex="-1"></a>The following list does not respect the numbers specified in the</span>
-<span id="cb364-15"><a href="#cb364-15" aria-hidden="true" tabindex="-1"></a>markup:</span>
-<span id="cb364-16"><a href="#cb364-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb364-17"><a href="#cb364-17" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb364-18"><a href="#cb364-18" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb364-19"><a href="#cb364-19" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb364-20"><a href="#cb364-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb364-21"><a href="#cb364-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb364-22"><a href="#cb364-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="cb367"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb367-1"><a href="#cb367-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb367-2"><a href="#cb367-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb367-3"><a href="#cb367-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb367-4"><a href="#cb367-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb367-5"><a href="#cb367-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb367-6"><a href="#cb367-6" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
+<span id="cb367-7"><a href="#cb367-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb367-8"><a href="#cb367-8" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb367-9"><a href="#cb367-9" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb367-10"><a href="#cb367-10" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb367-11"><a href="#cb367-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb367-12"><a href="#cb367-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb367-13"><a href="#cb367-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[startNumber=false]</span>
+<span id="cb367-14"><a href="#cb367-14" aria-hidden="true" tabindex="-1"></a>The following list does not respect the numbers specified in the</span>
+<span id="cb367-15"><a href="#cb367-15" aria-hidden="true" tabindex="-1"></a>markup:</span>
+<span id="cb367-16"><a href="#cb367-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb367-17"><a href="#cb367-17" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb367-18"><a href="#cb367-18" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb367-19"><a href="#cb367-19" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb367-20"><a href="#cb367-20" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb367-21"><a href="#cb367-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb367-22"><a href="#cb367-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="cb365"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb365-1"><a href="#cb365-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb368"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb368-1"><a href="#cb368-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>
@@ -6356,30 +6331,30 @@ markup:</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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb366-2"><a href="#cb366-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb366-3"><a href="#cb366-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb366-4"><a href="#cb366-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb366-5"><a href="#cb366-5" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
-<span id="cb366-6"><a href="#cb366-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb366-7"><a href="#cb366-7" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb366-8"><a href="#cb366-8" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb366-9"><a href="#cb366-9" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb366-10"><a href="#cb366-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb366-11"><a href="#cb366-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb366-12"><a href="#cb366-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[startNumber = no]</span>
-<span id="cb366-13"><a href="#cb366-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb366-14"><a href="#cb366-14" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
-<span id="cb366-15"><a href="#cb366-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb366-16"><a href="#cb366-16" aria-hidden="true" tabindex="-1"></a>3. third item</span>
-<span id="cb366-17"><a href="#cb366-17" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
-<span id="cb366-18"><a href="#cb366-18" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
-<span id="cb366-19"><a href="#cb366-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb366-20"><a href="#cb366-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb369"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb369-1"><a href="#cb369-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb369-2"><a href="#cb369-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb369-3"><a href="#cb369-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb369-4"><a href="#cb369-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb369-5"><a href="#cb369-5" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
+<span id="cb369-6"><a href="#cb369-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb369-7"><a href="#cb369-7" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb369-8"><a href="#cb369-8" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb369-9"><a href="#cb369-9" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb369-10"><a href="#cb369-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb369-11"><a href="#cb369-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb369-12"><a href="#cb369-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[startNumber = no]</span>
+<span id="cb369-13"><a href="#cb369-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb369-14"><a href="#cb369-14" aria-hidden="true" tabindex="-1"></a>The following list respects the numbers specified in the markup:</span>
+<span id="cb369-15"><a href="#cb369-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb369-16"><a href="#cb369-16" aria-hidden="true" tabindex="-1"></a>3. third item</span>
+<span id="cb369-17"><a href="#cb369-17" aria-hidden="true" tabindex="-1"></a>4. fourth item</span>
+<span id="cb369-18"><a href="#cb369-18" aria-hidden="true" tabindex="-1"></a>5. fifth item</span>
+<span id="cb369-19"><a href="#cb369-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb369-20"><a href="#cb369-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb370"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb370-1"><a href="#cb370-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>
@@ -6397,8 +6372,8 @@ markup:</p>
<li>fifth item</li>
</ol>
</blockquote>
-<h4 data-number="2.2.1.52" id="option-strikethrough"><span
-class="header-section-number">2.2.1.52</span> Option
+<h4 data-number="2.2.1.54" id="option-strikethrough"><span
+class="header-section-number">2.2.1.54</span> Option
<code>strikeThrough</code></h4>
<dl>
<dt><code>strikeThrough</code> (default value: <code>false</code>)</dt>
@@ -6409,8 +6384,8 @@ class="header-section-number">2.2.1.52</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="cb368"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb368-1"><a href="#cb368-1" aria-hidden="true" tabindex="-1"></a>This ~~is deleted text.~~</span></code></pre></div>
+<div class="sourceCode" id="cb371"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb371-1"><a href="#cb371-1" aria-hidden="true" tabindex="-1"></a>This ~~is deleted text.~~</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6427,18 +6402,18 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb368-1"><a hr
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="cb369"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb369-1"><a href="#cb369-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb369-2"><a href="#cb369-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
-<span id="cb369-3"><a href="#cb369-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span>
-<span id="cb369-4"><a href="#cb369-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
-<span id="cb369-5"><a href="#cb369-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb369-6"><a href="#cb369-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb369-7"><a href="#cb369-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb369-8"><a href="#cb369-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb372-2"><a href="#cb372-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
+<span id="cb372-3"><a href="#cb372-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soul.sty</span>
+<span id="cb372-4"><a href="#cb372-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
+<span id="cb372-5"><a href="#cb372-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</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">\markdownEnd</span></span>
+<span id="cb372-8"><a href="#cb372-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="cb370"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb370-1"><a href="#cb370-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -6448,23 +6423,23 @@ 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb371-2"><a href="#cb371-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span>
-<span id="cb371-3"><a href="#cb371-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span>
-<span id="cb371-4"><a href="#cb371-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb371-5"><a href="#cb371-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb371-6"><a href="#cb371-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
-<span id="cb371-7"><a href="#cb371-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb371-8"><a href="#cb371-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb371-9"><a href="#cb371-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb371-10"><a href="#cb371-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb371-11"><a href="#cb371-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb371-12"><a href="#cb371-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb371-13"><a href="#cb371-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="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>[strikeThrough]{<span class="ex">markdown</span>}</span>
+<span id="cb374-3"><a href="#cb374-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
+<span id="cb374-4"><a href="#cb374-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb374-5"><a href="#cb374-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb374-6"><a href="#cb374-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
+<span id="cb374-7"><a href="#cb374-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb374-8"><a href="#cb374-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb374-9"><a href="#cb374-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb374-10"><a href="#cb374-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb374-11"><a href="#cb374-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb374-12"><a href="#cb374-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb374-13"><a href="#cb374-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="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">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb375"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb375-1"><a href="#cb375-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>
@@ -6474,25 +6449,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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb373-2"><a href="#cb373-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
-<span id="cb373-3"><a href="#cb373-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
-<span id="cb373-4"><a href="#cb373-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb373-5"><a href="#cb373-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb373-6"><a href="#cb373-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb373-7"><a href="#cb373-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb373-8"><a href="#cb373-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb376"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb376-1"><a href="#cb376-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb376-2"><a href="#cb376-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
+<span id="cb376-3"><a href="#cb376-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
+<span id="cb376-4"><a href="#cb376-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb376-5"><a href="#cb376-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb376-6"><a href="#cb376-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb376-7"><a href="#cb376-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb376-8"><a href="#cb376-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb377"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb377-1"><a href="#cb377-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.53" id="option-stripindent"><span
-class="header-section-number">2.2.1.53</span> Option
+<h4 data-number="2.2.1.55" id="option-stripindent"><span
+class="header-section-number">2.2.1.55</span> Option
<code>stripIndent</code></h4>
<dl>
<dt><code>stripIndent</code> (default value: <code>false</code>)</dt>
@@ -6502,15 +6477,15 @@ class="header-section-number">2.2.1.53</span> Option
<dd>
<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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb375-2"><a href="#cb375-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
-<span id="cb375-3"><a href="#cb375-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb375-4"><a href="#cb375-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb375-5"><a href="#cb375-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb375-6"><a href="#cb375-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb375-7"><a href="#cb375-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<code><strong>preserveTabs</strong></code> Lua option is disabled:</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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb378-2"><a href="#cb378-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
+<span id="cb378-3"><a href="#cb378-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb378-4"><a href="#cb378-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb378-5"><a href="#cb378-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb378-6"><a href="#cb378-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb378-7"><a href="#cb378-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6528,54 +6503,54 @@ document.</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="cb376"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb376-1"><a href="#cb376-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb376-2"><a href="#cb376-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStripIndent</span>{true}</span>
-<span id="cb376-3"><a href="#cb376-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb376-4"><a href="#cb376-4" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb376-5"><a href="#cb376-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb376-6"><a href="#cb376-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb379-2"><a href="#cb379-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStripIndent</span>{true}</span>
+<span id="cb379-3"><a href="#cb379-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb379-4"><a href="#cb379-4" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb379-5"><a href="#cb379-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb379-6"><a href="#cb379-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="cb377"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb377-1"><a href="#cb377-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb378-2"><a href="#cb378-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
-<span id="cb378-3"><a href="#cb378-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb378-4"><a href="#cb378-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb378-5"><a href="#cb378-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb378-6"><a href="#cb378-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb378-7"><a href="#cb378-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="cb381"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb381-1"><a href="#cb381-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb381-2"><a href="#cb381-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripIndent]{<span class="ex">markdown</span>}</span>
+<span id="cb381-3"><a href="#cb381-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb381-4"><a href="#cb381-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb381-5"><a href="#cb381-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb381-6"><a href="#cb381-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb381-7"><a href="#cb381-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="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">lualatex</span> document.tex</span></code></pre></div>
+<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">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-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="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">\usemodule</span>[t][markdown]</span>
-<span id="cb380-2"><a href="#cb380-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[stripIndent = yes]</span>
-<span id="cb380-3"><a href="#cb380-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb380-4"><a href="#cb380-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startmarkdown</span></span>
-<span id="cb380-5"><a href="#cb380-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
-<span id="cb380-6"><a href="#cb380-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\stopmarkdown</span></span>
-<span id="cb380-7"><a href="#cb380-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<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">\usemodule</span>[t][markdown]</span>
+<span id="cb383-2"><a href="#cb383-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[stripIndent = yes]</span>
+<span id="cb383-3"><a href="#cb383-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb383-4"><a href="#cb383-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startmarkdown</span></span>
+<span id="cb383-5"><a href="#cb383-5" aria-hidden="true" tabindex="-1"></a> Hello *world*!</span>
+<span id="cb383-6"><a href="#cb383-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\stopmarkdown</span></span>
+<span id="cb383-7"><a href="#cb383-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="cb381"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb381-1"><a href="#cb381-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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.54" id="option-subscripts"><span
-class="header-section-number">2.2.1.54</span> Option
+<h4 data-number="2.2.1.56" id="option-subscripts"><span
+class="header-section-number">2.2.1.56</span> Option
<code>subscripts</code></h4>
<dl>
<dt><code>subscripts</code> (default value: <code>false</code>)</dt>
@@ -6586,8 +6561,8 @@ class="header-section-number">2.2.1.54</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="cb382"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb382-1"><a href="#cb382-1" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span></code></pre></div>
+<div class="sourceCode" id="cb385"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb385-1"><a href="#cb385-1" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6604,17 +6579,17 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb382-1"><a hr
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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb383-2"><a href="#cb383-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb383-3"><a href="#cb383-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb383-4"><a href="#cb383-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb383-5"><a href="#cb383-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb383-6"><a href="#cb383-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb383-7"><a href="#cb383-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="cb386"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb386-1"><a href="#cb386-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb386-2"><a href="#cb386-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb386-3"><a href="#cb386-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb386-4"><a href="#cb386-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb386-5"><a href="#cb386-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb386-6"><a href="#cb386-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb386-7"><a href="#cb386-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="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">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb387"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb387-1"><a href="#cb387-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>
@@ -6624,24 +6599,24 @@ 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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb385-2"><a href="#cb385-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
-<span id="cb385-3"><a href="#cb385-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb385-4"><a href="#cb385-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb385-5"><a href="#cb385-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb385-6"><a href="#cb385-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb385-7"><a href="#cb385-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb388"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb388-1"><a href="#cb388-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb388-2"><a href="#cb388-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
+<span id="cb388-3"><a href="#cb388-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb388-4"><a href="#cb388-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb388-5"><a href="#cb388-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb388-6"><a href="#cb388-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb388-7"><a href="#cb388-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb389"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb389-1"><a href="#cb389-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.55" id="option-superscripts"><span
-class="header-section-number">2.2.1.55</span> Option
+<h4 data-number="2.2.1.57" id="option-superscripts"><span
+class="header-section-number">2.2.1.57</span> Option
<code>superscripts</code></h4>
<dl>
<dt><code>superscripts</code> (default value: <code>false</code>)</dt>
@@ -6652,8 +6627,8 @@ class="header-section-number">2.2.1.55</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="cb387"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb387-1"><a href="#cb387-1" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span></code></pre></div>
+<div class="sourceCode" id="cb390"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb390-1"><a href="#cb390-1" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6670,17 +6645,17 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb387-1"><a hr
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="cb388"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb388-1"><a href="#cb388-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb388-2"><a href="#cb388-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb388-3"><a href="#cb388-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb388-4"><a href="#cb388-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb388-5"><a href="#cb388-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb388-6"><a href="#cb388-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb388-7"><a href="#cb388-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="cb391"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb391-1"><a href="#cb391-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb391-2"><a href="#cb391-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb391-3"><a href="#cb391-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb391-4"><a href="#cb391-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb391-5"><a href="#cb391-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb391-6"><a href="#cb391-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb391-7"><a href="#cb391-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="cb389"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb389-1"><a href="#cb389-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb392"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb392-1"><a href="#cb392-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>
@@ -6690,24 +6665,24 @@ 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="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">\usemodule</span>[t][markdown]</span>
-<span id="cb390-2"><a href="#cb390-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
-<span id="cb390-3"><a href="#cb390-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb390-4"><a href="#cb390-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb390-5"><a href="#cb390-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb390-6"><a href="#cb390-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb390-7"><a href="#cb390-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb393"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb393-1"><a href="#cb393-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb393-2"><a href="#cb393-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
+<span id="cb393-3"><a href="#cb393-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb393-4"><a href="#cb393-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb393-5"><a href="#cb393-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb393-6"><a href="#cb393-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb393-7"><a href="#cb393-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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.56" id="option-tableattributes"><span
-class="header-section-number">2.2.1.56</span> Option
+<h4 data-number="2.2.1.58" id="option-tableattributes"><span
+class="header-section-number">2.2.1.58</span> Option
<code>tableAttributes</code></h4>
<dl>
<dt><code>tableAttributes</code> (default value:
@@ -6718,14 +6693,14 @@ class="header-section-number">2.2.1.56</span> Option
<dd>
<p>Enable the assignment of HTML attributes to <a
href="#table-captions">table captions</a>.</p>
-<div class="sourceCode" id="cb392"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb392-1"><a href="#cb392-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb392-2"><a href="#cb392-2" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb392-3"><a href="#cb392-3" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb392-4"><a href="#cb392-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb392-5"><a href="#cb392-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb392-6"><a href="#cb392-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb392-7"><a href="#cb392-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span></code></pre></div>
+<div class="sourceCode" id="cb395"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb395-1"><a href="#cb395-1" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Right <span class="pp">|</span> Left <span class="pp">|</span> Default <span class="pp">|</span> Center <span class="pp">|</span></span>
+<span id="cb395-2"><a href="#cb395-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|------:|:-----|---------|:------:|</span></span>
+<span id="cb395-3"><a href="#cb395-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span></span>
+<span id="cb395-4"><a href="#cb395-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span></span>
+<span id="cb395-5"><a href="#cb395-5" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</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> : Demonstration of pipe table syntax. {#example-table}</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6742,57 +6717,57 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb392-1"><a hr
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="cb393"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb393-1"><a href="#cb393-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb393-2"><a href="#cb393-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
-<span id="cb393-3"><a href="#cb393-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span>
-<span id="cb393-4"><a href="#cb393-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span>
-<span id="cb393-5"><a href="#cb393-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span>
-<span id="cb393-6"><a href="#cb393-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span>
-<span id="cb393-7"><a href="#cb393-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
-<span id="cb393-8"><a href="#cb393-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb393-9"><a href="#cb393-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb393-10"><a href="#cb393-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb393-11"><a href="#cb393-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb393-12"><a href="#cb393-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span>
-<span id="cb393-13"><a href="#cb393-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
-<span id="cb393-14"><a href="#cb393-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb393-15"><a href="#cb393-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb393-16"><a href="#cb393-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span>
-<span id="cb393-17"><a href="#cb393-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb393-18"><a href="#cb393-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb393-19"><a href="#cb393-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
-<span id="cb393-20"><a href="#cb393-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span>
-<span id="cb393-21"><a href="#cb393-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb393-22"><a href="#cb393-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb393-23"><a href="#cb393-23" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb393-24"><a href="#cb393-24" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb393-25"><a href="#cb393-25" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb393-26"><a href="#cb393-26" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb393-27"><a href="#cb393-27" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb393-28"><a href="#cb393-28" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb393-29"><a href="#cb393-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
-<span id="cb393-30"><a href="#cb393-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb393-31"><a href="#cb393-31" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb393-32"><a href="#cb393-32" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb393-33"><a href="#cb393-33" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb393-34"><a href="#cb393-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb393-35"><a href="#cb393-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb393-36"><a href="#cb393-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb393-37"><a href="#cb393-37" aria-hidden="true" tabindex="-1"></a>See Table &lt;#example-table&gt;.</span>
-<span id="cb393-38"><a href="#cb393-38" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb393-39"><a href="#cb393-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb393-40"><a href="#cb393-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb393-41"><a href="#cb393-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb393-42"><a href="#cb393-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb393-43"><a href="#cb393-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb393-44"><a href="#cb393-44" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb393-45"><a href="#cb393-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span>
-<span id="cb393-46"><a href="#cb393-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb393-47"><a href="#cb393-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="cb396"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb396-1"><a href="#cb396-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb396-2"><a href="#cb396-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
+<span id="cb396-3"><a href="#cb396-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span>
+<span id="cb396-4"><a href="#cb396-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span>
+<span id="cb396-5"><a href="#cb396-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span>
+<span id="cb396-6"><a href="#cb396-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span>
+<span id="cb396-7"><a href="#cb396-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
+<span id="cb396-8"><a href="#cb396-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb396-9"><a href="#cb396-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb396-10"><a href="#cb396-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb396-11"><a href="#cb396-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb396-12"><a href="#cb396-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span>
+<span id="cb396-13"><a href="#cb396-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb396-14"><a href="#cb396-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb396-15"><a href="#cb396-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb396-16"><a href="#cb396-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span>
+<span id="cb396-17"><a href="#cb396-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb396-18"><a href="#cb396-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb396-19"><a href="#cb396-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb396-20"><a href="#cb396-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span>
+<span id="cb396-21"><a href="#cb396-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb396-22"><a href="#cb396-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb396-23"><a href="#cb396-23" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb396-24"><a href="#cb396-24" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb396-25"><a href="#cb396-25" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb396-26"><a href="#cb396-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb396-27"><a href="#cb396-27" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb396-28"><a href="#cb396-28" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb396-29"><a href="#cb396-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb396-30"><a href="#cb396-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb396-31"><a href="#cb396-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb396-32"><a href="#cb396-32" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb396-33"><a href="#cb396-33" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb396-34"><a href="#cb396-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb396-35"><a href="#cb396-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb396-36"><a href="#cb396-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb396-37"><a href="#cb396-37" aria-hidden="true" tabindex="-1"></a>See Table &lt;#example-table&gt;.</span>
+<span id="cb396-38"><a href="#cb396-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb396-39"><a href="#cb396-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb396-40"><a href="#cb396-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb396-41"><a href="#cb396-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb396-42"><a href="#cb396-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb396-43"><a href="#cb396-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb396-44"><a href="#cb396-44" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb396-45"><a href="#cb396-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span>
+<span id="cb396-46"><a href="#cb396-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb396-47"><a href="#cb396-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="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">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb397"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb397-1"><a href="#cb397-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>
@@ -6829,8 +6804,8 @@ contain the following text:</p>
</tbody>
</table>
</blockquote>
-<h4 data-number="2.2.1.57" id="table-captions"><span
-class="header-section-number">2.2.1.57</span> Option
+<h4 data-number="2.2.1.59" id="table-captions"><span
+class="header-section-number">2.2.1.59</span> Option
<code>tableCaptions</code></h4>
<dl>
<dt><code>tableCaptions</code> (default value: <code>false</code>)</dt>
@@ -6842,14 +6817,14 @@ class="header-section-number">2.2.1.57</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="cb395"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb395-1"><a href="#cb395-1" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</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>| 12 | 12 | 12 | 12 |</span>
-<span id="cb395-4"><a href="#cb395-4" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb395-5"><a href="#cb395-5" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</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> : Demonstration of pipe table syntax.</span></code></pre></div>
+<div class="sourceCode" id="cb398"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb398-1"><a href="#cb398-1" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Right <span class="pp">|</span> Left <span class="pp">|</span> Default <span class="pp">|</span> Center <span class="pp">|</span></span>
+<span id="cb398-2"><a href="#cb398-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|------:|:-----|---------|:------:|</span></span>
+<span id="cb398-3"><a href="#cb398-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span> 12 <span class="pp">|</span></span>
+<span id="cb398-4"><a href="#cb398-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span> 123 <span class="pp">|</span></span>
+<span id="cb398-5"><a href="#cb398-5" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span> 1 <span class="pp">|</span></span>
+<span id="cb398-6"><a href="#cb398-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb398-7"><a href="#cb398-7" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -6866,23 +6841,23 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb395-1"><a hr
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="cb396"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb396-1"><a href="#cb396-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb396-2"><a href="#cb396-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
-<span id="cb396-3"><a href="#cb396-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb396-4"><a href="#cb396-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb396-5"><a href="#cb396-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb396-6"><a href="#cb396-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb396-7"><a href="#cb396-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb396-8"><a href="#cb396-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb396-9"><a href="#cb396-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb396-10"><a href="#cb396-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb396-11"><a href="#cb396-11" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span>
-<span id="cb396-12"><a href="#cb396-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb396-13"><a href="#cb396-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb399-2"><a href="#cb399-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
+<span id="cb399-3"><a href="#cb399-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb399-4"><a href="#cb399-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb399-5"><a href="#cb399-5" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb399-6"><a href="#cb399-6" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb399-7"><a href="#cb399-7" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb399-8"><a href="#cb399-8" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb399-9"><a href="#cb399-9" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</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>: Demonstration of pipe table syntax.</span>
+<span id="cb399-12"><a href="#cb399-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb399-13"><a href="#cb399-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="cb397"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb397-1"><a href="#cb397-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -6922,27 +6897,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="cb398"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb398-1"><a href="#cb398-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb398-2"><a href="#cb398-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb398-3"><a href="#cb398-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb398-4"><a href="#cb398-4" aria-hidden="true" tabindex="-1"></a> pipeTables = yes,</span>
-<span id="cb398-5"><a href="#cb398-5" aria-hidden="true" tabindex="-1"></a> tableCaptions = yes,</span>
-<span id="cb398-6"><a href="#cb398-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb398-7"><a href="#cb398-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb398-8"><a href="#cb398-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb398-9"><a href="#cb398-9" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb398-10"><a href="#cb398-10" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb398-11"><a href="#cb398-11" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb398-12"><a href="#cb398-12" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb398-13"><a href="#cb398-13" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb398-14"><a href="#cb398-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb398-15"><a href="#cb398-15" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span>
-<span id="cb398-16"><a href="#cb398-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb398-17"><a href="#cb398-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb401"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb401-1"><a href="#cb401-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb401-2"><a href="#cb401-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb401-3"><a href="#cb401-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb401-4"><a href="#cb401-4" aria-hidden="true" tabindex="-1"></a> pipeTables = yes,</span>
+<span id="cb401-5"><a href="#cb401-5" aria-hidden="true" tabindex="-1"></a> tableCaptions = yes,</span>
+<span id="cb401-6"><a href="#cb401-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb401-7"><a href="#cb401-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb401-8"><a href="#cb401-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb401-9"><a href="#cb401-9" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb401-10"><a href="#cb401-10" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb401-11"><a href="#cb401-11" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb401-12"><a href="#cb401-12" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb401-13"><a href="#cb401-13" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb401-14"><a href="#cb401-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb401-15"><a href="#cb401-15" aria-hidden="true" tabindex="-1"></a>: Demonstration of pipe table syntax.</span>
+<span id="cb401-16"><a href="#cb401-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb401-17"><a href="#cb401-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="cb399"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb399-1"><a href="#cb399-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb402"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb402-1"><a href="#cb402-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>
@@ -6978,8 +6953,8 @@ contain the following text:</p>
</tbody>
</table>
</blockquote>
-<h4 data-number="2.2.1.58" id="option-tasklists"><span
-class="header-section-number">2.2.1.58</span> Option
+<h4 data-number="2.2.1.60" id="option-tasklists"><span
+class="header-section-number">2.2.1.60</span> Option
<code>taskLists</code></h4>
<dl>
<dt><code>taskLists</code> (default value: <code>false</code>)</dt>
@@ -6990,10 +6965,10 @@ class="header-section-number">2.2.1.58</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="cb400"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb400-1"><a href="#cb400-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="va">[ ]</span> an unticked task list item</span>
-<span id="cb400-2"><a href="#cb400-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="cb400-3"><a href="#cb400-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="cb403"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb403-1"><a href="#cb403-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span><span class="va">[ ]</span> an unticked task list item</span>
+<span id="cb403-2"><a href="#cb403-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="cb403-3"><a href="#cb403-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>
@@ -7010,26 +6985,26 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb400-1"><a hr
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="cb401"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb401-1"><a href="#cb401-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb401-2"><a href="#cb401-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span>
-<span id="cb401-3"><a href="#cb401-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb401-4"><a href="#cb401-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb401-5"><a href="#cb401-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
-<span id="cb401-6"><a href="#cb401-6" aria-hidden="true" tabindex="-1"></a> halfTickedBox = Maybe,</span>
-<span id="cb401-7"><a href="#cb401-7" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
-<span id="cb401-8"><a href="#cb401-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb401-9"><a href="#cb401-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb401-10"><a href="#cb401-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb401-11"><a href="#cb401-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb401-12"><a href="#cb401-12" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb401-13"><a href="#cb401-13" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
-<span id="cb401-14"><a href="#cb401-14" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
-<span id="cb401-15"><a href="#cb401-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb401-16"><a href="#cb401-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="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>[taskLists]{<span class="ex">markdown</span>}</span>
+<span id="cb404-3"><a href="#cb404-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb404-4"><a href="#cb404-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb404-5"><a href="#cb404-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
+<span id="cb404-6"><a href="#cb404-6" aria-hidden="true" tabindex="-1"></a> halfTickedBox = Maybe,</span>
+<span id="cb404-7"><a href="#cb404-7" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
+<span id="cb404-8"><a href="#cb404-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb404-9"><a href="#cb404-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb404-10"><a href="#cb404-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb404-11"><a href="#cb404-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb404-12"><a href="#cb404-12" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb404-13"><a href="#cb404-13" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
+<span id="cb404-14"><a href="#cb404-14" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
+<span id="cb404-15"><a href="#cb404-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb404-16"><a href="#cb404-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="cb402"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb402-1"><a href="#cb402-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb405"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb405-1"><a href="#cb405-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>
@@ -7043,22 +7018,22 @@ 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="cb403"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb403-1"><a href="#cb403-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb403-2"><a href="#cb403-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
-<span id="cb403-3"><a href="#cb403-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
-<span id="cb403-4"><a href="#cb403-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHalftickedBox</span>{Maybe}</span>
-<span id="cb403-5"><a href="#cb403-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
-<span id="cb403-6"><a href="#cb403-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb403-7"><a href="#cb403-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb403-8"><a href="#cb403-8" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb403-9"><a href="#cb403-9" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
-<span id="cb403-10"><a href="#cb403-10" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
-<span id="cb403-11"><a href="#cb403-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb403-12"><a href="#cb403-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb406"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb406-1"><a href="#cb406-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb406-2"><a href="#cb406-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
+<span id="cb406-3"><a href="#cb406-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
+<span id="cb406-4"><a href="#cb406-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHalftickedBox</span>{Maybe}</span>
+<span id="cb406-5"><a href="#cb406-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
+<span id="cb406-6"><a href="#cb406-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb406-7"><a href="#cb406-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb406-8"><a href="#cb406-8" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb406-9"><a href="#cb406-9" aria-hidden="true" tabindex="-1"></a>- [/] I can?</span>
+<span id="cb406-10"><a href="#cb406-10" aria-hidden="true" tabindex="-1"></a>- [X] I can!</span>
+<span id="cb406-11"><a href="#cb406-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb406-12"><a href="#cb406-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="cb404"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb404-1"><a href="#cb404-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb407"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb407-1"><a href="#cb407-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>
@@ -7068,8 +7043,8 @@ contain the following text:</p>
<li>Yes I can!</li>
</ul>
</blockquote>
-<h4 data-number="2.2.1.59" id="option-texcomments"><span
-class="header-section-number">2.2.1.59</span> Option
+<h4 data-number="2.2.1.61" id="option-texcomments"><span
+class="header-section-number">2.2.1.61</span> Option
<code>texComments</code></h4>
<dl>
<dt><code>texComments</code> (default value: <code>false</code>)</dt>
@@ -7078,16 +7053,16 @@ class="header-section-number">2.2.1.59</span> Option
<dt>true</dt>
<dd>
<p>Strip <span class="tex">T<sub>e</sub>X</span>-style comments.</p>
-<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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb405-2"><a href="#cb405-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
-<span id="cb405-3"><a href="#cb405-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb405-4"><a href="#cb405-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb405-5"><a href="#cb405-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb405-6"><a href="#cb405-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb405-7"><a href="#cb405-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb405-8"><a href="#cb405-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
+<div class="sourceCode" id="cb408"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb408-1"><a href="#cb408-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb408-2"><a href="#cb408-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
+<span id="cb408-3"><a href="#cb408-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb408-4"><a href="#cb408-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb408-5"><a href="#cb408-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb408-6"><a href="#cb408-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb408-7"><a href="#cb408-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb408-8"><a href="#cb408-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 <code><strong>hybrid</strong></code> is
enabled.</p>
</dd>
</dl>
@@ -7106,57 +7081,57 @@ comments.</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="cb406"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb406-1"><a href="#cb406-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb406-2"><a href="#cb406-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexComments</span>{true}</span>
-<span id="cb406-3"><a href="#cb406-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb406-4"><a href="#cb406-4" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb406-5"><a href="#cb406-5" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb406-6"><a href="#cb406-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb406-7"><a href="#cb406-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb409-2"><a href="#cb409-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexComments</span>{true}</span>
+<span id="cb409-3"><a href="#cb409-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb409-4"><a href="#cb409-4" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb409-5"><a href="#cb409-5" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb409-6"><a href="#cb409-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb409-7"><a href="#cb409-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="cb407"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb407-1"><a href="#cb407-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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-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="cb408"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb408-1"><a href="#cb408-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb408-2"><a href="#cb408-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
-<span id="cb408-3"><a href="#cb408-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb408-4"><a href="#cb408-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb408-5"><a href="#cb408-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb408-6"><a href="#cb408-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb408-7"><a href="#cb408-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb408-8"><a href="#cb408-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb411-2"><a href="#cb411-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texComments]{<span class="ex">markdown</span>}</span>
+<span id="cb411-3"><a href="#cb411-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb411-4"><a href="#cb411-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb411-5"><a href="#cb411-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb411-6"><a href="#cb411-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb411-7"><a href="#cb411-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb411-8"><a href="#cb411-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="cb409"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb409-1"><a href="#cb409-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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">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-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="cb410"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb410-1"><a href="#cb410-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb410-2"><a href="#cb410-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texComments = yes]</span>
-<span id="cb410-3"><a href="#cb410-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb410-4"><a href="#cb410-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb410-5"><a href="#cb410-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
-<span id="cb410-6"><a href="#cb410-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
-<span id="cb410-7"><a href="#cb410-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb410-8"><a href="#cb410-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb413"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb413-1"><a href="#cb413-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb413-2"><a href="#cb413-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texComments = yes]</span>
+<span id="cb413-3"><a href="#cb413-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb413-4"><a href="#cb413-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb413-5"><a href="#cb413-5" aria-hidden="true" tabindex="-1"></a>Hel<span class="co">% this is a comment</span></span>
+<span id="cb413-6"><a href="#cb413-6" aria-hidden="true" tabindex="-1"></a> lo *world*!</span>
+<span id="cb413-7"><a href="#cb413-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb413-8"><a href="#cb413-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="cb411"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb411-1"><a href="#cb411-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb414"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb414-1"><a href="#cb414-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.60" id="option-texmathdollars"><span
-class="header-section-number">2.2.1.60</span> Option
+<h4 data-number="2.2.1.62" id="option-texmathdollars"><span
+class="header-section-number">2.2.1.62</span> Option
<code>texMathDollars</code></h4>
<dl>
<dt><code>texMathDollars</code> (default value: <code>false</code>)</dt>
@@ -7167,10 +7142,10 @@ class="header-section-number">2.2.1.60</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="cb412"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb412-1"><a href="#cb412-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> $E=mc^2$</span></span>
-<span id="cb412-2"><a href="#cb412-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb412-3"><a href="#cb412-3" aria-hidden="true" tabindex="-1"></a>display math: $$E=mc^2$$</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><span class="an">inline math:</span><span class="co"> $E=mc^2$</span></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>display math: $$E=mc^2$$</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -7187,25 +7162,25 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb412-1"><a hr
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="cb413"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb413-1"><a href="#cb413-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb413-2"><a href="#cb413-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb413-3"><a href="#cb413-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb413-4"><a href="#cb413-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb413-5"><a href="#cb413-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb413-6"><a href="#cb413-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb413-7"><a href="#cb413-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb413-8"><a href="#cb413-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb413-9"><a href="#cb413-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDollars = true})</span>
-<span id="cb413-10"><a href="#cb413-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb413-11"><a href="#cb413-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$E=mc^2$</span>]] .. newline .. newline ..</span>
-<span id="cb413-12"><a href="#cb413-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="cb413-13"><a href="#cb413-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb413-14"><a href="#cb413-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb413-15"><a href="#cb413-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb416"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb416-1"><a href="#cb416-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb416-2"><a href="#cb416-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb416-3"><a href="#cb416-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb416-4"><a href="#cb416-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb416-5"><a href="#cb416-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb416-6"><a href="#cb416-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb416-7"><a href="#cb416-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb416-8"><a href="#cb416-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb416-9"><a href="#cb416-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDollars = true})</span>
+<span id="cb416-10"><a href="#cb416-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb416-11"><a href="#cb416-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">$E=mc^2$</span>]] .. newline .. newline ..</span>
+<span id="cb416-12"><a href="#cb416-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="cb416-13"><a href="#cb416-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb416-14"><a href="#cb416-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb416-15"><a href="#cb416-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="cb414"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb414-1"><a href="#cb414-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb417"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb417-1"><a href="#cb417-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>
@@ -7217,37 +7192,28 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
<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="cb415"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb415-1"><a href="#cb415-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb415-2"><a href="#cb415-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb415-3"><a href="#cb415-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb415-4"><a href="#cb415-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb415-5"><a href="#cb415-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb415-6"><a href="#cb415-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb415-7"><a href="#cb415-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb415-8"><a href="#cb415-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb415-9"><a href="#cb415-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb415-10"><a href="#cb415-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb418"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb418-1"><a href="#cb418-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb418-2"><a href="#cb418-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb418-3"><a href="#cb418-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb418-4"><a href="#cb418-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb418-5"><a href="#cb418-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb418-6"><a href="#cb418-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb418-7"><a href="#cb418-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb418-8"><a href="#cb418-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb418-9"><a href="#cb418-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb418-10"><a href="#cb418-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="cb416"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb416-1"><a href="#cb416-1" aria-hidden="true" tabindex="-1"></a>$E=mc^2$</span>
-<span id="cb416-2"><a href="#cb416-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb416-3"><a href="#cb416-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="cb419"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb419-1"><a href="#cb419-1" aria-hidden="true" tabindex="-1"></a>$E=mc^2$</span>
+<span id="cb419-2"><a href="#cb419-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb419-3"><a href="#cb419-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="cb417"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb417-1"><a href="#cb417-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="cb417-2"><a href="#cb417-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="cb417-3"><a href="#cb417-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>
+<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">markdown2tex</span> <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb420-2"><a href="#cb420-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> texMathDollars=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb420-3"><a href="#cb420-3" 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>
@@ -7263,20 +7229,20 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="cb418"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb418-1"><a href="#cb418-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb418-2"><a href="#cb418-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb418-3"><a href="#cb418-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
-<span id="cb418-4"><a href="#cb418-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb418-5"><a href="#cb418-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb418-6"><a href="#cb418-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb418-7"><a href="#cb418-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="cb418-8"><a href="#cb418-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb418-9"><a href="#cb418-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb418-10"><a href="#cb418-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb421-2"><a href="#cb421-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb421-3"><a href="#cb421-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
+<span id="cb421-4"><a href="#cb421-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb421-5"><a href="#cb421-5" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb421-6"><a href="#cb421-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb421-7"><a href="#cb421-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="cb421-8"><a href="#cb421-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb421-9"><a href="#cb421-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb421-10"><a href="#cb421-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="cb419"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb419-1"><a href="#cb419-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -7289,21 +7255,21 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="cb420"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb420-1"><a href="#cb420-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb420-2"><a href="#cb420-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
-<span id="cb420-3"><a href="#cb420-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb420-4"><a href="#cb420-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb420-5"><a href="#cb420-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb420-6"><a href="#cb420-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb420-7"><a href="#cb420-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb420-8"><a href="#cb420-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="cb420-9"><a href="#cb420-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb420-10"><a href="#cb420-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb420-11"><a href="#cb420-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb423-2"><a href="#cb423-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
+<span id="cb423-3"><a href="#cb423-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb423-4"><a href="#cb423-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb423-5"><a href="#cb423-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb423-6"><a href="#cb423-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb423-7"><a href="#cb423-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb423-8"><a href="#cb423-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="cb423-9"><a href="#cb423-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb423-10"><a href="#cb423-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb423-11"><a href="#cb423-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="cb421"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb421-1"><a href="#cb421-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb424"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb424-1"><a href="#cb424-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>
@@ -7316,21 +7282,21 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="cb422"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb422-1"><a href="#cb422-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb422-2"><a href="#cb422-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
-<span id="cb422-3"><a href="#cb422-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb422-4"><a href="#cb422-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb422-5"><a href="#cb422-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb422-6"><a href="#cb422-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb422-7"><a href="#cb422-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb422-8"><a href="#cb422-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="cb422-9"><a href="#cb422-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb422-10"><a href="#cb422-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb422-11"><a href="#cb422-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb425"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb425-1"><a href="#cb425-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb425-2"><a href="#cb425-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
+<span id="cb425-3"><a href="#cb425-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb425-4"><a href="#cb425-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb425-5"><a href="#cb425-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb425-6"><a href="#cb425-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb425-7"><a href="#cb425-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb425-8"><a href="#cb425-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="cb425-9"><a href="#cb425-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb425-10"><a href="#cb425-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb425-11"><a href="#cb425-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="cb423"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb423-1"><a href="#cb423-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -7339,8 +7305,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.61" id="option-texmathdoublebackslash"><span
-class="header-section-number">2.2.1.61</span> Option
+<h4 data-number="2.2.1.63" id="option-texmathdoublebackslash"><span
+class="header-section-number">2.2.1.63</span> Option
<code>texMathDoubleBackslash</code></h4>
<dl>
<dt><code>texMathDoubleBackslash</code> (default value:
@@ -7352,10 +7318,10 @@ class="header-section-number">2.2.1.61</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="cb424"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb424-1"><a href="#cb424-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \\(E=mc^2\\)</span></span>
-<span id="cb424-2"><a href="#cb424-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb424-3"><a href="#cb424-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="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="an">inline math:</span><span class="co"> \\(E=mc^2\\)</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>display math: <span class="sc">\\</span><span class="co">[</span><span class="ot">E=mc^2\\]</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -7372,25 +7338,25 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb424-1"><a hr
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="cb425"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb425-1"><a href="#cb425-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb425-2"><a href="#cb425-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb425-3"><a href="#cb425-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb425-4"><a href="#cb425-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb425-5"><a href="#cb425-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb425-6"><a href="#cb425-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb425-7"><a href="#cb425-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb425-8"><a href="#cb425-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb425-9"><a href="#cb425-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDoubleBackslash = true})</span>
-<span id="cb425-10"><a href="#cb425-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb425-11"><a href="#cb425-11" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)]] .. newline .. newline ..</span>
-<span id="cb425-12"><a href="#cb425-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="cb425-13"><a href="#cb425-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb425-14"><a href="#cb425-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb425-15"><a href="#cb425-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb428"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb428-1"><a href="#cb428-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb428-2"><a href="#cb428-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb428-3"><a href="#cb428-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb428-4"><a href="#cb428-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb428-5"><a href="#cb428-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb428-6"><a href="#cb428-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb428-7"><a href="#cb428-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb428-8"><a href="#cb428-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb428-9"><a href="#cb428-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathDoubleBackslash = true})</span>
+<span id="cb428-10"><a href="#cb428-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb428-11"><a href="#cb428-11" aria-hidden="true" tabindex="-1"></a> [[<span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)]] .. newline .. newline ..</span>
+<span id="cb428-12"><a href="#cb428-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="cb428-13"><a href="#cb428-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb428-14"><a href="#cb428-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb428-15"><a href="#cb428-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="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">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb429"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb429-1"><a href="#cb429-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>
@@ -7402,37 +7368,28 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
<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="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="fu">\input</span> markdown</span>
-<span id="cb427-2"><a href="#cb427-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb427-3"><a href="#cb427-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb427-4"><a href="#cb427-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb427-5"><a href="#cb427-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb427-6"><a href="#cb427-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb427-7"><a href="#cb427-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb427-8"><a href="#cb427-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb427-9"><a href="#cb427-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb427-10"><a href="#cb427-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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">\input</span> markdown</span>
+<span id="cb430-2"><a href="#cb430-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb430-3"><a href="#cb430-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb430-4"><a href="#cb430-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb430-5"><a href="#cb430-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb430-6"><a href="#cb430-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb430-7"><a href="#cb430-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb430-8"><a href="#cb430-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb430-9"><a href="#cb430-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb430-10"><a href="#cb430-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="cb428"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb428-1"><a href="#cb428-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span>(E=mc^2<span class="sc">\\</span>)</span>
-<span id="cb428-2"><a href="#cb428-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb428-3"><a href="#cb428-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="cb431"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb431-1"><a href="#cb431-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\\</span>(E=mc^2<span class="sc">\\</span>)</span>
+<span id="cb431-2"><a href="#cb431-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb431-3"><a href="#cb431-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="cb429"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb429-1"><a href="#cb429-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="cb429-2"><a href="#cb429-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="cb429-3"><a href="#cb429-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>
+<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">markdown2tex</span> <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb432-2"><a href="#cb432-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> texMathDoubleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb432-3"><a href="#cb432-3" 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>
@@ -7448,20 +7405,20 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="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">\input</span> markdown</span>
-<span id="cb430-2"><a href="#cb430-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb430-3"><a href="#cb430-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDoubleBackslash</span>{true}</span>
-<span id="cb430-4"><a href="#cb430-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb430-5"><a href="#cb430-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
-<span id="cb430-6"><a href="#cb430-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb430-7"><a href="#cb430-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="cb430-8"><a href="#cb430-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb430-9"><a href="#cb430-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb430-10"><a href="#cb430-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb433-2"><a href="#cb433-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb433-3"><a href="#cb433-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDoubleBackslash</span>{true}</span>
+<span id="cb433-4"><a href="#cb433-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb433-5"><a href="#cb433-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
+<span id="cb433-6"><a href="#cb433-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb433-7"><a href="#cb433-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="cb433-8"><a href="#cb433-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb433-9"><a href="#cb433-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb433-10"><a href="#cb433-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="cb431"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb431-1"><a href="#cb431-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -7474,21 +7431,21 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="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">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb432-2"><a href="#cb432-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDoubleBackslash]{<span class="ex">markdown</span>}</span>
-<span id="cb432-3"><a href="#cb432-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb432-4"><a href="#cb432-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb432-5"><a href="#cb432-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb432-6"><a href="#cb432-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
-<span id="cb432-7"><a href="#cb432-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb432-8"><a href="#cb432-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="cb432-9"><a href="#cb432-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb432-10"><a href="#cb432-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb432-11"><a href="#cb432-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="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>[texMathDoubleBackslash]{<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>
+<span id="cb435-5"><a href="#cb435-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb435-6"><a href="#cb435-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
+<span id="cb435-7"><a href="#cb435-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb435-8"><a href="#cb435-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="cb435-9"><a href="#cb435-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb435-10"><a href="#cb435-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb435-11"><a href="#cb435-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="cb433"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb433-1"><a href="#cb433-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7501,21 +7458,21 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="cb434"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb434-1"><a href="#cb434-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb434-2"><a href="#cb434-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDoubleBackslash = yes]</span>
-<span id="cb434-3"><a href="#cb434-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb434-4"><a href="#cb434-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb434-5"><a href="#cb434-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb434-6"><a href="#cb434-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
-<span id="cb434-7"><a href="#cb434-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb434-8"><a href="#cb434-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="cb434-9"><a href="#cb434-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb434-10"><a href="#cb434-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb434-11"><a href="#cb434-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb437-2"><a href="#cb437-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDoubleBackslash = yes]</span>
+<span id="cb437-3"><a href="#cb437-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb437-4"><a href="#cb437-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb437-5"><a href="#cb437-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb437-6"><a href="#cb437-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\\</span>(E=mc^2<span class="fu">\\</span>)</span>
+<span id="cb437-7"><a href="#cb437-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb437-8"><a href="#cb437-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="cb437-9"><a href="#cb437-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb437-10"><a href="#cb437-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb437-11"><a href="#cb437-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="cb435"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb435-1"><a href="#cb435-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -7524,8 +7481,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.62" id="option-texmathsinglebackslash"><span
-class="header-section-number">2.2.1.62</span> Option
+<h4 data-number="2.2.1.64" id="option-texmathsinglebackslash"><span
+class="header-section-number">2.2.1.64</span> Option
<code>texMathSingleBackslash</code></h4>
<dl>
<dt><code>texMathSingleBackslash</code> (default value:
@@ -7537,10 +7494,10 @@ class="header-section-number">2.2.1.62</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="cb436"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb436-1"><a href="#cb436-1" aria-hidden="true" tabindex="-1"></a><span class="an">inline math:</span><span class="co"> \(E=mc^2\)</span></span>
-<span id="cb436-2"><a href="#cb436-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb436-3"><a href="#cb436-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="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="an">inline math:</span><span class="co"> \(E=mc^2\)</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>display math: <span class="sc">\[</span>E=mc^2<span class="sc">\]</span></span></code></pre></div>
</dd>
</dl>
</dd>
@@ -7557,25 +7514,25 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb436-1"><a hr
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="fu">\input</span> markdown</span>
-<span id="cb437-2"><a href="#cb437-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb437-3"><a href="#cb437-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb437-4"><a href="#cb437-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb437-5"><a href="#cb437-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb437-6"><a href="#cb437-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
-<span id="cb437-7"><a href="#cb437-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
-<span id="cb437-8"><a href="#cb437-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
-<span id="cb437-9"><a href="#cb437-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathSingleBackslash = true})</span>
-<span id="cb437-10"><a href="#cb437-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
-<span id="cb437-11"><a href="#cb437-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\(E=mc^2\)</span>]] .. newline .. newline ..</span>
-<span id="cb437-12"><a href="#cb437-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="cb437-13"><a href="#cb437-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
-<span id="cb437-14"><a href="#cb437-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb437-15"><a href="#cb437-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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">\input</span> markdown</span>
+<span id="cb440-2"><a href="#cb440-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb440-3"><a href="#cb440-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb440-4"><a href="#cb440-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb440-5"><a href="#cb440-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb440-6"><a href="#cb440-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\directlua</span>{</span>
+<span id="cb440-7"><a href="#cb440-7" aria-hidden="true" tabindex="-1"></a> local markdown = require(&quot;markdown&quot;)</span>
+<span id="cb440-8"><a href="#cb440-8" aria-hidden="true" tabindex="-1"></a> local newline = [[^^J^^J]]</span>
+<span id="cb440-9"><a href="#cb440-9" aria-hidden="true" tabindex="-1"></a> local convert = markdown.new({texMathSingleBackslash = true})</span>
+<span id="cb440-10"><a href="#cb440-10" aria-hidden="true" tabindex="-1"></a> local input =</span>
+<span id="cb440-11"><a href="#cb440-11" aria-hidden="true" tabindex="-1"></a> [[<span class="ss">\(E=mc^2\)</span>]] .. newline .. newline ..</span>
+<span id="cb440-12"><a href="#cb440-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="cb440-13"><a href="#cb440-13" aria-hidden="true" tabindex="-1"></a> tex.sprint(convert(input)) }</span>
+<span id="cb440-14"><a href="#cb440-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb440-15"><a href="#cb440-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="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">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb441"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb441-1"><a href="#cb441-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>
@@ -7587,37 +7544,28 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
<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="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">\input</span> markdown</span>
-<span id="cb439-2"><a href="#cb439-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb439-3"><a href="#cb439-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb439-4"><a href="#cb439-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb439-5"><a href="#cb439-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
-<span id="cb439-6"><a href="#cb439-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
-<span id="cb439-7"><a href="#cb439-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
-<span id="cb439-8"><a href="#cb439-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
-<span id="cb439-9"><a href="#cb439-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb439-10"><a href="#cb439-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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">\input</span> markdown</span>
+<span id="cb442-2"><a href="#cb442-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb442-3"><a href="#cb442-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb442-4"><a href="#cb442-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb442-5"><a href="#cb442-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\#</span>=12</span>
+<span id="cb442-6"><a href="#cb442-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optionfalse</span>
+<span id="cb442-7"><a href="#cb442-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\par</span></span>
+<span id="cb442-8"><a href="#cb442-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> optiontrue</span>
+<span id="cb442-9"><a href="#cb442-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb442-10"><a href="#cb442-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="cb440"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb440-1"><a href="#cb440-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\(</span>E=mc^2<span class="sc">\)</span></span>
-<span id="cb440-2"><a href="#cb440-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb440-3"><a href="#cb440-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="cb443"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb443-1"><a href="#cb443-1" aria-hidden="true" tabindex="-1"></a><span class="sc">\(</span>E=mc^2<span class="sc">\)</span></span>
+<span id="cb443-2"><a href="#cb443-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb443-3"><a href="#cb443-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="cb441"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb441-1"><a href="#cb441-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="cb441-2"><a href="#cb441-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="cb441-3"><a href="#cb441-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>
+<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">markdown2tex</span> <span class="at">--</span> content.md optionfalse.tex</span>
+<span id="cb444-2"><a href="#cb444-2" aria-hidden="true" tabindex="-1"></a><span class="ex">markdown2tex</span> texMathSingleBackslash=true <span class="at">--</span> content.md optiontrue.tex</span>
+<span id="cb444-3"><a href="#cb444-3" 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>
@@ -7633,20 +7581,20 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="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">\input</span> markdown</span>
-<span id="cb442-2"><a href="#cb442-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb442-3"><a href="#cb442-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathSingleBackslash</span>{true}</span>
-<span id="cb442-4"><a href="#cb442-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb442-5"><a href="#cb442-5" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
-<span id="cb442-6"><a href="#cb442-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb442-7"><a href="#cb442-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="cb442-8"><a href="#cb442-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></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><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb445-2"><a href="#cb445-2" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb445-3"><a href="#cb445-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathSingleBackslash</span>{true}</span>
+<span id="cb445-4"><a href="#cb445-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb445-5"><a href="#cb445-5" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
+<span id="cb445-6"><a href="#cb445-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb445-7"><a href="#cb445-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="cb445-8"><a href="#cb445-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb445-9"><a href="#cb445-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb445-10"><a href="#cb445-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="cb443"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb443-1"><a href="#cb443-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -7659,21 +7607,21 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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>[texMathSingleBackslash]{<span class="ex">markdown</span>}</span>
-<span id="cb444-3"><a href="#cb444-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb444-4"><a href="#cb444-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb444-5"><a href="#cb444-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb444-6"><a href="#cb444-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
-<span id="cb444-7"><a href="#cb444-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb444-8"><a href="#cb444-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="cb444-9"><a href="#cb444-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb444-10"><a href="#cb444-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb444-11"><a href="#cb444-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="cb447"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb447-1"><a href="#cb447-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb447-2"><a href="#cb447-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathSingleBackslash]{<span class="ex">markdown</span>}</span>
+<span id="cb447-3"><a href="#cb447-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</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="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb447-6"><a href="#cb447-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
+<span id="cb447-7"><a href="#cb447-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb447-8"><a href="#cb447-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="cb447-9"><a href="#cb447-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb447-10"><a href="#cb447-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb447-11"><a href="#cb447-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="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="cb448"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb448-1"><a href="#cb448-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>
@@ -7686,21 +7634,21 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="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">\usemodule</span>[t][markdown]</span>
-<span id="cb446-2"><a href="#cb446-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathSingleBackslash = yes]</span>
-<span id="cb446-3"><a href="#cb446-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb446-4"><a href="#cb446-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb446-5"><a href="#cb446-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb446-6"><a href="#cb446-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></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="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="cb446-9"><a href="#cb446-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb446-10"><a href="#cb446-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb446-11"><a href="#cb446-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb449"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb449-1"><a href="#cb449-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb449-2"><a href="#cb449-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathSingleBackslash = yes]</span>
+<span id="cb449-3"><a href="#cb449-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb449-4"><a href="#cb449-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb449-5"><a href="#cb449-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb449-6"><a href="#cb449-6" aria-hidden="true" tabindex="-1"></a><span class="ss">\(E=mc^2\)</span></span>
+<span id="cb449-7"><a href="#cb449-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb449-8"><a href="#cb449-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="cb449-9"><a href="#cb449-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb449-10"><a href="#cb449-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb449-11"><a href="#cb449-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb450"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb450-1"><a href="#cb450-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>
@@ -7709,8 +7657,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.63" id="option-tightlists"><span
-class="header-section-number">2.2.1.63</span> Option
+<h4 data-number="2.2.1.65" id="option-tightlists"><span
+class="header-section-number">2.2.1.65</span> Option
<code>tightLists</code></h4>
<dl>
<dt><code>tightLists</code> (default value: <code>true</code>)</dt>
@@ -7722,16 +7670,16 @@ class="header-section-number">2.2.1.63</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="cb448"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb448-1"><a href="#cb448-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span>
-<span id="cb448-2"><a href="#cb448-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a tight</span>
-<span id="cb448-3"><a href="#cb448-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</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="ss">- </span>This is</span>
-<span id="cb448-6"><a href="#cb448-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb448-7"><a href="#cb448-7" aria-hidden="true" tabindex="-1"></a> not a tight</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="ss">- </span>unordered list.</span></code></pre></div>
+<div class="sourceCode" id="cb451"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb451-1"><a href="#cb451-1" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span>
+<span id="cb451-2"><a href="#cb451-2" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>a tight</span>
+<span id="cb451-3"><a href="#cb451-3" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span>
+<span id="cb451-4"><a href="#cb451-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb451-5"><a href="#cb451-5" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>This is</span>
+<span id="cb451-6"><a href="#cb451-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb451-7"><a href="#cb451-7" aria-hidden="true" tabindex="-1"></a> not a tight</span>
+<span id="cb451-8"><a href="#cb451-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb451-9"><a href="#cb451-9" aria-hidden="true" tabindex="-1"></a><span class="ss">- </span>unordered list.</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -7750,39 +7698,39 @@ multiple paragraphs.</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="cb449"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb449-1"><a href="#cb449-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb449-2"><a href="#cb449-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb449-3"><a href="#cb449-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb449-4"><a href="#cb449-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-5"><a href="#cb449-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb449-6"><a href="#cb449-6" aria-hidden="true" tabindex="-1"></a>The following list is tight:</span>
-<span id="cb449-7"><a href="#cb449-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-8"><a href="#cb449-8" aria-hidden="true" tabindex="-1"></a>- first item</span>
-<span id="cb449-9"><a href="#cb449-9" aria-hidden="true" tabindex="-1"></a>- second item</span>
-<span id="cb449-10"><a href="#cb449-10" aria-hidden="true" tabindex="-1"></a>- third item</span>
-<span id="cb449-11"><a href="#cb449-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-12"><a href="#cb449-12" aria-hidden="true" tabindex="-1"></a>The following list is loose:</span>
-<span id="cb449-13"><a href="#cb449-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-14"><a href="#cb449-14" aria-hidden="true" tabindex="-1"></a>- first item</span>
-<span id="cb449-15"><a href="#cb449-15" aria-hidden="true" tabindex="-1"></a>- second item that spans</span>
-<span id="cb449-16"><a href="#cb449-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-17"><a href="#cb449-17" aria-hidden="true" tabindex="-1"></a> multiple paragraphs</span>
-<span id="cb449-18"><a href="#cb449-18" aria-hidden="true" tabindex="-1"></a>- third item</span>
-<span id="cb449-19"><a href="#cb449-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb449-20"><a href="#cb449-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-21"><a href="#cb449-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[tightLists=false]</span>
-<span id="cb449-22"><a href="#cb449-22" aria-hidden="true" tabindex="-1"></a>The following list is now also loose:</span>
-<span id="cb449-23"><a href="#cb449-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-24"><a href="#cb449-24" aria-hidden="true" tabindex="-1"></a>- first item</span>
-<span id="cb449-25"><a href="#cb449-25" aria-hidden="true" tabindex="-1"></a>- second item</span>
-<span id="cb449-26"><a href="#cb449-26" aria-hidden="true" tabindex="-1"></a>- third item</span>
-<span id="cb449-27"><a href="#cb449-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb449-28"><a href="#cb449-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb449-29"><a href="#cb449-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="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>{<span class="ex">markdown</span>}</span>
+<span id="cb452-3"><a href="#cb452-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb452-4"><a href="#cb452-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb452-5"><a href="#cb452-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb452-6"><a href="#cb452-6" aria-hidden="true" tabindex="-1"></a>The following list is tight:</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>- first item</span>
+<span id="cb452-9"><a href="#cb452-9" aria-hidden="true" tabindex="-1"></a>- second item</span>
+<span id="cb452-10"><a href="#cb452-10" aria-hidden="true" tabindex="-1"></a>- third item</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>The following list is loose:</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>- first item</span>
+<span id="cb452-15"><a href="#cb452-15" aria-hidden="true" tabindex="-1"></a>- second item that spans</span>
+<span id="cb452-16"><a href="#cb452-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb452-17"><a href="#cb452-17" aria-hidden="true" tabindex="-1"></a> multiple paragraphs</span>
+<span id="cb452-18"><a href="#cb452-18" aria-hidden="true" tabindex="-1"></a>- third item</span>
+<span id="cb452-19"><a href="#cb452-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb452-20"><a href="#cb452-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb452-21"><a href="#cb452-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[tightLists=false]</span>
+<span id="cb452-22"><a href="#cb452-22" aria-hidden="true" tabindex="-1"></a>The following list is now also loose:</span>
+<span id="cb452-23"><a href="#cb452-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb452-24"><a href="#cb452-24" aria-hidden="true" tabindex="-1"></a>- first item</span>
+<span id="cb452-25"><a href="#cb452-25" aria-hidden="true" tabindex="-1"></a>- second item</span>
+<span id="cb452-26"><a href="#cb452-26" aria-hidden="true" tabindex="-1"></a>- third item</span>
+<span id="cb452-27"><a href="#cb452-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb452-28"><a href="#cb452-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb452-29"><a href="#cb452-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="cb450"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb450-1"><a href="#cb450-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -7806,8 +7754,8 @@ contain the following text:</p>
<li><p>third item</p></li>
</ul>
</blockquote>
-<h4 data-number="2.2.1.64" id="option-underscores"><span
-class="header-section-number">2.2.1.64</span> Option
+<h4 data-number="2.2.1.66" id="option-underscores"><span
+class="header-section-number">2.2.1.66</span> Option
<code>underscores</code></h4>
<dl>
<dt><code>underscores</code> (default value: <code>true</code>)</dt>
@@ -7817,11 +7765,11 @@ class="header-section-number">2.2.1.64</span> Option
<dd>
<p>Both underscores and asterisks can be used to denote emphasis and
strong emphasis:</p>
-<div class="sourceCode" id="cb451"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb451-1"><a href="#cb451-1" aria-hidden="true" tabindex="-1"></a>*single asterisks*</span>
-<span id="cb451-2"><a href="#cb451-2" aria-hidden="true" tabindex="-1"></a>_single underscores_</span>
-<span id="cb451-3"><a href="#cb451-3" aria-hidden="true" tabindex="-1"></a>**double asterisks**</span>
-<span id="cb451-4"><a href="#cb451-4" aria-hidden="true" tabindex="-1"></a>__double underscores__</span></code></pre></div>
+<div class="sourceCode" id="cb454"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb454-1"><a href="#cb454-1" aria-hidden="true" tabindex="-1"></a>*single asterisks*</span>
+<span id="cb454-2"><a href="#cb454-2" aria-hidden="true" tabindex="-1"></a>_single underscores_</span>
+<span id="cb454-3"><a href="#cb454-3" aria-hidden="true" tabindex="-1"></a>**double asterisks**</span>
+<span id="cb454-4"><a href="#cb454-4" aria-hidden="true" tabindex="-1"></a>__double underscores__</span></code></pre></div>
</dd>
</dl>
</dd>
@@ -7831,7 +7779,7 @@ class="sourceCode md"><code class="sourceCode markdown"><span id="cb451-1"><a hr
<dd>
<p>Only asterisks can be used to denote emphasis and strong emphasis.
This makes it easy to write math with the
-<strong><code>hybrid</code></strong> option without the need to
+<code><strong>hybrid</strong></code> option without the need to
constantly escape subscripts.</p>
</dd>
</dl>
@@ -7841,23 +7789,23 @@ constantly escape subscripts.</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="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="fu">\input</span> markdown</span>
-<span id="cb452-2"><a href="#cb452-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
-<span id="cb452-3"><a href="#cb452-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb452-4"><a href="#cb452-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb452-5"><a href="#cb452-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="cb452-6"><a href="#cb452-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></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 class="fu">\def\markdownOptionUnderscores</span>{false}</span>
-<span id="cb452-9"><a href="#cb452-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb452-10"><a href="#cb452-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="cb452-11"><a href="#cb452-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb452-12"><a href="#cb452-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb452-13"><a href="#cb452-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb455-2"><a href="#cb455-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
+<span id="cb455-3"><a href="#cb455-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb455-4"><a href="#cb455-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb455-5"><a href="#cb455-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="cb455-6"><a href="#cb455-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb455-7"><a href="#cb455-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb455-8"><a href="#cb455-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionUnderscores</span>{false}</span>
+<span id="cb455-9"><a href="#cb455-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb455-10"><a href="#cb455-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="cb455-11"><a href="#cb455-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb455-12"><a href="#cb455-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb455-13"><a href="#cb455-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="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">luatex</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">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>
@@ -7870,23 +7818,23 @@ 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb454-2"><a href="#cb454-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hybrid]{<span class="ex">markdown</span>}</span>
-<span id="cb454-3"><a href="#cb454-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb454-4"><a href="#cb454-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-5"><a href="#cb454-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb454-6"><a href="#cb454-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="cb454-7"><a href="#cb454-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</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="kw">\begin</span>{<span class="ex">markdown</span>}[underscores=false]</span>
-<span id="cb454-10"><a href="#cb454-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="cb454-11"><a href="#cb454-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb454-12"><a href="#cb454-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb454-13"><a href="#cb454-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb457-2"><a href="#cb457-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hybrid]{<span class="ex">markdown</span>}</span>
+<span id="cb457-3"><a href="#cb457-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb457-4"><a href="#cb457-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb457-5"><a href="#cb457-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb457-6"><a href="#cb457-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="cb457-7"><a href="#cb457-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb457-8"><a href="#cb457-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb457-9"><a href="#cb457-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[underscores=false]</span>
+<span id="cb457-10"><a href="#cb457-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="cb457-11"><a href="#cb457-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb457-12"><a href="#cb457-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb457-13"><a href="#cb457-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="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">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb458"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb458-1"><a href="#cb458-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>
@@ -7899,24 +7847,24 @@ 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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb456-2"><a href="#cb456-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
-<span id="cb456-3"><a href="#cb456-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</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="fu">\startmarkdown</span></span>
-<span id="cb456-6"><a href="#cb456-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="cb456-7"><a href="#cb456-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb456-8"><a href="#cb456-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-9"><a href="#cb456-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[underscores = yes]</span>
-<span id="cb456-10"><a href="#cb456-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb456-11"><a href="#cb456-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="cb456-12"><a href="#cb456-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb456-13"><a href="#cb456-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb456-14"><a href="#cb456-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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">\usemodule</span>[t][markdown]</span>
+<span id="cb459-2"><a href="#cb459-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
+<span id="cb459-3"><a href="#cb459-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb459-4"><a href="#cb459-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb459-5"><a href="#cb459-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb459-6"><a href="#cb459-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="cb459-7"><a href="#cb459-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb459-8"><a href="#cb459-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb459-9"><a href="#cb459-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[underscores = yes]</span>
+<span id="cb459-10"><a href="#cb459-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb459-11"><a href="#cb459-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="cb459-12"><a href="#cb459-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb459-13"><a href="#cb459-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb459-14"><a href="#cb459-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="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">context</span> <span class="at">--luatex</span> 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">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>
@@ -7940,45 +7888,45 @@ class="header-section-number">2.2.2.1</span> Setting Lua options from
plain <span class="tex">T<sub>e</sub>X</span></h4>
<p>As a rule of thumb, you can set all Lua options directly from plain
<span class="tex">T<sub>e</sub>X</span>. For example, to set the
-<strong><code>taskLists</code></strong> Lua option to <code>true</code>,
+<code><strong>taskLists</strong></code> 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">\def\markdownOptionTaskLists</span>{true}</span></code></pre></div>
+<div class="sourceCode" id="cb461"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb461-1"><a href="#cb461-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>
+macro. For example, to set the <code><strong>taskLists</strong></code>
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="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">\markdownSetup</span>{taskLists = true}</span></code></pre></div>
+<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="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>
-<p>The <code>\markdownOptionFrozenCache</code> option uses the mapping
+<p>The <code>markdownOptionFrozenCache</code> option uses the mapping
previously created by the Lua interface
-<strong><code>finalizeCache</code></strong> option, and uses it to
+<code><strong>finalizeCache</strong></code> option, and uses it to
typeset the plain <span class="tex">T<sub>e</sub>X</span> document
without invoking Lua. As a result, the plain <span
class="tex">T<sub>e</sub>X</span> document becomes more portable, but
further changes in the order and the content of markdown documents will
not be reflected. It defaults to <code>false</code>.</p>
-<p>The standard usage of the <strong><code>finalizeCache</code></strong>
-and <strong><code>frozenCache</code></strong> options is as follows:</p>
+<p>The standard usage of the <code><strong>finalizeCache</strong></code>
+and <code><strong>frozenCache</strong></code> options is as follows:</p>
<ol type="1">
-<li>Remove the <strong><code>cacheDir</code></strong> cache directory
+<li>Remove the <code><strong>cacheDir</strong></code> cache directory
with stale auxiliary cache files.</li>
-<li>Enable the <strong><code>finalizeCache</code></strong> option.</li>
+<li>Enable the <code><strong>finalizeCache</strong></code> option.</li>
<li>Typeset the plain <span class="tex">T<sub>e</sub>X</span> document
to populate and finalize the cache.</li>
-<li>Enable the <strong><code>frozenCache</code></strong> option.</li>
+<li>Enable the <code><strong>frozenCache</strong></code> option.</li>
<li>Publish the source code of the plain <span
class="tex">T<sub>e</sub>X</span> document and the
-<strong><code>cacheDir</code></strong> directory.</li>
+<code><strong>cacheDir</strong></code> directory.</li>
</ol>
<p>For more information, see the examples for the
-<strong><code>finalizeCache</code></strong> option.</p>
+<code><strong>finalizeCache</strong></code> option.</p>
<h4 data-number="2.2.2.3" id="file-and-directory-names"><span
class="header-section-number">2.2.2.3</span> File and Directory
Names</h4>
@@ -7999,22 +7947,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="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="fu">\input</span> lmfonts</span>
-<span id="cb460-2"><a href="#cb460-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb460-3"><a href="#cb460-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionInputTempFileName</span>{temporary-input.md}</span>
-<span id="cb460-4"><a href="#cb460-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputDir</span>{output-directory}</span>
-<span id="cb460-5"><a href="#cb460-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{output-directory/cache-directory}</span>
-<span id="cb460-6"><a href="#cb460-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionEagerCache</span>{true}</span>
-<span id="cb460-7"><a href="#cb460-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span>
-<span id="cb460-8"><a href="#cb460-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{output-directory/cache-directory/frozen-cache.tex}</span>
-<span id="cb460-9"><a href="#cb460-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb460-10"><a href="#cb460-10" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb460-11"><a href="#cb460-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb460-12"><a href="#cb460-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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">\input</span> lmfonts</span>
+<span id="cb463-2"><a href="#cb463-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb463-3"><a href="#cb463-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionInputTempFileName</span>{temporary-input.md}</span>
+<span id="cb463-4"><a href="#cb463-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionOutputDir</span>{output-directory}</span>
+<span id="cb463-5"><a href="#cb463-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionCacheDir</span>{output-directory/cache-directory}</span>
+<span id="cb463-6"><a href="#cb463-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionEagerCache</span>{true}</span>
+<span id="cb463-7"><a href="#cb463-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFinalizeCache</span>{true}</span>
+<span id="cb463-8"><a href="#cb463-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionFrozenCacheFileName</span>{output-directory/cache-directory/frozen-cache.tex}</span>
+<span id="cb463-9"><a href="#cb463-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb463-10"><a href="#cb463-10" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb463-11"><a href="#cb463-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb463-12"><a href="#cb463-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="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">luatex</span> <span class="at">--output-directory</span> output-directory document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb464"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb464-1"><a href="#cb464-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>
@@ -8027,8 +7975,8 @@ 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="cb462"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb462-1"><a href="#cb462-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>
+<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">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
@@ -8045,7 +7993,7 @@ 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
+<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
@@ -8060,33 +8008,33 @@ 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="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="bu">\usepackage</span>[plain]{<span class="ex">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="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="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">\def\markdownOptionPlain</span>{true}</span>
-<span id="cb464-2"><a href="#cb464-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span></code></pre></div>
+<div class="sourceCode" id="cb467"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb467-1"><a href="#cb467-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionPlain</span>{true}</span>
+<span id="cb467-2"><a href="#cb467-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
+<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="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="bu">\usepackage</span>[noDefaults]{<span class="ex">markdown</span>}</span></code></pre></div>
+<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="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="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="fu">\def\markdownOptionNoDefaults</span>{true}</span>
-<span id="cb466-2"><a href="#cb466-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span></code></pre></div>
+<div class="sourceCode" id="cb469"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb469-1"><a href="#cb469-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNoDefaults</span>{true}</span>
+<span id="cb469-2"><a href="#cb469-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
+<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
class="tex">T<sub>e</sub>X</span> document. This enables the use of
@@ -8099,25 +8047,25 @@ 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="cb467"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb467-1"><a href="#cb467-1" aria-hidden="true" tabindex="-1"></a><span class="co">% \iffalse</span></span>
-<span id="cb467-2"><a href="#cb467-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">ltxdoc</span>}</span>
-<span id="cb467-3"><a href="#cb467-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripPercentSigns]{<span class="ex">markdown</span>}</span>
-<span id="cb467-4"><a href="#cb467-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb467-5"><a href="#cb467-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\DocInput</span>{document.dtx}</span>
-<span id="cb467-6"><a href="#cb467-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span>
-<span id="cb467-7"><a href="#cb467-7" aria-hidden="true" tabindex="-1"></a><span class="co">% \fi</span></span>
-<span id="cb467-8"><a href="#cb467-8" aria-hidden="true" tabindex="-1"></a><span class="co">%</span></span>
-<span id="cb467-9"><a href="#cb467-9" aria-hidden="true" tabindex="-1"></a><span class="co">% \begin{markdown}</span></span>
-<span id="cb467-10"><a href="#cb467-10" aria-hidden="true" tabindex="-1"></a><span class="co">% Hello *world*!</span></span>
-<span id="cb467-11"><a href="#cb467-11" aria-hidden="true" tabindex="-1"></a><span class="co">% \end{markdown}</span></span></code></pre></div>
+<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="co">% \iffalse</span></span>
+<span id="cb470-2"><a href="#cb470-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">ltxdoc</span>}</span>
+<span id="cb470-3"><a href="#cb470-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[stripPercentSigns]{<span class="ex">markdown</span>}</span>
+<span id="cb470-4"><a href="#cb470-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb470-5"><a href="#cb470-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\DocInput</span>{document.dtx}</span>
+<span id="cb470-6"><a href="#cb470-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span>
+<span id="cb470-7"><a href="#cb470-7" aria-hidden="true" tabindex="-1"></a><span class="co">% \fi</span></span>
+<span id="cb470-8"><a href="#cb470-8" aria-hidden="true" tabindex="-1"></a><span class="co">%</span></span>
+<span id="cb470-9"><a href="#cb470-9" aria-hidden="true" tabindex="-1"></a><span class="co">% \begin{markdown}</span></span>
+<span id="cb470-10"><a href="#cb470-10" aria-hidden="true" tabindex="-1"></a><span class="co">% Hello *world*!</span></span>
+<span id="cb470-11"><a href="#cb470-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="cb468"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb468-1"><a href="#cb468-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.dtx</span></code></pre></div>
+<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.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="themes"><span
-class="header-section-number">2.2.3</span> Themes</h3>
+<h4 data-number="2.2.2.6" id="themes"><span
+class="header-section-number">2.2.2.6</span> Themes</h4>
<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
@@ -8125,10 +8073,150 @@ 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>
+<dt><code><strong>witiko/diagrams</strong></code></dt>
+<dd>
+<p>A theme that typesets fenced code blocks with the infostrings
+<code>dot</code>, <code>mermaid</code>, and <code>plantuml</code> as
+figures with diagrams produced with the command <code>dot</code> from
+Graphviz tools, the command <code>mmdc</code> from the npm package
+<code>@mermaid-js/mermaid-cli</code>, and the command
+<code>plantuml</code> from the package PlantUML, respectively. The
+key-value attribute <code>caption</code> can be used to specify the
+caption of the figure. The remaining attributes are treated as image
+attributes.</p>
+<p>The theme requires a Unix-like operating system with GNU Diffutils,
+Graphviz, the npm package <code>@mermaid-js/mermaid-cli</code>, and
+PlantUML installed. All these packages are already included in the
+Docker image <code>witiko/markdown</code>; consult
+<code>Dockerfile</code> to see how they are installed. The theme also
+requires shell access unless the
+<code><strong>frozenCache</strong></code> plain <span
+class="tex">T<sub>e</sub>X</span> option is enabled.</p>
+</dd>
+</dl>
+<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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb472-2"><a href="#cb472-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/diagrams@v2, relativeReferences]{<span class="ex">markdown</span>}</span>
+<span id="cb472-3"><a href="#cb472-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb472-4"><a href="#cb472-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb472-5"><a href="#cb472-5" aria-hidden="true" tabindex="-1"></a>``` dot {caption=&quot;An example directed graph&quot; width=12cm #dot}</span>
+<span id="cb472-6"><a href="#cb472-6" aria-hidden="true" tabindex="-1"></a>digraph tree {</span>
+<span id="cb472-7"><a href="#cb472-7" aria-hidden="true" tabindex="-1"></a> margin = 0;</span>
+<span id="cb472-8"><a href="#cb472-8" aria-hidden="true" tabindex="-1"></a> rankdir = &quot;LR&quot;;</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> latex -&gt; pmml;</span>
+<span id="cb472-11"><a href="#cb472-11" aria-hidden="true" tabindex="-1"></a> latex -&gt; cmml;</span>
+<span id="cb472-12"><a href="#cb472-12" aria-hidden="true" tabindex="-1"></a> pmml -&gt; slt;</span>
+<span id="cb472-13"><a href="#cb472-13" aria-hidden="true" tabindex="-1"></a> cmml -&gt; opt;</span>
+<span id="cb472-14"><a href="#cb472-14" aria-hidden="true" tabindex="-1"></a> cmml -&gt; prefix;</span>
+<span id="cb472-15"><a href="#cb472-15" aria-hidden="true" tabindex="-1"></a> cmml -&gt; infix;</span>
+<span id="cb472-16"><a href="#cb472-16" aria-hidden="true" tabindex="-1"></a> pmml -&gt; mterms [style=dashed];</span>
+<span id="cb472-17"><a href="#cb472-17" aria-hidden="true" tabindex="-1"></a> cmml -&gt; mterms;</span>
+<span id="cb472-18"><a href="#cb472-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-19"><a href="#cb472-19" aria-hidden="true" tabindex="-1"></a> latex [label = &quot;LaTeX&quot;];</span>
+<span id="cb472-20"><a href="#cb472-20" aria-hidden="true" tabindex="-1"></a> pmml [label = &quot;Presentation MathML&quot;];</span>
+<span id="cb472-21"><a href="#cb472-21" aria-hidden="true" tabindex="-1"></a> cmml [label = &quot;Content MathML&quot;];</span>
+<span id="cb472-22"><a href="#cb472-22" aria-hidden="true" tabindex="-1"></a> slt [label = &quot;Symbol Layout Tree&quot;];</span>
+<span id="cb472-23"><a href="#cb472-23" aria-hidden="true" tabindex="-1"></a> opt [label = &quot;Operator Tree&quot;];</span>
+<span id="cb472-24"><a href="#cb472-24" aria-hidden="true" tabindex="-1"></a> prefix [label = &quot;Prefix&quot;];</span>
+<span id="cb472-25"><a href="#cb472-25" aria-hidden="true" tabindex="-1"></a> infix [label = &quot;Infix&quot;];</span>
+<span id="cb472-26"><a href="#cb472-26" aria-hidden="true" tabindex="-1"></a> mterms [label = &quot;M-Terms&quot;];</span>
+<span id="cb472-27"><a href="#cb472-27" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb472-28"><a href="#cb472-28" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb472-29"><a href="#cb472-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-30"><a href="#cb472-30" aria-hidden="true" tabindex="-1"></a>``` mermaid {caption=&quot;An example mindmap&quot; width=9cm #mermaid}</span>
+<span id="cb472-31"><a href="#cb472-31" aria-hidden="true" tabindex="-1"></a>mindmap</span>
+<span id="cb472-32"><a href="#cb472-32" aria-hidden="true" tabindex="-1"></a> root )base-idea(</span>
+<span id="cb472-33"><a href="#cb472-33" aria-hidden="true" tabindex="-1"></a> sub&lt;br/&gt;idea 1</span>
+<span id="cb472-34"><a href="#cb472-34" aria-hidden="true" tabindex="-1"></a> ((?))</span>
+<span id="cb472-35"><a href="#cb472-35" aria-hidden="true" tabindex="-1"></a> sub&lt;br/&gt;idea 2</span>
+<span id="cb472-36"><a href="#cb472-36" aria-hidden="true" tabindex="-1"></a> ((?))</span>
+<span id="cb472-37"><a href="#cb472-37" aria-hidden="true" tabindex="-1"></a> sub&lt;br/&gt;idea 3</span>
+<span id="cb472-38"><a href="#cb472-38" aria-hidden="true" tabindex="-1"></a> ((?))</span>
+<span id="cb472-39"><a href="#cb472-39" aria-hidden="true" tabindex="-1"></a> sub&lt;br/&gt;idea 4</span>
+<span id="cb472-40"><a href="#cb472-40" aria-hidden="true" tabindex="-1"></a> ((?))</span>
+<span id="cb472-41"><a href="#cb472-41" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb472-42"><a href="#cb472-42" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-43"><a href="#cb472-43" aria-hidden="true" tabindex="-1"></a>``` plantuml {caption=&quot;An example UML sequence diagram&quot; width=7cm #plantuml}</span>
+<span id="cb472-44"><a href="#cb472-44" aria-hidden="true" tabindex="-1"></a>@startuml</span>
+<span id="cb472-45"><a href="#cb472-45" aria-hidden="true" tabindex="-1"></a>&#39; Define participants (actors)</span>
+<span id="cb472-46"><a href="#cb472-46" aria-hidden="true" tabindex="-1"></a>participant &quot;Client&quot; as C</span>
+<span id="cb472-47"><a href="#cb472-47" aria-hidden="true" tabindex="-1"></a>participant &quot;Server&quot; as S</span>
+<span id="cb472-48"><a href="#cb472-48" aria-hidden="true" tabindex="-1"></a>participant &quot;Database&quot; as DB</span>
+<span id="cb472-49"><a href="#cb472-49" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-50"><a href="#cb472-50" aria-hidden="true" tabindex="-1"></a>&#39; Diagram title</span>
+<span id="cb472-51"><a href="#cb472-51" aria-hidden="true" tabindex="-1"></a>title Simple Request-Response Flow</span>
+<span id="cb472-52"><a href="#cb472-52" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-53"><a href="#cb472-53" aria-hidden="true" tabindex="-1"></a>&#39; Messages</span>
+<span id="cb472-54"><a href="#cb472-54" aria-hidden="true" tabindex="-1"></a>C -&gt; S: Send Request</span>
+<span id="cb472-55"><a href="#cb472-55" aria-hidden="true" tabindex="-1"></a>note over S: Process request</span>
+<span id="cb472-56"><a href="#cb472-56" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-57"><a href="#cb472-57" aria-hidden="true" tabindex="-1"></a>alt Request is valid</span>
+<span id="cb472-58"><a href="#cb472-58" aria-hidden="true" tabindex="-1"></a> S -&gt; DB: Query Data</span>
+<span id="cb472-59"><a href="#cb472-59" aria-hidden="true" tabindex="-1"></a> DB -&gt; S: Return Data</span>
+<span id="cb472-60"><a href="#cb472-60" aria-hidden="true" tabindex="-1"></a> S -&gt; C: Respond with Data</span>
+<span id="cb472-61"><a href="#cb472-61" aria-hidden="true" tabindex="-1"></a>else Request is invalid</span>
+<span id="cb472-62"><a href="#cb472-62" aria-hidden="true" tabindex="-1"></a> S -&gt; C: Return Error</span>
+<span id="cb472-63"><a href="#cb472-63" aria-hidden="true" tabindex="-1"></a>end</span>
+<span id="cb472-64"><a href="#cb472-64" aria-hidden="true" tabindex="-1"></a>@enduml</span>
+<span id="cb472-65"><a href="#cb472-65" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb472-66"><a href="#cb472-66" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb472-67"><a href="#cb472-67" aria-hidden="true" tabindex="-1"></a>See the diagrams in figures &lt;#dot&gt;, &lt;#mermaid&gt;, and &lt;#plantuml&gt;.</span>
+<span id="cb472-68"><a href="#cb472-68" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb472-69"><a href="#cb472-69" 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="cb473"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb473-1"><a href="#cb473-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 three diagrams.</p>
+<dl>
+<dt><code><strong>witiko/graphicx/http</strong></code></dt>
+<dd>
+<p>A theme that adds support for downloading images whose URL has the
+http or https protocol. The theme requires the
+<code><strong>catchfile</strong></code> <span
+class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package and a Unix-like
+operating system with GNU Coreutils <code>md5sum</code> and either GNU
+Wget or cURL installed. The theme also requires shell access unless the
+<code><strong>frozenCache</strong></code> plain <span
+class="tex">T<sub>e</sub>X</span> option is enabled.</p>
+</dd>
+</dl>
+<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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb474-2"><a href="#cb474-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/graphicx/http, link_attributes]{<span class="ex">markdown</span>}</span>
+<span id="cb474-3"><a href="#cb474-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb474-4"><a href="#cb474-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb474-5"><a href="#cb474-5" aria-hidden="true" tabindex="-1"></a>![img](https://github.com/witiko/markdown/raw/main/markdown.png</span>
+<span id="cb474-6"><a href="#cb474-6" aria-hidden="true" tabindex="-1"></a> &quot;The banner of the Markdown package&quot;){width=5in}</span>
+<span id="cb474-7"><a href="#cb474-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb474-8"><a href="#cb474-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="cb475"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb475-1"><a href="#cb475-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 image:</p>
+<blockquote>
+<figure>
+<img src="https://github.com/witiko/markdown/raw/main/markdown.png"
+alt="Figure 1: The banner of the Markdown package" />
+<figcaption aria-hidden="true">Figure 1: The banner of the Markdown
+package</figcaption>
+</figure>
+</blockquote>
+<dl>
+<dt><code><strong>witiko/tilde</strong></code></dt>
<dd>
<p>A theme that makes tilde (<code>~</code>) always typeset the
-non-breaking space even when the <strong><code>hybrid</code></strong>
+non-breaking space even when the <code><strong>hybrid</strong></code>
Lua option is disabled.</p>
</dd>
</dl>
@@ -8136,16 +8224,16 @@ Lua option is disabled.</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="cb469"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb469-1"><a href="#cb469-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb469-2"><a href="#cb469-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=witiko/tilde}</span>
-<span id="cb469-3"><a href="#cb469-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb469-4"><a href="#cb469-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb469-5"><a href="#cb469-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb469-6"><a href="#cb469-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<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">\input</span> markdown</span>
+<span id="cb476-2"><a href="#cb476-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=witiko/tilde}</span>
+<span id="cb476-3"><a href="#cb476-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb476-4"><a href="#cb476-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb476-5"><a href="#cb476-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb476-6"><a href="#cb476-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="cb470"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb470-1"><a href="#cb470-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb477"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb477-1"><a href="#cb477-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>
@@ -8153,7 +8241,7 @@ non-breaking space:</p>
<p>Bartel·Leendert van·der·Waerden</p>
</blockquote>
<dl>
-<dt><strong><code>witiko/markdown/defaults</code></strong></dt>
+<dt><code><strong>witiko/markdown/defaults</strong></code></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
@@ -8161,145 +8249,145 @@ 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>
+<h4 data-number="2.2.2.7" id="snippets"><span
+class="header-section-number">2.2.2.7</span> Snippets</h4>
<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="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">\markdownSetupSnippet</span>{romanNumerals}{</span>
-<span id="cb471-2"><a href="#cb471-2" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb471-3"><a href="#cb471-3" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
-<span id="cb471-4"><a href="#cb471-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="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> },</span>
-<span id="cb471-7"><a href="#cb471-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb471-8"><a href="#cb471-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb471-9"><a href="#cb471-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb471-10"><a href="#cb471-10" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by arabic numerals:</span>
-<span id="cb471-11"><a href="#cb471-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb471-12"><a href="#cb471-12" aria-hidden="true" tabindex="-1"></a>1. wahid</span>
-<span id="cb471-13"><a href="#cb471-13" aria-hidden="true" tabindex="-1"></a>2. aithnayn</span>
-<span id="cb471-14"><a href="#cb471-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb471-15"><a href="#cb471-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb471-16"><a href="#cb471-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=romanNumerals]</span>
-<span id="cb471-17"><a href="#cb471-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb471-18"><a href="#cb471-18" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
-<span id="cb471-19"><a href="#cb471-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb471-20"><a href="#cb471-20" aria-hidden="true" tabindex="-1"></a>3. tres</span>
-<span id="cb471-21"><a href="#cb471-21" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
-<span id="cb471-22"><a href="#cb471-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb471-23"><a href="#cb471-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</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="fu">\markdownSetupSnippet</span>{romanNumerals}{</span>
+<span id="cb478-2"><a href="#cb478-2" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb478-3"><a href="#cb478-3" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
+<span id="cb478-4"><a href="#cb478-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="cb478-5"><a href="#cb478-5" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb478-6"><a href="#cb478-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb478-7"><a href="#cb478-7" aria-hidden="true" tabindex="-1"></a>}</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></span>
+<span id="cb478-10"><a href="#cb478-10" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by arabic numerals:</span>
+<span id="cb478-11"><a href="#cb478-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb478-12"><a href="#cb478-12" aria-hidden="true" tabindex="-1"></a>1. wahid</span>
+<span id="cb478-13"><a href="#cb478-13" aria-hidden="true" tabindex="-1"></a>2. aithnayn</span>
+<span id="cb478-14"><a href="#cb478-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb478-15"><a href="#cb478-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb478-16"><a href="#cb478-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=romanNumerals]</span>
+<span id="cb478-17"><a href="#cb478-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb478-18"><a href="#cb478-18" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb478-19"><a href="#cb478-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb478-20"><a href="#cb478-20" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb478-21"><a href="#cb478-21" aria-hidden="true" tabindex="-1"></a>4. quattuor</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><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="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>{import=jdoe/lists}</span>
-<span id="cb472-2"><a href="#cb472-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=jdoe/lists/romanNumerals]</span>
-<span id="cb472-3"><a href="#cb472-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb472-4"><a href="#cb472-4" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</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>3. tres</span>
-<span id="cb472-7"><a href="#cb472-7" aria-hidden="true" tabindex="-1"></a>4. quattuor</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="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb479"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb479-1"><a href="#cb479-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{import=jdoe/lists}</span>
+<span id="cb479-2"><a href="#cb479-2" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=jdoe/lists/romanNumerals]</span>
+<span id="cb479-3"><a href="#cb479-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb479-4"><a href="#cb479-4" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb479-5"><a href="#cb479-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb479-6"><a href="#cb479-6" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb479-7"><a href="#cb479-7" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
+<span id="cb479-8"><a href="#cb479-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb479-9"><a href="#cb479-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="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,</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=romanNumerals]</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>
+<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">\markdownSetup</span>{</span>
+<span id="cb480-2"><a href="#cb480-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
+<span id="cb480-3"><a href="#cb480-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals,</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>
+<span id="cb480-6"><a href="#cb480-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=romanNumerals]</span>
+<span id="cb480-7"><a href="#cb480-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb480-8"><a href="#cb480-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb480-9"><a href="#cb480-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb480-10"><a href="#cb480-10" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb480-11"><a href="#cb480-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</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="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="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/lists = romanNumerals as roman,</span>
-<span id="cb474-4"><a href="#cb474-4" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb474-5"><a href="#cb474-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb474-6"><a href="#cb474-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=roman]</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>The following ordered list will be preceded by roman numerals:</span>
-<span id="cb474-9"><a href="#cb474-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb474-10"><a href="#cb474-10" aria-hidden="true" tabindex="-1"></a>3. tres</span>
-<span id="cb474-11"><a href="#cb474-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</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 class="kw">\end</span>{<span class="ex">markdown</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb481"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb481-1"><a href="#cb481-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb481-2"><a href="#cb481-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
+<span id="cb481-3"><a href="#cb481-3" aria-hidden="true" tabindex="-1"></a> jdoe/lists = romanNumerals as roman,</span>
+<span id="cb481-4"><a href="#cb481-4" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb481-5"><a href="#cb481-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb481-6"><a href="#cb481-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[snippet=roman]</span>
+<span id="cb481-7"><a href="#cb481-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb481-8"><a href="#cb481-8" aria-hidden="true" tabindex="-1"></a>The following ordered list will be preceded by roman numerals:</span>
+<span id="cb481-9"><a href="#cb481-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb481-10"><a href="#cb481-10" aria-hidden="true" tabindex="-1"></a>3. tres</span>
+<span id="cb481-11"><a href="#cb481-11" aria-hidden="true" tabindex="-1"></a>4. quattuor</span>
+<span id="cb481-12"><a href="#cb481-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb481-13"><a href="#cb481-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="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> import = {</span>
-<span id="cb475-3"><a href="#cb475-3" aria-hidden="true" tabindex="-1"></a> jdoe/longpackagename/lists = {</span>
-<span id="cb475-4"><a href="#cb475-4" aria-hidden="true" tabindex="-1"></a> arabic as arabic1,</span>
-<span id="cb475-5"><a href="#cb475-5" aria-hidden="true" tabindex="-1"></a> roman,</span>
-<span id="cb475-6"><a href="#cb475-6" aria-hidden="true" tabindex="-1"></a> alphabetic,</span>
-<span id="cb475-7"><a href="#cb475-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb475-8"><a href="#cb475-8" aria-hidden="true" tabindex="-1"></a> jdoe/anotherlongpackagename/lists = {</span>
-<span id="cb475-9"><a href="#cb475-9" aria-hidden="true" tabindex="-1"></a> arabic as arabic2,</span>
-<span id="cb475-10"><a href="#cb475-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb475-11"><a href="#cb475-11" aria-hidden="true" tabindex="-1"></a> jdoe/yetanotherlongpackagename,</span>
-<span id="cb475-12"><a href="#cb475-12" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb475-13"><a href="#cb475-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
+<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">\markdownSetup</span>{</span>
+<span id="cb482-2"><a href="#cb482-2" aria-hidden="true" tabindex="-1"></a> import = {</span>
+<span id="cb482-3"><a href="#cb482-3" aria-hidden="true" tabindex="-1"></a> jdoe/longpackagename/lists = {</span>
+<span id="cb482-4"><a href="#cb482-4" aria-hidden="true" tabindex="-1"></a> arabic as arabic1,</span>
+<span id="cb482-5"><a href="#cb482-5" aria-hidden="true" tabindex="-1"></a> roman,</span>
+<span id="cb482-6"><a href="#cb482-6" aria-hidden="true" tabindex="-1"></a> alphabetic,</span>
+<span id="cb482-7"><a href="#cb482-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb482-8"><a href="#cb482-8" aria-hidden="true" tabindex="-1"></a> jdoe/anotherlongpackagename/lists = {</span>
+<span id="cb482-9"><a href="#cb482-9" aria-hidden="true" tabindex="-1"></a> arabic as arabic2,</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> jdoe/yetanotherlongpackagename,</span>
+<span id="cb482-12"><a href="#cb482-12" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb482-13"><a href="#cb482-13" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<h3 data-number="2.2.3" id="latex-1"><span
+class="header-section-number">2.2.3</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.5.1"
+<h4 data-number="2.2.3.1"
id="setting-lua-and-plain-tex-options-from-latex"><span
-class="header-section-number">2.2.5.1</span> Setting Lua and plain <span
+class="header-section-number">2.2.3.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
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
+the <code><strong>taskLists</strong></code> 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="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> taskLists = true,</span>
-<span id="cb476-3"><a href="#cb476-3" aria-hidden="true" tabindex="-1"></a>}</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="fu">\markdownSetup</span>{</span>
+<span id="cb483-2"><a href="#cb483-2" aria-hidden="true" tabindex="-1"></a> taskLists = true,</span>
+<span id="cb483-3"><a href="#cb483-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>\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
+<code>helper-script.lua</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="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">\markdownSetup</span>{</span>
-<span id="cb477-2"><a href="#cb477-2" aria-hidden="true" tabindex="-1"></a> inputTempFileName = temporary-input.md,</span>
-<span id="cb477-3"><a href="#cb477-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>
+<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">\markdownSetup</span>{</span>
+<span id="cb484-2"><a href="#cb484-2" aria-hidden="true" tabindex="-1"></a> inputTempFileName = temporary-input.md,</span>
+<span id="cb484-3"><a href="#cb484-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<h4 data-number="2.2.3.2" id="latexthemes"><span
+class="header-section-number">2.2.3.2</span> Themes</h4>
<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
+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>
@@ -8318,15 +8406,15 @@ 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
+<code>markdownLoadPlainTeXTheme</code> macro.</p>
+<p>For example, to load themes named <code>witiko/example/foo</code> and
+<code>witiko/example/bar</code>, you would use the following code in the
preamble of your document:</p>
-<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">\usepackage</span>[</span>
-<span id="cb478-2"><a href="#cb478-2" aria-hidden="true" tabindex="-1"></a> import=witiko/beamer/MU,</span>
-<span id="cb478-3"><a href="#cb478-3" aria-hidden="true" tabindex="-1"></a> import=witiko/dot,</span>
-<span id="cb478-4"><a href="#cb478-4" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</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="bu">\usepackage</span>[</span>
+<span id="cb485-2"><a href="#cb485-2" aria-hidden="true" tabindex="-1"></a> import=witiko/example/foo,</span>
+<span id="cb485-3"><a href="#cb485-3" aria-hidden="true" tabindex="-1"></a> import=witiko/example/bar,</span>
+<span id="cb485-4"><a href="#cb485-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
@@ -8334,111 +8422,7 @@ class="latex">L<sup>a</sup>T<sub>e</sub>X</span> document.</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>
-<p>A theme that typesets fenced code blocks with the <code>dot …</code>
-infostring as images of directed graphs rendered by the Graphviz tools.
-The right tail of the infostring is used as the image title. The theme
-requires a Unix-like operating system with GNU Diffutils and Graphviz
-installed. The theme also requires shell access unless the
-<strong><code>frozenCache</code></strong> plain <span
-class="tex">T<sub>e</sub>X</span> option is enabled.</p>
-</dd>
-</dl>
-<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="cb479"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb479-1"><a href="#cb479-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb479-2"><a href="#cb479-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/dot]{<span class="ex">markdown</span>}</span>
-<span id="cb479-3"><a href="#cb479-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\setkeys</span>{Gin}{</span>
-<span id="cb479-4"><a href="#cb479-4" aria-hidden="true" tabindex="-1"></a> width=<span class="fu">\columnwidth</span>,</span>
-<span id="cb479-5"><a href="#cb479-5" aria-hidden="true" tabindex="-1"></a> height=0.65<span class="fu">\paperheight</span>,</span>
-<span id="cb479-6"><a href="#cb479-6" aria-hidden="true" tabindex="-1"></a> keepaspectratio}</span>
-<span id="cb479-7"><a href="#cb479-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb479-8"><a href="#cb479-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb479-9"><a href="#cb479-9" aria-hidden="true" tabindex="-1"></a>``` dot Various formats of mathemathical formulae</span>
-<span id="cb479-10"><a href="#cb479-10" aria-hidden="true" tabindex="-1"></a>digraph tree {</span>
-<span id="cb479-11"><a href="#cb479-11" aria-hidden="true" tabindex="-1"></a> margin = 0;</span>
-<span id="cb479-12"><a href="#cb479-12" aria-hidden="true" tabindex="-1"></a> rankdir = &quot;LR&quot;;</span>
-<span id="cb479-13"><a href="#cb479-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb479-14"><a href="#cb479-14" aria-hidden="true" tabindex="-1"></a> latex -&gt; pmml;</span>
-<span id="cb479-15"><a href="#cb479-15" aria-hidden="true" tabindex="-1"></a> latex -&gt; cmml;</span>
-<span id="cb479-16"><a href="#cb479-16" aria-hidden="true" tabindex="-1"></a> pmml -&gt; slt;</span>
-<span id="cb479-17"><a href="#cb479-17" aria-hidden="true" tabindex="-1"></a> cmml -&gt; opt;</span>
-<span id="cb479-18"><a href="#cb479-18" aria-hidden="true" tabindex="-1"></a> cmml -&gt; prefix;</span>
-<span id="cb479-19"><a href="#cb479-19" aria-hidden="true" tabindex="-1"></a> cmml -&gt; infix;</span>
-<span id="cb479-20"><a href="#cb479-20" aria-hidden="true" tabindex="-1"></a> pmml -&gt; mterms [style=dashed];</span>
-<span id="cb479-21"><a href="#cb479-21" aria-hidden="true" tabindex="-1"></a> cmml -&gt; mterms;</span>
-<span id="cb479-22"><a href="#cb479-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb479-23"><a href="#cb479-23" aria-hidden="true" tabindex="-1"></a> latex [label = &quot;LaTeX&quot;];</span>
-<span id="cb479-24"><a href="#cb479-24" aria-hidden="true" tabindex="-1"></a> pmml [label = &quot;Presentation MathML&quot;];</span>
-<span id="cb479-25"><a href="#cb479-25" aria-hidden="true" tabindex="-1"></a> cmml [label = &quot;Content MathML&quot;];</span>
-<span id="cb479-26"><a href="#cb479-26" aria-hidden="true" tabindex="-1"></a> slt [label = &quot;Symbol Layout Tree&quot;];</span>
-<span id="cb479-27"><a href="#cb479-27" aria-hidden="true" tabindex="-1"></a> opt [label = &quot;Operator Tree&quot;];</span>
-<span id="cb479-28"><a href="#cb479-28" aria-hidden="true" tabindex="-1"></a> prefix [label = &quot;Prefix&quot;];</span>
-<span id="cb479-29"><a href="#cb479-29" aria-hidden="true" tabindex="-1"></a> infix [label = &quot;Infix&quot;];</span>
-<span id="cb479-30"><a href="#cb479-30" aria-hidden="true" tabindex="-1"></a> mterms [label = &quot;M-Terms&quot;];</span>
-<span id="cb479-31"><a href="#cb479-31" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb479-32"><a href="#cb479-32" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb479-33"><a href="#cb479-33" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb479-34"><a href="#cb479-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="cb480"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb480-1"><a href="#cb480-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>
-<blockquote>
-<p>NOVOTNÝ, Vít, Petr SOJKA, Michal ŠTEFÁNIK and Dávid LUPTÁK. Three is
-Better than One: Ensembling Math Information Retrieval Systems. <em>CEUR
-Workshop Proceedings</em>. Thessaloniki, Greece: M. Jeusfeld c/o
-Redaktion Sun SITE, Informatik V, RWTH Aachen., 2020, vol. 2020, No
-2696, p. 1-30. ISSN 1613-0073. <a
-href="http://ceur-ws.org/Vol-2696/paper_235.pdf"
-class="uri">http://ceur-ws.org/Vol-2696/paper_235.pdf</a></p>
-</blockquote>
-<dl>
-<dt><strong><code>witiko/graphicx/http</code></strong></dt>
-<dd>
-<p>A theme that adds support for downloading images whose URL has the
-http or https protocol. The theme requires the
-<strong><code>catchfile</code></strong> <span
-class="latex">L<sup>a</sup>T<sub>e</sub>X</span> package and a Unix-like
-operating system with GNU Coreutils <code>md5sum</code> and either GNU
-Wget or cURL installed. The theme also requires shell access unless the
-<strong><code>frozenCache</code></strong> plain <span
-class="tex">T<sub>e</sub>X</span> option is enabled.</p>
-</dd>
-</dl>
-<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="cb481"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb481-1"><a href="#cb481-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb481-2"><a href="#cb481-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[import=witiko/graphicx/http]{<span class="ex">markdown</span>}</span>
-<span id="cb481-3"><a href="#cb481-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb481-4"><a href="#cb481-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb481-5"><a href="#cb481-5" aria-hidden="true" tabindex="-1"></a>![img](https://github.com/witiko/markdown/raw/main/markdown.png</span>
-<span id="cb481-6"><a href="#cb481-6" aria-hidden="true" tabindex="-1"></a> &quot;The banner of the Markdown package&quot;)</span>
-<span id="cb481-7"><a href="#cb481-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb481-8"><a href="#cb481-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="cb482"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb482-1"><a href="#cb482-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"
-title="The banner of the Markdown package" alt="img" />
-<figcaption aria-hidden="true">img</figcaption>
-</figure>
-</blockquote>
-<dl>
-<dt><strong><code>witiko/markdown/defaults</code></strong></dt>
+<dt><code><strong>witiko/markdown/defaults</strong></code></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
@@ -8446,12 +8430,15 @@ 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>
+<h3 data-number="2.2.4" id="context-1"><span
+class="header-section-number">2.2.4</span> Con<span
+class="tex">T<sub>e</sub>X</span>t</h3>
+<h4 data-number="2.2.4.1" id="contextthemes"><span
+class="header-section-number">2.2.4.1</span> Themes</h4>
<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>⟩
+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
@@ -8471,16 +8458,16 @@ 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>
+<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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb483-2"><a href="#cb483-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[import=witiko/tilde]</span></code></pre></div>
+<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">\usemodule</span>[t][markdown]</span>
+<span id="cb486-2"><a href="#cb486-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>
+<dt><code><strong>witiko/markdown/defaults</strong></code></dt>
<dd>
<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
@@ -8507,26 +8494,26 @@ class="header-section-number">2.3.1.1</span> Attribute Renderers</h4>
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>
+<li><code><strong>autoIdentifiers</strong></code></li>
+<li><code><strong>fencedCodeAttributes</strong></code></li>
+<li><code><strong>gfmAutoIdentifiers</strong></code></li>
+<li><code><strong>headerAttributes</strong></code></li>
+<li><code><strong>inlineCodeAttributes</strong></code></li>
+<li><code><strong>linkAttributes</strong></code></li>
</ul>
-<p><code>\markdownRendererAttributeIdentifier</code> represents the
+<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 attributes). The macro
receives a single attribute that corresponds to the
⟨<em>identifier</em>⟩.</p>
-<p><code>\markdownRendererAttributeClassName</code> represents the
+<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 attributes). The macro
receives a single attribute that corresponds to the ⟨<em>class
name</em>⟩.</p>
-<p><code>\markdownRendererAttributeKeyValue</code> represents a HTML
+<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
@@ -8535,42 +8522,42 @@ attributes that correspond to the ⟨<em>key</em>⟩ and 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb484-2"><a href="#cb484-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[headerAttributes, underscores=false]{<span class="ex">markdown</span>}</span>
-<span id="cb484-3"><a href="#cb484-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb484-4"><a href="#cb484-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb484-5"><a href="#cb484-5" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {<span class="co">%</span></span>
-<span id="cb484-6"><a href="#cb484-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb484-7"><a href="#cb484-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Identifier: #1)}</span>
-<span id="cb484-8"><a href="#cb484-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb484-9"><a href="#cb484-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb484-10"><a href="#cb484-10" aria-hidden="true" tabindex="-1"></a> attributeClassName = {<span class="co">%</span></span>
-<span id="cb484-11"><a href="#cb484-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb484-12"><a href="#cb484-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Class name: #1)}</span>
-<span id="cb484-13"><a href="#cb484-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb484-14"><a href="#cb484-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb484-15"><a href="#cb484-15" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
-<span id="cb484-16"><a href="#cb484-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb484-17"><a href="#cb484-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Key: #1, Value: #2)}</span>
-<span id="cb484-18"><a href="#cb484-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb484-19"><a href="#cb484-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb484-20"><a href="#cb484-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb484-21"><a href="#cb484-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb484-22"><a href="#cb484-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb484-23"><a href="#cb484-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</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># First top-level heading {jane=doe}</span>
-<span id="cb484-26"><a href="#cb484-26" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-27"><a href="#cb484-27" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</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># Second top-level heading {.class_name}</span>
-<span id="cb484-30"><a href="#cb484-30" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb484-31"><a href="#cb484-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb484-32"><a href="#cb484-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="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>[headerAttributes, underscores=false]{<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> attributeIdentifier = {<span class="co">%</span></span>
+<span id="cb487-6"><a href="#cb487-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb487-7"><a href="#cb487-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Identifier: #1)}</span>
+<span id="cb487-8"><a href="#cb487-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb487-9"><a href="#cb487-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb487-10"><a href="#cb487-10" aria-hidden="true" tabindex="-1"></a> attributeClassName = {<span class="co">%</span></span>
+<span id="cb487-11"><a href="#cb487-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb487-12"><a href="#cb487-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Class name: #1)}</span>
+<span id="cb487-13"><a href="#cb487-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb487-14"><a href="#cb487-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb487-15"><a href="#cb487-15" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
+<span id="cb487-16"><a href="#cb487-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb487-17"><a href="#cb487-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(Key: #1, Value: #2)}</span>
+<span id="cb487-18"><a href="#cb487-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb487-19"><a href="#cb487-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb487-20"><a href="#cb487-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb487-21"><a href="#cb487-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb487-22"><a href="#cb487-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb487-23"><a href="#cb487-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb487-24"><a href="#cb487-24" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb487-25"><a href="#cb487-25" aria-hidden="true" tabindex="-1"></a># First top-level heading {jane=doe}</span>
+<span id="cb487-26"><a href="#cb487-26" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb487-27"><a href="#cb487-27" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span>
+<span id="cb487-28"><a href="#cb487-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb487-29"><a href="#cb487-29" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span>
+<span id="cb487-30"><a href="#cb487-30" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb487-31"><a href="#cb487-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb487-32"><a href="#cb487-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="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">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>
@@ -8583,39 +8570,39 @@ contain the following text:</p>
</blockquote>
<h4 data-number="2.3.1.2" id="block-quote-renderers"><span
class="header-section-number">2.3.1.2</span> Block Quote Renderers</h4>
-<p>The <code>\markdownRendererBlockQuoteBegin</code> macro represents
-the beginning of a block quote. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererBlockQuoteEnd</code> macro represents the
+<p>The <code>markdownRendererBlockQuoteBegin</code> macro represents 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-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="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\markdownRendererBlockQuoteBegin</span>{<span class="co">%</span></span>
-<span id="cb486-3"><a href="#cb486-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb486-4"><a href="#cb486-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
-<span id="cb486-5"><a href="#cb486-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\leftskip</span>=2<span class="fu">\parindent</span></span>
-<span id="cb486-6"><a href="#cb486-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span>
-<span id="cb486-7"><a href="#cb486-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb486-8"><a href="#cb486-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="co">%</span></span>
-<span id="cb486-9"><a href="#cb486-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb486-10"><a href="#cb486-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
-<span id="cb486-11"><a href="#cb486-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb486-12"><a href="#cb486-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb486-13"><a href="#cb486-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb486-14"><a href="#cb486-14" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
-<span id="cb486-15"><a href="#cb486-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb486-16"><a href="#cb486-16" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
-<span id="cb486-17"><a href="#cb486-17" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
-<span id="cb486-18"><a href="#cb486-18" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
-<span id="cb486-19"><a href="#cb486-19" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
-<span id="cb486-20"><a href="#cb486-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb486-21"><a href="#cb486-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb489-2"><a href="#cb489-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="co">%</span></span>
+<span id="cb489-3"><a href="#cb489-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb489-4"><a href="#cb489-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
+<span id="cb489-5"><a href="#cb489-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\leftskip</span>=2<span class="fu">\parindent</span></span>
+<span id="cb489-6"><a href="#cb489-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</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><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="co">%</span></span>
+<span id="cb489-9"><a href="#cb489-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb489-10"><a href="#cb489-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\vskip\parindent</span></span>
+<span id="cb489-11"><a href="#cb489-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb489-12"><a href="#cb489-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb489-13"><a href="#cb489-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb489-14"><a href="#cb489-14" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
+<span id="cb489-15"><a href="#cb489-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb489-16"><a href="#cb489-16" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
+<span id="cb489-17"><a href="#cb489-17" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
+<span id="cb489-18"><a href="#cb489-18" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
+<span id="cb489-19"><a href="#cb489-19" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
+<span id="cb489-20"><a href="#cb489-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb489-21"><a href="#cb489-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="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="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">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>
@@ -8630,28 +8617,28 @@ disasters the sun, the moon, and the stars […]</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="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>{<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> blockQuoteBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span>
-<span id="cb488-6"><a href="#cb488-6" aria-hidden="true" tabindex="-1"></a> blockQuoteEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</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>
-<span id="cb488-9"><a href="#cb488-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb488-10"><a href="#cb488-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb488-11"><a href="#cb488-11" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
-<span id="cb488-12"><a href="#cb488-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb488-13"><a href="#cb488-13" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
-<span id="cb488-14"><a href="#cb488-14" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
-<span id="cb488-15"><a href="#cb488-15" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
-<span id="cb488-16"><a href="#cb488-16" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
-<span id="cb488-17"><a href="#cb488-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb488-18"><a href="#cb488-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="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>{<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> blockQuoteBegin = {<span class="kw">\begin</span>{<span class="ex">quote</span>}},</span>
+<span id="cb491-6"><a href="#cb491-6" aria-hidden="true" tabindex="-1"></a> blockQuoteEnd = {<span class="kw">\end</span>{<span class="ex">quote</span>}},</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>A quote from William Shakespeare&#39;s King Lear:</span>
+<span id="cb491-12"><a href="#cb491-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb491-13"><a href="#cb491-13" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
+<span id="cb491-14"><a href="#cb491-14" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
+<span id="cb491-15"><a href="#cb491-15" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
+<span id="cb491-16"><a href="#cb491-16" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
+<span id="cb491-17"><a href="#cb491-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb491-18"><a href="#cb491-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="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="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>
@@ -8666,23 +8653,23 @@ disasters the sun, the moon, and the stars […]</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="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">\def\markdownRendererBlockQuoteBegin</span>{<span class="fu">\startquotation</span>}</span>
-<span id="cb490-3"><a href="#cb490-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="fu">\stopquotation</span>}</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>A quote from William Shakespeare&#39;s King Lear:</span>
-<span id="cb490-7"><a href="#cb490-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb490-8"><a href="#cb490-8" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
-<span id="cb490-9"><a href="#cb490-9" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
-<span id="cb490-10"><a href="#cb490-10" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
-<span id="cb490-11"><a href="#cb490-11" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
-<span id="cb490-12"><a href="#cb490-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb490-13"><a href="#cb490-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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">\usemodule</span>[t][markdown]</span>
+<span id="cb493-2"><a href="#cb493-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteBegin</span>{<span class="fu">\startquotation</span>}</span>
+<span id="cb493-3"><a href="#cb493-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererBlockQuoteEnd</span>{<span class="fu">\stopquotation</span>}</span>
+<span id="cb493-4"><a href="#cb493-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb493-5"><a href="#cb493-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb493-6"><a href="#cb493-6" aria-hidden="true" tabindex="-1"></a>A quote from William Shakespeare&#39;s King Lear:</span>
+<span id="cb493-7"><a href="#cb493-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb493-8"><a href="#cb493-8" aria-hidden="true" tabindex="-1"></a>&gt; This is the excellent foppery of the world that when we are</span>
+<span id="cb493-9"><a href="#cb493-9" aria-hidden="true" tabindex="-1"></a>&gt; sick in fortune---often the surfeit of our own behavior---we</span>
+<span id="cb493-10"><a href="#cb493-10" aria-hidden="true" tabindex="-1"></a>&gt; make guilty of our disasters the sun, the moon, and the</span>
+<span id="cb493-11"><a href="#cb493-11" aria-hidden="true" tabindex="-1"></a>&gt; stars [...]</span>
+<span id="cb493-12"><a href="#cb493-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb493-13"><a href="#cb493-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="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> <span class="at">--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">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>
@@ -8698,35 +8685,34 @@ id="bracketed-spans-attribute-context-renderers"><span
class="header-section-number">2.3.1.3</span> Bracketed Spans Attribute
Context Renderers</h4>
<p>The following macros are only produced, when the
-<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 a context in which the
-attributes of an inline bracketed span apply. The macros receive no
-arguments.</p>
+<code><strong>bracketedSpans</strong></code> option is enabled.</p>
+<p>The <code>markdownRendererBracketedSpanAttributeContextBegin</code>
+and <code>markdownRendererBracketedSpanAttributeContextEnd</code> 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-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb492-2"><a href="#cb492-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[bracketedSpans]{<span class="ex">markdown</span>}</span>
-<span id="cb492-3"><a href="#cb492-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb492-4"><a href="#cb492-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb492-5"><a href="#cb492-5" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {(},</span>
-<span id="cb492-6"><a href="#cb492-6" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {)},</span>
-<span id="cb492-7"><a href="#cb492-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb492-8"><a href="#cb492-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb492-9"><a href="#cb492-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb492-10"><a href="#cb492-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb492-11"><a href="#cb492-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb492-12"><a href="#cb492-12" aria-hidden="true" tabindex="-1"></a>[foo [bar]{#identifier}]{key=value} [baz]{.class_name}</span>
-<span id="cb492-13"><a href="#cb492-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb492-14"><a href="#cb492-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb492-15"><a href="#cb492-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="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>[bracketedSpans]{<span class="ex">markdown</span>}</span>
+<span id="cb495-3"><a href="#cb495-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb495-4"><a href="#cb495-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb495-5"><a href="#cb495-5" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextBegin = {(},</span>
+<span id="cb495-6"><a href="#cb495-6" aria-hidden="true" tabindex="-1"></a> bracketedSpanAttributeContextEnd = {)},</span>
+<span id="cb495-7"><a href="#cb495-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb495-8"><a href="#cb495-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb495-9"><a href="#cb495-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb495-10"><a href="#cb495-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</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>[foo [bar]{#identifier}]{key=value} [baz]{.class_name}</span>
+<span id="cb495-13"><a href="#cb495-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb495-14"><a href="#cb495-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb495-15"><a href="#cb495-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="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">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>
@@ -8734,77 +8720,77 @@ contain the following text:</p>
</blockquote>
<h4 data-number="2.3.1.4" id="bullet-list-renderers"><span
class="header-section-number">2.3.1.4</span> Bullet List Renderers</h4>
-<p>The <code>\markdownRendererUlBegin</code> macro represents the
+<p>The <code>markdownRendererUlBegin</code> macro represents the
beginning of a bulleted list that contains an item with several
paragraphs of text (the list is not tight). The macro receives no
arguments.</p>
-<p>The <code>\markdownRendererUlBeginTight</code> macro represents the
+<p>The <code>markdownRendererUlBeginTight</code> macro represents the
beginning 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
+produced, when the <code><strong>tightLists</strong></code> option is
disabled. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererUlItem</code> macro represents an item in
-a bulleted list. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererUlItemEnd</code> macro represents the end
+<p>The <code>markdownRendererUlItem</code> macro represents an item in a
+bulleted list. The macro receives no arguments.</p>
+<p>The <code>markdownRendererUlItemEnd</code> macro represents the end
of an item in a bulleted list. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererUlEnd</code> macro represents the end of a
+<p>The <code>markdownRendererUlEnd</code> macro represents the end of a
bulleted list that contains an item with several paragraphs of text (the
list is not tight). The macro receives no arguments.</p>
-<p>The <code>\markdownRendererUlEndTight</code> macro represents the end
+<p>The <code>markdownRendererUlEndTight</code> macro represents the end
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
+<code><strong>tightLists</strong></code> option is disabled. The macro
receives no arguments.</p>
<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="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="fu">\input</span> markdown</span>
-<span id="cb494-2"><a href="#cb494-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
-<span id="cb494-3"><a href="#cb494-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-4"><a href="#cb494-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb494-5"><a href="#cb494-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
-<span id="cb494-6"><a href="#cb494-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb494-7"><a href="#cb494-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></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="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
-<span id="cb494-10"><a href="#cb494-10" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb494-11"><a href="#cb494-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb494-12"><a href="#cb494-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
-<span id="cb494-13"><a href="#cb494-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
-<span id="cb494-14"><a href="#cb494-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-15"><a href="#cb494-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb494-16"><a href="#cb494-16" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb494-17"><a href="#cb494-17" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-18"><a href="#cb494-18" aria-hidden="true" tabindex="-1"></a>- the first item</span>
-<span id="cb494-19"><a href="#cb494-19" aria-hidden="true" tabindex="-1"></a>- the second item</span>
-<span id="cb494-20"><a href="#cb494-20" aria-hidden="true" tabindex="-1"></a>- the third item</span>
-<span id="cb494-21"><a href="#cb494-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb494-22"><a href="#cb494-22" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-23"><a href="#cb494-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb494-24"><a href="#cb494-24" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb494-25"><a href="#cb494-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="cb494-26"><a href="#cb494-26" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb494-27"><a href="#cb494-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{}</span>
-<span id="cb494-28"><a href="#cb494-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{--<span class="fu">\kern</span> 0.5em}</span>
-<span id="cb494-29"><a href="#cb494-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.<span class="fu">\par</span>}</span>
-<span id="cb494-30"><a href="#cb494-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{}</span>
-<span id="cb494-31"><a href="#cb494-31" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-32"><a href="#cb494-32" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb494-33"><a href="#cb494-33" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb494-34"><a href="#cb494-34" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-35"><a href="#cb494-35" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
-<span id="cb494-36"><a href="#cb494-36" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-37"><a href="#cb494-37" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
-<span id="cb494-38"><a href="#cb494-38" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-39"><a href="#cb494-39" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
-<span id="cb494-40"><a href="#cb494-40" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb494-41"><a href="#cb494-41" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb494-42"><a href="#cb494-42" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb497-2"><a href="#cb497-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
+<span id="cb497-3"><a href="#cb497-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-4"><a href="#cb497-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb497-5"><a href="#cb497-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
+<span id="cb497-6"><a href="#cb497-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</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>
+<span id="cb497-9"><a href="#cb497-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
+<span id="cb497-10"><a href="#cb497-10" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb497-11"><a href="#cb497-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb497-12"><a href="#cb497-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
+<span id="cb497-13"><a href="#cb497-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
+<span id="cb497-14"><a href="#cb497-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-15"><a href="#cb497-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb497-16"><a href="#cb497-16" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb497-17"><a href="#cb497-17" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-18"><a href="#cb497-18" aria-hidden="true" tabindex="-1"></a>- the first item</span>
+<span id="cb497-19"><a href="#cb497-19" aria-hidden="true" tabindex="-1"></a>- the second item</span>
+<span id="cb497-20"><a href="#cb497-20" aria-hidden="true" tabindex="-1"></a>- the third item</span>
+<span id="cb497-21"><a href="#cb497-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb497-22"><a href="#cb497-22" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-23"><a href="#cb497-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb497-24"><a href="#cb497-24" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb497-25"><a href="#cb497-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="cb497-26"><a href="#cb497-26" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb497-27"><a href="#cb497-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{}</span>
+<span id="cb497-28"><a href="#cb497-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{--<span class="fu">\kern</span> 0.5em}</span>
+<span id="cb497-29"><a href="#cb497-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.<span class="fu">\par</span>}</span>
+<span id="cb497-30"><a href="#cb497-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{}</span>
+<span id="cb497-31"><a href="#cb497-31" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-32"><a href="#cb497-32" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb497-33"><a href="#cb497-33" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb497-34"><a href="#cb497-34" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-35"><a href="#cb497-35" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
+<span id="cb497-36"><a href="#cb497-36" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-37"><a href="#cb497-37" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
+<span id="cb497-38"><a href="#cb497-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-39"><a href="#cb497-39" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
+<span id="cb497-40"><a href="#cb497-40" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb497-41"><a href="#cb497-41" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb497-42"><a href="#cb497-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="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">luatex</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">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>
@@ -8821,57 +8807,57 @@ item).</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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb496-2"><a href="#cb496-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[tightLists]{<span class="ex">markdown</span>}</span>
-<span id="cb496-3"><a href="#cb496-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb496-4"><a href="#cb496-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-5"><a href="#cb496-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
-<span id="cb496-6"><a href="#cb496-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb496-7"><a href="#cb496-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
-<span id="cb496-8"><a href="#cb496-8" aria-hidden="true" tabindex="-1"></a> ulBeginTight = { (},</span>
-<span id="cb496-9"><a href="#cb496-9" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="co">%</span></span>
-<span id="cb496-10"><a href="#cb496-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb496-11"><a href="#cb496-11" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb496-12"><a href="#cb496-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
-<span id="cb496-13"><a href="#cb496-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb496-14"><a href="#cb496-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb496-15"><a href="#cb496-15" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {},</span>
-<span id="cb496-16"><a href="#cb496-16" aria-hidden="true" tabindex="-1"></a> ulEndTight = {).},</span>
-<span id="cb496-17"><a href="#cb496-17" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb496-18"><a href="#cb496-18" aria-hidden="true" tabindex="-1"></a>]</span>
-<span id="cb496-19"><a href="#cb496-19" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb496-20"><a href="#cb496-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-21"><a href="#cb496-21" aria-hidden="true" tabindex="-1"></a>- the first item</span>
-<span id="cb496-22"><a href="#cb496-22" aria-hidden="true" tabindex="-1"></a>- the second item</span>
-<span id="cb496-23"><a href="#cb496-23" aria-hidden="true" tabindex="-1"></a>- the third item</span>
-<span id="cb496-24"><a href="#cb496-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb496-25"><a href="#cb496-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-26"><a href="#cb496-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
-<span id="cb496-27"><a href="#cb496-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb496-28"><a href="#cb496-28" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb496-29"><a href="#cb496-29" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb496-30"><a href="#cb496-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="cb496-31"><a href="#cb496-31" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb496-32"><a href="#cb496-32" aria-hidden="true" tabindex="-1"></a> ulBeginTight = {<span class="kw">\begin</span>{<span class="ex">itemize</span>}},</span>
-<span id="cb496-33"><a href="#cb496-33" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="fu">\item</span>},</span>
-<span id="cb496-34"><a href="#cb496-34" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {.},</span>
-<span id="cb496-35"><a href="#cb496-35" aria-hidden="true" tabindex="-1"></a> ulEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
-<span id="cb496-36"><a href="#cb496-36" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb496-37"><a href="#cb496-37" aria-hidden="true" tabindex="-1"></a>]</span>
-<span id="cb496-38"><a href="#cb496-38" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb496-39"><a href="#cb496-39" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-40"><a href="#cb496-40" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
-<span id="cb496-41"><a href="#cb496-41" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-42"><a href="#cb496-42" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
-<span id="cb496-43"><a href="#cb496-43" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-44"><a href="#cb496-44" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
-<span id="cb496-45"><a href="#cb496-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb496-46"><a href="#cb496-46" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb496-47"><a href="#cb496-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="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>[tightLists]{<span class="ex">markdown</span>}</span>
+<span id="cb499-3"><a href="#cb499-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb499-4"><a href="#cb499-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb499-5"><a href="#cb499-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb499-6"><a href="#cb499-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb499-7"><a href="#cb499-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
+<span id="cb499-8"><a href="#cb499-8" aria-hidden="true" tabindex="-1"></a> ulBeginTight = { (},</span>
+<span id="cb499-9"><a href="#cb499-9" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="co">%</span></span>
+<span id="cb499-10"><a href="#cb499-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb499-11"><a href="#cb499-11" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb499-12"><a href="#cb499-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
+<span id="cb499-13"><a href="#cb499-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb499-14"><a href="#cb499-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb499-15"><a href="#cb499-15" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {},</span>
+<span id="cb499-16"><a href="#cb499-16" aria-hidden="true" tabindex="-1"></a> ulEndTight = {).},</span>
+<span id="cb499-17"><a href="#cb499-17" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb499-18"><a href="#cb499-18" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb499-19"><a href="#cb499-19" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb499-20"><a href="#cb499-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb499-21"><a href="#cb499-21" aria-hidden="true" tabindex="-1"></a>- the first item</span>
+<span id="cb499-22"><a href="#cb499-22" aria-hidden="true" tabindex="-1"></a>- the second item</span>
+<span id="cb499-23"><a href="#cb499-23" aria-hidden="true" tabindex="-1"></a>- the third item</span>
+<span id="cb499-24"><a href="#cb499-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb499-25"><a href="#cb499-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb499-26"><a href="#cb499-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</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> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb499-29"><a href="#cb499-29" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb499-30"><a href="#cb499-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="cb499-31"><a href="#cb499-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb499-32"><a href="#cb499-32" aria-hidden="true" tabindex="-1"></a> ulBeginTight = {<span class="kw">\begin</span>{<span class="ex">itemize</span>}},</span>
+<span id="cb499-33"><a href="#cb499-33" aria-hidden="true" tabindex="-1"></a> ulItem = {<span class="fu">\item</span>},</span>
+<span id="cb499-34"><a href="#cb499-34" aria-hidden="true" tabindex="-1"></a> ulItemEnd = {.},</span>
+<span id="cb499-35"><a href="#cb499-35" aria-hidden="true" tabindex="-1"></a> ulEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
+<span id="cb499-36"><a href="#cb499-36" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb499-37"><a href="#cb499-37" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb499-38"><a href="#cb499-38" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb499-39"><a href="#cb499-39" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb499-40"><a href="#cb499-40" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
+<span id="cb499-41"><a href="#cb499-41" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb499-42"><a href="#cb499-42" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
+<span id="cb499-43"><a href="#cb499-43" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb499-44"><a href="#cb499-44" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
+<span id="cb499-45"><a href="#cb499-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb499-46"><a href="#cb499-46" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb499-47"><a href="#cb499-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="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">lualatex</span> document.tex</span></code></pre></div>
+<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>
@@ -8888,53 +8874,53 @@ item).</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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb498-2"><a href="#cb498-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[tightLists = yes]</span>
-<span id="cb498-3"><a href="#cb498-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb498-4"><a href="#cb498-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-5"><a href="#cb498-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb498-6"><a href="#cb498-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
-<span id="cb498-7"><a href="#cb498-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb498-8"><a href="#cb498-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
-<span id="cb498-9"><a href="#cb498-9" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb498-10"><a href="#cb498-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
-<span id="cb498-11"><a href="#cb498-11" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb498-12"><a href="#cb498-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb498-13"><a href="#cb498-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
-<span id="cb498-14"><a href="#cb498-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
-<span id="cb498-15"><a href="#cb498-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-16"><a href="#cb498-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb498-17"><a href="#cb498-17" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb498-18"><a href="#cb498-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-19"><a href="#cb498-19" aria-hidden="true" tabindex="-1"></a>- the first item</span>
-<span id="cb498-20"><a href="#cb498-20" aria-hidden="true" tabindex="-1"></a>- the second item</span>
-<span id="cb498-21"><a href="#cb498-21" aria-hidden="true" tabindex="-1"></a>- the third item</span>
-<span id="cb498-22"><a href="#cb498-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb498-23"><a href="#cb498-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-24"><a href="#cb498-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb498-25"><a href="#cb498-25" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb498-26"><a href="#cb498-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="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 class="fu">\def\markdownRendererUlBegin</span>{<span class="fu">\startitemize</span>}</span>
-<span id="cb498-29"><a href="#cb498-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="fu">\item</span>}</span>
-<span id="cb498-30"><a href="#cb498-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.}</span>
-<span id="cb498-31"><a href="#cb498-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{<span class="fu">\stopitemize</span>}</span>
-<span id="cb498-32"><a href="#cb498-32" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-33"><a href="#cb498-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb498-34"><a href="#cb498-34" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb498-35"><a href="#cb498-35" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-36"><a href="#cb498-36" aria-hidden="true" tabindex="-1"></a>- This is the first item</span>
-<span id="cb498-37"><a href="#cb498-37" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-38"><a href="#cb498-38" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
-<span id="cb498-39"><a href="#cb498-39" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-40"><a href="#cb498-40" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
-<span id="cb498-41"><a href="#cb498-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb498-42"><a href="#cb498-42" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb498-43"><a href="#cb498-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb501-2"><a href="#cb501-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[tightLists = yes]</span>
+<span id="cb501-3"><a href="#cb501-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb501-4"><a href="#cb501-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-5"><a href="#cb501-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb501-6"><a href="#cb501-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBeginTight</span>{ (}</span>
+<span id="cb501-7"><a href="#cb501-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb501-8"><a href="#cb501-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{<span class="co">%</span></span>
+<span id="cb501-9"><a href="#cb501-9" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb501-10"><a href="#cb501-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererUlItem</span>{, and }<span class="co">%</span></span>
+<span id="cb501-11"><a href="#cb501-11" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb501-12"><a href="#cb501-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb501-13"><a href="#cb501-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{}</span>
+<span id="cb501-14"><a href="#cb501-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEndTight</span>{).}</span>
+<span id="cb501-15"><a href="#cb501-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-16"><a href="#cb501-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb501-17"><a href="#cb501-17" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb501-18"><a href="#cb501-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-19"><a href="#cb501-19" aria-hidden="true" tabindex="-1"></a>- the first item</span>
+<span id="cb501-20"><a href="#cb501-20" aria-hidden="true" tabindex="-1"></a>- the second item</span>
+<span id="cb501-21"><a href="#cb501-21" aria-hidden="true" tabindex="-1"></a>- the third item</span>
+<span id="cb501-22"><a href="#cb501-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb501-23"><a href="#cb501-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-24"><a href="#cb501-24" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb501-25"><a href="#cb501-25" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb501-26"><a href="#cb501-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="cb501-27"><a href="#cb501-27" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb501-28"><a href="#cb501-28" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlBegin</span>{<span class="fu">\startitemize</span>}</span>
+<span id="cb501-29"><a href="#cb501-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItem</span>{<span class="fu">\item</span>}</span>
+<span id="cb501-30"><a href="#cb501-30" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlItemEnd</span>{.}</span>
+<span id="cb501-31"><a href="#cb501-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUlEnd</span>{<span class="fu">\stopitemize</span>}</span>
+<span id="cb501-32"><a href="#cb501-32" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-33"><a href="#cb501-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb501-34"><a href="#cb501-34" aria-hidden="true" tabindex="-1"></a>This is a loose list</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>- This is the first item</span>
+<span id="cb501-37"><a href="#cb501-37" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-38"><a href="#cb501-38" aria-hidden="true" tabindex="-1"></a>- This is the second item</span>
+<span id="cb501-39"><a href="#cb501-39" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-40"><a href="#cb501-40" aria-hidden="true" tabindex="-1"></a>- This is the third item</span>
+<span id="cb501-41"><a href="#cb501-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb501-42"><a href="#cb501-42" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb501-43"><a href="#cb501-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -8949,9 +8935,9 @@ item).</p>
</blockquote>
<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
+<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
+when the <code><strong>citations</strong></code> 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>
@@ -8962,50 +8948,50 @@ author’s name is to be suppressed, or <code>+</code> otherwise.</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="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>[citations]{<span class="ex">markdown</span>}</span>
-<span id="cb500-3"><a href="#cb500-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
-<span id="cb500-4"><a href="#cb500-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
-<span id="cb500-5"><a href="#cb500-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
-<span id="cb500-6"><a href="#cb500-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb500-7"><a href="#cb500-7" aria-hidden="true" tabindex="-1"></a> a parenthesized citation <span class="fu">\emph</span>{#4}</span>
-<span id="cb500-8"><a href="#cb500-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb500-9"><a href="#cb500-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
-<span id="cb500-10"><a href="#cb500-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb500-11"><a href="#cb500-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
-<span id="cb500-12"><a href="#cb500-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb500-13"><a href="#cb500-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb500-14"><a href="#cb500-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
-<span id="cb500-15"><a href="#cb500-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb500-16"><a href="#cb500-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="cb500-17"><a href="#cb500-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb500-18"><a href="#cb500-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb500-19"><a href="#cb500-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
-<span id="cb500-20"><a href="#cb500-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
-<span id="cb500-21"><a href="#cb500-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
-<span id="cb500-22"><a href="#cb500-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb500-23"><a href="#cb500-23" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb500-24"><a href="#cb500-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
-<span id="cb500-25"><a href="#cb500-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
-<span id="cb500-26"><a href="#cb500-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb500-27"><a href="#cb500-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb500-28"><a href="#cb500-28" aria-hidden="true" tabindex="-1"></a> cite = {<span class="co">%</span></span>
-<span id="cb500-29"><a href="#cb500-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
-<span id="cb500-30"><a href="#cb500-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
-<span id="cb500-31"><a href="#cb500-31" aria-hidden="true" tabindex="-1"></a> This is</span>
-<span id="cb500-32"><a href="#cb500-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></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> },</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 class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb500-37"><a href="#cb500-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb500-38"><a href="#cb500-38" aria-hidden="true" tabindex="-1"></a>[see @abrahams90, pp. 12; @eijkhout91, pp. 34]</span>
-<span id="cb500-39"><a href="#cb500-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb500-40"><a href="#cb500-40" 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>[citations]{<span class="ex">markdown</span>}</span>
+<span id="cb503-3"><a href="#cb503-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
+<span id="cb503-4"><a href="#cb503-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
+<span id="cb503-5"><a href="#cb503-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
+<span id="cb503-6"><a href="#cb503-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb503-7"><a href="#cb503-7" aria-hidden="true" tabindex="-1"></a> a parenthesized citation <span class="fu">\emph</span>{#4}</span>
+<span id="cb503-8"><a href="#cb503-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb503-9"><a href="#cb503-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
+<span id="cb503-10"><a href="#cb503-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb503-11"><a href="#cb503-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
+<span id="cb503-12"><a href="#cb503-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb503-13"><a href="#cb503-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb503-14"><a href="#cb503-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
+<span id="cb503-15"><a href="#cb503-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb503-16"><a href="#cb503-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="cb503-17"><a href="#cb503-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb503-18"><a href="#cb503-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb503-19"><a href="#cb503-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
+<span id="cb503-20"><a href="#cb503-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
+<span id="cb503-21"><a href="#cb503-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
+<span id="cb503-22"><a href="#cb503-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb503-23"><a href="#cb503-23" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb503-24"><a href="#cb503-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
+<span id="cb503-25"><a href="#cb503-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
+<span id="cb503-26"><a href="#cb503-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb503-27"><a href="#cb503-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb503-28"><a href="#cb503-28" aria-hidden="true" tabindex="-1"></a> cite = {<span class="co">%</span></span>
+<span id="cb503-29"><a href="#cb503-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
+<span id="cb503-30"><a href="#cb503-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
+<span id="cb503-31"><a href="#cb503-31" aria-hidden="true" tabindex="-1"></a> This is</span>
+<span id="cb503-32"><a href="#cb503-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span>
+<span id="cb503-33"><a href="#cb503-33" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb503-34"><a href="#cb503-34" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb503-35"><a href="#cb503-35" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb503-36"><a href="#cb503-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb503-37"><a href="#cb503-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb503-38"><a href="#cb503-38" aria-hidden="true" tabindex="-1"></a>[see @abrahams90, pp. 12; @eijkhout91, pp. 34]</span>
+<span id="cb503-39"><a href="#cb503-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb503-40"><a href="#cb503-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="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="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:</p>
<blockquote>
@@ -9013,59 +8999,59 @@ contain the following text:</p>
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
+<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
+the <code><strong>citations</strong></code> option is enabled. The macro
receives parameters in the same format as the
-<code>\markdownRendererCite</code> macro.</p>
+<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="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>[citations]{<span class="ex">markdown</span>}</span>
-<span id="cb502-3"><a href="#cb502-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
-<span id="cb502-4"><a href="#cb502-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
-<span id="cb502-5"><a href="#cb502-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
-<span id="cb502-6"><a href="#cb502-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb502-7"><a href="#cb502-7" aria-hidden="true" tabindex="-1"></a> a text citation <span class="fu">\emph</span>{#4}</span>
-<span id="cb502-8"><a href="#cb502-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb502-9"><a href="#cb502-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
-<span id="cb502-10"><a href="#cb502-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb502-11"><a href="#cb502-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
-<span id="cb502-12"><a href="#cb502-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb502-13"><a href="#cb502-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb502-14"><a href="#cb502-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
-<span id="cb502-15"><a href="#cb502-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
-<span id="cb502-16"><a href="#cb502-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="cb502-17"><a href="#cb502-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb502-18"><a href="#cb502-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb502-19"><a href="#cb502-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
-<span id="cb502-20"><a href="#cb502-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
-<span id="cb502-21"><a href="#cb502-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
-<span id="cb502-22"><a href="#cb502-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb502-23"><a href="#cb502-23" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb502-24"><a href="#cb502-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
-<span id="cb502-25"><a href="#cb502-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
-<span id="cb502-26"><a href="#cb502-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb502-27"><a href="#cb502-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb502-28"><a href="#cb502-28" aria-hidden="true" tabindex="-1"></a> textCite = {<span class="co">%</span></span>
-<span id="cb502-29"><a href="#cb502-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
-<span id="cb502-30"><a href="#cb502-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
-<span id="cb502-31"><a href="#cb502-31" aria-hidden="true" tabindex="-1"></a> This is</span>
-<span id="cb502-32"><a href="#cb502-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span>
-<span id="cb502-33"><a href="#cb502-33" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb502-34"><a href="#cb502-34" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb502-35"><a href="#cb502-35" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb502-36"><a href="#cb502-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb502-37"><a href="#cb502-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb502-38"><a href="#cb502-38" aria-hidden="true" tabindex="-1"></a>@abrahams90 [pp. 12; also @eijkhout91]</span>
-<span id="cb502-39"><a href="#cb502-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb502-40"><a href="#cb502-40" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">document</span>}</span></code></pre></div>
+<div class="sourceCode" id="cb505"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb505-1"><a href="#cb505-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb505-2"><a href="#cb505-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[citations]{<span class="ex">markdown</span>}</span>
+<span id="cb505-3"><a href="#cb505-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsCounter</span></span>
+<span id="cb505-4"><a href="#cb505-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\citationsTotal</span></span>
+<span id="cb505-5"><a href="#cb505-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
+<span id="cb505-6"><a href="#cb505-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\citations</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb505-7"><a href="#cb505-7" aria-hidden="true" tabindex="-1"></a> a text citation <span class="fu">\emph</span>{#4}</span>
+<span id="cb505-8"><a href="#cb505-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\citationsCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb505-9"><a href="#cb505-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#2<span class="fu">\relax</span></span>
+<span id="cb505-10"><a href="#cb505-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb505-11"><a href="#cb505-11" aria-hidden="true" tabindex="-1"></a> with a postfix <span class="fu">\emph</span>{#3}<span class="co">%</span></span>
+<span id="cb505-12"><a href="#cb505-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb505-13"><a href="#cb505-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb505-14"><a href="#cb505-14" aria-hidden="true" tabindex="-1"></a> with a prefix <span class="fu">\emph</span>{#2}<span class="co">%</span></span>
+<span id="cb505-15"><a href="#cb505-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifx\relax</span>#3<span class="fu">\relax\else</span></span>
+<span id="cb505-16"><a href="#cb505-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="cb505-17"><a href="#cb505-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb505-18"><a href="#cb505-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb505-19"><a href="#cb505-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\citationsCounter</span>&gt;<span class="fu">\citationsTotal\relax</span></span>
+<span id="cb505-20"><a href="#cb505-20" aria-hidden="true" tabindex="-1"></a> .<span class="co">%</span></span>
+<span id="cb505-21"><a href="#cb505-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
+<span id="cb505-22"><a href="#cb505-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb505-23"><a href="#cb505-23" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb505-24"><a href="#cb505-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\citations</span>}</span>
+<span id="cb505-25"><a href="#cb505-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
+<span id="cb505-26"><a href="#cb505-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb505-27"><a href="#cb505-27" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb505-28"><a href="#cb505-28" aria-hidden="true" tabindex="-1"></a> textCite = {<span class="co">%</span></span>
+<span id="cb505-29"><a href="#cb505-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsCounter</span>=1<span class="co">%</span></span>
+<span id="cb505-30"><a href="#cb505-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\citationsTotal</span>=#1<span class="co">%</span></span>
+<span id="cb505-31"><a href="#cb505-31" aria-hidden="true" tabindex="-1"></a> This is</span>
+<span id="cb505-32"><a href="#cb505-32" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\citations</span></span>
+<span id="cb505-33"><a href="#cb505-33" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb505-34"><a href="#cb505-34" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb505-35"><a href="#cb505-35" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb505-36"><a href="#cb505-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb505-37"><a href="#cb505-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb505-38"><a href="#cb505-38" aria-hidden="true" tabindex="-1"></a>@abrahams90 [pp. 12; also @eijkhout91]</span>
+<span id="cb505-39"><a href="#cb505-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb505-40"><a href="#cb505-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="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="cb506"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb506-1"><a href="#cb506-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>
@@ -9075,124 +9061,124 @@ contain the following text:</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
+<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
+filename of a file containing 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
+<code><strong>fencedCode</strong></code> option is enabled. The macro
receives three arguments that correspond to the filename of a file
-contaning the code block contents, the fully escaped code fence
+containing 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb504-2"><a href="#cb504-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
-<span id="cb504-3"><a href="#cb504-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hyphens]{<span class="ex">url</span>}</span>
-<span id="cb504-4"><a href="#cb504-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb504-5"><a href="#cb504-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb504-6"><a href="#cb504-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb504-7"><a href="#cb504-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {</span>
-<span id="cb504-8"><a href="#cb504-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb504-9"><a href="#cb504-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb504-10"><a href="#cb504-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb504-11"><a href="#cb504-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb504-12"><a href="#cb504-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb504-13"><a href="#cb504-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb504-14"><a href="#cb504-14" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb504-15"><a href="#cb504-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb504-16"><a href="#cb504-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb504-17"><a href="#cb504-17" aria-hidden="true" tabindex="-1"></a> inputVerbatim = {</span>
-<span id="cb504-18"><a href="#cb504-18" aria-hidden="true" tabindex="-1"></a> is contained in file <span class="fu">\url</span>{#1}:<span class="co">%</span></span>
-<span id="cb504-19"><a href="#cb504-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\verbatiminput</span>{#1}<span class="co">%</span></span>
-<span id="cb504-20"><a href="#cb504-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb504-21"><a href="#cb504-21" aria-hidden="true" tabindex="-1"></a> inputFencedCode = {</span>
-<span id="cb504-22"><a href="#cb504-22" aria-hidden="true" tabindex="-1"></a> in #2 <span class="fu">\markdownRendererInputVerbatim</span>{#1}<span class="co">%</span></span>
-<span id="cb504-23"><a href="#cb504-23" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb504-24"><a href="#cb504-24" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb504-25"><a href="#cb504-25" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb504-26"><a href="#cb504-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb504-27"><a href="#cb504-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb504-28"><a href="#cb504-28" aria-hidden="true" tabindex="-1"></a>The following code</span>
-<span id="cb504-29"><a href="#cb504-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb504-30"><a href="#cb504-30" aria-hidden="true" tabindex="-1"></a> def foo(bar):</span>
-<span id="cb504-31"><a href="#cb504-31" aria-hidden="true" tabindex="-1"></a> if len(bar) &lt;= 1:</span>
-<span id="cb504-32"><a href="#cb504-32" aria-hidden="true" tabindex="-1"></a> return bar[0]</span>
-<span id="cb504-33"><a href="#cb504-33" aria-hidden="true" tabindex="-1"></a> elif len(bar) == 2:</span>
-<span id="cb504-34"><a href="#cb504-34" aria-hidden="true" tabindex="-1"></a> return sorted(bar)</span>
-<span id="cb504-35"><a href="#cb504-35" aria-hidden="true" tabindex="-1"></a> else:</span>
-<span id="cb504-36"><a href="#cb504-36" aria-hidden="true" tabindex="-1"></a> baz = len(bar) // 2</span>
-<span id="cb504-37"><a href="#cb504-37" aria-hidden="true" tabindex="-1"></a> return foo(bar[baz:], bar[:baz])</span>
-<span id="cb504-38"><a href="#cb504-38" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb504-39"><a href="#cb504-39" aria-hidden="true" tabindex="-1"></a>The following code</span>
-<span id="cb504-40"><a href="#cb504-40" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb504-41"><a href="#cb504-41" aria-hidden="true" tabindex="-1"></a>~~~ Python</span>
-<span id="cb504-42"><a href="#cb504-42" aria-hidden="true" tabindex="-1"></a>&gt;&gt;&gt; foo([4, 2, 1, 3])</span>
-<span id="cb504-43"><a href="#cb504-43" aria-hidden="true" tabindex="-1"></a>[1, 2, 3, 4]</span>
-<span id="cb504-44"><a href="#cb504-44" aria-hidden="true" tabindex="-1"></a>~~~~~~~~~~</span>
-<span id="cb504-45"><a href="#cb504-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb504-46"><a href="#cb504-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb507-2"><a href="#cb507-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
+<span id="cb507-3"><a href="#cb507-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[hyphens]{<span class="ex">url</span>}</span>
+<span id="cb507-4"><a href="#cb507-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode]{<span class="ex">markdown</span>}</span>
+<span id="cb507-5"><a href="#cb507-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb507-6"><a href="#cb507-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb507-7"><a href="#cb507-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {</span>
+<span id="cb507-8"><a href="#cb507-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb507-9"><a href="#cb507-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb507-10"><a href="#cb507-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb507-11"><a href="#cb507-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb507-12"><a href="#cb507-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb507-13"><a href="#cb507-13" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb507-14"><a href="#cb507-14" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb507-15"><a href="#cb507-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</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> inputVerbatim = {</span>
+<span id="cb507-18"><a href="#cb507-18" aria-hidden="true" tabindex="-1"></a> is contained in file <span class="fu">\url</span>{#1}:<span class="co">%</span></span>
+<span id="cb507-19"><a href="#cb507-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\verbatiminput</span>{#1}<span class="co">%</span></span>
+<span id="cb507-20"><a href="#cb507-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb507-21"><a href="#cb507-21" aria-hidden="true" tabindex="-1"></a> inputFencedCode = {</span>
+<span id="cb507-22"><a href="#cb507-22" aria-hidden="true" tabindex="-1"></a> in #2 <span class="fu">\markdownRendererInputVerbatim</span>{#1}<span class="co">%</span></span>
+<span id="cb507-23"><a href="#cb507-23" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb507-24"><a href="#cb507-24" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb507-25"><a href="#cb507-25" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb507-26"><a href="#cb507-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb507-27"><a href="#cb507-27" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb507-28"><a href="#cb507-28" aria-hidden="true" tabindex="-1"></a>The following code</span>
+<span id="cb507-29"><a href="#cb507-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-30"><a href="#cb507-30" aria-hidden="true" tabindex="-1"></a> def foo(bar):</span>
+<span id="cb507-31"><a href="#cb507-31" aria-hidden="true" tabindex="-1"></a> if len(bar) &lt;= 1:</span>
+<span id="cb507-32"><a href="#cb507-32" aria-hidden="true" tabindex="-1"></a> return bar[0]</span>
+<span id="cb507-33"><a href="#cb507-33" aria-hidden="true" tabindex="-1"></a> elif len(bar) == 2:</span>
+<span id="cb507-34"><a href="#cb507-34" aria-hidden="true" tabindex="-1"></a> return sorted(bar)</span>
+<span id="cb507-35"><a href="#cb507-35" aria-hidden="true" tabindex="-1"></a> else:</span>
+<span id="cb507-36"><a href="#cb507-36" aria-hidden="true" tabindex="-1"></a> baz = len(bar) // 2</span>
+<span id="cb507-37"><a href="#cb507-37" aria-hidden="true" tabindex="-1"></a> return foo(bar[baz:], bar[:baz])</span>
+<span id="cb507-38"><a href="#cb507-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-39"><a href="#cb507-39" aria-hidden="true" tabindex="-1"></a>The following code</span>
+<span id="cb507-40"><a href="#cb507-40" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb507-41"><a href="#cb507-41" aria-hidden="true" tabindex="-1"></a>~~~ Python</span>
+<span id="cb507-42"><a href="#cb507-42" aria-hidden="true" tabindex="-1"></a>&gt;&gt;&gt; foo([4, 2, 1, 3])</span>
+<span id="cb507-43"><a href="#cb507-43" aria-hidden="true" tabindex="-1"></a>[1, 2, 3, 4]</span>
+<span id="cb507-44"><a href="#cb507-44" aria-hidden="true" tabindex="-1"></a>~~~~~~~~~~</span>
+<span id="cb507-45"><a href="#cb507-45" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb507-46"><a href="#cb507-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="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">lualatex</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">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="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="kw">def</span> foo(bar):</span>
-<span id="cb506-2"><a href="#cb506-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="cb506-3"><a href="#cb506-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> bar[:<span class="dv">1</span>]</span>
-<span id="cb506-4"><a href="#cb506-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="cb506-5"><a href="#cb506-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="bu">sorted</span>(bar)</span>
-<span id="cb506-6"><a href="#cb506-6" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
-<span id="cb506-7"><a href="#cb506-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="cb506-8"><a href="#cb506-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> (</span>
-<span id="cb506-9"><a href="#cb506-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="cb506-10"><a href="#cb506-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="cb506-11"><a href="#cb506-11" aria-hidden="true" tabindex="-1"></a> )</span></code></pre></div>
+<div class="sourceCode" id="cb509"><pre
+class="sourceCode py"><code class="sourceCode python"><span id="cb509-1"><a href="#cb509-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> foo(bar):</span>
+<span id="cb509-2"><a href="#cb509-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="cb509-3"><a href="#cb509-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> bar[:<span class="dv">1</span>]</span>
+<span id="cb509-4"><a href="#cb509-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="cb509-5"><a href="#cb509-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="bu">sorted</span>(bar)</span>
+<span id="cb509-6"><a href="#cb509-6" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
+<span id="cb509-7"><a href="#cb509-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="cb509-8"><a href="#cb509-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> (</span>
+<span id="cb509-9"><a href="#cb509-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="cb509-10"><a href="#cb509-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="cb509-11"><a href="#cb509-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="cb507"><pre
-class="sourceCode py"><code class="sourceCode python"><span id="cb507-1"><a href="#cb507-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="cb507-2"><a href="#cb507-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="cb510"><pre
+class="sourceCode py"><code class="sourceCode python"><span id="cb510-1"><a href="#cb510-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="cb510-2"><a href="#cb510-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.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
+<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-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="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">\input</span> markdown</span>
-<span id="cb508-2"><a href="#cb508-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
-<span id="cb508-3"><a href="#cb508-3" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb508-4"><a href="#cb508-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
-<span id="cb508-5"><a href="#cb508-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb508-6"><a href="#cb508-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb508-7"><a href="#cb508-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="cb508-8"><a href="#cb508-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb508-9"><a href="#cb508-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="cb508-10"><a href="#cb508-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</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 class="fu">\def\markdownOptionHybrid</span>{true}</span>
-<span id="cb508-13"><a href="#cb508-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb508-14"><a href="#cb508-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="cb508-15"><a href="#cb508-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb508-16"><a href="#cb508-16" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb508-17"><a href="#cb508-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></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">\input</span> markdown</span>
+<span id="cb511-2"><a href="#cb511-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> lmfonts</span>
+<span id="cb511-3"><a href="#cb511-3" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-4"><a href="#cb511-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
+<span id="cb511-5"><a href="#cb511-5" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-6"><a href="#cb511-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb511-7"><a href="#cb511-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="cb511-8"><a href="#cb511-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-9"><a href="#cb511-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="cb511-10"><a href="#cb511-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb511-11"><a href="#cb511-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-12"><a href="#cb511-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionHybrid</span>{true}</span>
+<span id="cb511-13"><a href="#cb511-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb511-14"><a href="#cb511-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="cb511-15"><a href="#cb511-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb511-16"><a href="#cb511-16" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb511-17"><a href="#cb511-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="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">luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -9205,30 +9191,30 @@ 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="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>[smartEllipses]{<span class="ex">markdown</span>}</span>
-<span id="cb510-3"><a href="#cb510-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb510-4"><a href="#cb510-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb510-5"><a href="#cb510-5" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span>
-<span id="cb510-6"><a href="#cb510-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb510-7"><a href="#cb510-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb510-8"><a href="#cb510-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</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 class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb510-11"><a href="#cb510-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="cb510-12"><a href="#cb510-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb510-13"><a href="#cb510-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="cb510-14"><a href="#cb510-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb510-15"><a href="#cb510-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb510-16"><a href="#cb510-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</span>
-<span id="cb510-17"><a href="#cb510-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="cb510-18"><a href="#cb510-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb510-19"><a href="#cb510-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb510-20"><a href="#cb510-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="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>[smartEllipses]{<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> codeSpan = {#1},</span>
+<span id="cb513-6"><a href="#cb513-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb513-7"><a href="#cb513-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb513-8"><a href="#cb513-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</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">markdown</span>}</span>
+<span id="cb513-11"><a href="#cb513-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="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><span class="ss">$</span><span class="sc">\sqrt</span><span class="ss">{-1}$</span> *equals* <span class="ss">$i$</span></span>
+<span id="cb513-14"><a href="#cb513-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb513-15"><a href="#cb513-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb513-16"><a href="#cb513-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[hybrid]</span>
+<span id="cb513-17"><a href="#cb513-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="cb513-18"><a href="#cb513-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb513-19"><a href="#cb513-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb513-20"><a href="#cb513-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="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></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>
@@ -9241,26 +9227,26 @@ 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="cb512"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb512-1"><a href="#cb512-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb512-2"><a href="#cb512-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
-<span id="cb512-3"><a href="#cb512-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb512-4"><a href="#cb512-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb512-5"><a href="#cb512-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb512-6"><a href="#cb512-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="cb512-7"><a href="#cb512-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb512-8"><a href="#cb512-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="cb512-9"><a href="#cb512-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb512-10"><a href="#cb512-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb512-11"><a href="#cb512-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
-<span id="cb512-12"><a href="#cb512-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb512-13"><a href="#cb512-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="cb512-14"><a href="#cb512-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb512-15"><a href="#cb512-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb512-16"><a href="#cb512-16" 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">\usemodule</span>[t][markdown]</span>
+<span id="cb515-2"><a href="#cb515-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererCodeSpan</span>#1{#1}</span>
+<span id="cb515-3"><a href="#cb515-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb515-4"><a href="#cb515-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb515-5"><a href="#cb515-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb515-6"><a href="#cb515-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="cb515-7"><a href="#cb515-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb515-8"><a href="#cb515-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="cb515-9"><a href="#cb515-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb515-10"><a href="#cb515-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb515-11"><a href="#cb515-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[hybrid = yes]</span>
+<span id="cb515-12"><a href="#cb515-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb515-13"><a href="#cb515-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="cb515-14"><a href="#cb515-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb515-15"><a href="#cb515-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb515-16"><a href="#cb515-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="cb513"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb513-1"><a href="#cb513-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb516"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb516-1"><a href="#cb516-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>
@@ -9274,36 +9260,36 @@ id="code-span-attribute-context-renderers"><span
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
+<code><strong>inlineCodeAttributes</strong></code> option is
enabled.</p>
-<p>The <code>\markdownRendererCodeSpanAttributeContextBegin</code> and
-<code>\markdownRendererCodeSpanAttributeContextEnd</code> macros
+<p>The <code>markdownRendererCodeSpanAttributeContextBegin</code> and
+<code>markdownRendererCodeSpanAttributeContextEnd</code> macros
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="cb514"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb514-1"><a href="#cb514-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb514-2"><a href="#cb514-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb514-3"><a href="#cb514-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb514-4"><a href="#cb514-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb514-5"><a href="#cb514-5" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {(},</span>
-<span id="cb514-6"><a href="#cb514-6" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span>
-<span id="cb514-7"><a href="#cb514-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {)},</span>
-<span id="cb514-8"><a href="#cb514-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb514-9"><a href="#cb514-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb514-10"><a href="#cb514-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb514-11"><a href="#cb514-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb514-12"><a href="#cb514-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb514-13"><a href="#cb514-13" aria-hidden="true" tabindex="-1"></a>foo `bar`{key=value} baz</span>
-<span id="cb514-14"><a href="#cb514-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb514-15"><a href="#cb514-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb514-16"><a href="#cb514-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="cb517"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb517-1"><a href="#cb517-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb517-2"><a href="#cb517-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[inlineCodeAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb517-3"><a href="#cb517-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb517-4"><a href="#cb517-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb517-5"><a href="#cb517-5" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextBegin = {(},</span>
+<span id="cb517-6"><a href="#cb517-6" aria-hidden="true" tabindex="-1"></a> codeSpan = {#1},</span>
+<span id="cb517-7"><a href="#cb517-7" aria-hidden="true" tabindex="-1"></a> codeSpanAttributeContextEnd = {)},</span>
+<span id="cb517-8"><a href="#cb517-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb517-9"><a href="#cb517-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb517-10"><a href="#cb517-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb517-11"><a href="#cb517-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb517-12"><a href="#cb517-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb517-13"><a href="#cb517-13" aria-hidden="true" tabindex="-1"></a>foo `bar`{key=value} baz</span>
+<span id="cb517-14"><a href="#cb517-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb517-15"><a href="#cb517-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb517-16"><a href="#cb517-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="cb515"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb515-1"><a href="#cb515-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb518"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb518-1"><a href="#cb518-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>
@@ -9312,24 +9298,24 @@ contain the following text:</p>
<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
+<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
+<p>The <code>markdownRendererContentBlockOnlineImage</code> macro
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
+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
programming language by its filename extension <span
class="math inline"><em>s</em></span>. If any
<code>markdown-languages.json</code> file found by
-<strong><code>kpathsea</code></strong><a href="#fn3"
+<code><strong>kpathsea</strong></code><a href="#fn3"
class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a>
contains a record <span
-class="math inline">(<em>k</em>,<em>v</em>)</span>, then a
+class="math inline">(<em>k</em>, <em>v</em>)</span>, then a
non-online-image content block with the filename extension <span
class="math inline"><em>s</em>, <em>s</em></span><code>:lower()</code><span
class="math inline"> = <em>k</em></span> is considered to be in a known
@@ -9354,34 +9340,34 @@ starting point.</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="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="fu">\input</span> markdown</span>
-<span id="cb516-2"><a href="#cb516-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentBlocks</span>{true}</span>
-<span id="cb516-3"><a href="#cb516-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb516-4"><a href="#cb516-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb516-5"><a href="#cb516-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb516-6"><a href="#cb516-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb516-7"><a href="#cb516-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb516-8"><a href="#cb516-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb516-9"><a href="#cb516-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="cb516-10"><a href="#cb516-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="cb516-11"><a href="#cb516-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb516-12"><a href="#cb516-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb516-13"><a href="#cb516-13" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
-<span id="cb516-14"><a href="#cb516-14" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
-<span id="cb516-15"><a href="#cb516-15" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
-<span id="cb516-16"><a href="#cb516-16" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
-<span id="cb516-17"><a href="#cb516-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb516-18"><a href="#cb516-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb519"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb519-1"><a href="#cb519-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb519-2"><a href="#cb519-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionContentBlocks</span>{true}</span>
+<span id="cb519-3"><a href="#cb519-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb519-4"><a href="#cb519-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb519-5"><a href="#cb519-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb519-6"><a href="#cb519-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb519-7"><a href="#cb519-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb519-8"><a href="#cb519-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb519-9"><a href="#cb519-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="cb519-10"><a href="#cb519-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="cb519-11"><a href="#cb519-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb519-12"><a href="#cb519-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb519-13"><a href="#cb519-13" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
+<span id="cb519-14"><a href="#cb519-14" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
+<span id="cb519-15"><a href="#cb519-15" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
+<span id="cb519-16"><a href="#cb519-16" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
+<span id="cb519-17"><a href="#cb519-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb519-18"><a href="#cb519-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="cb517"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb517-1"><a href="#cb517-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb517-2"><a href="#cb517-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="cb517-3"><a href="#cb517-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb520"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb520-1"><a href="#cb520-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb520-2"><a href="#cb520-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="cb520-3"><a href="#cb520-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
<p>Next, invoke LuaTeX from the terminal:</p>
-<div class="sourceCode" id="cb518"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb518-1"><a href="#cb518-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -9397,34 +9383,34 @@ the logotype of TUGboat.</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="cb519"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb519-1"><a href="#cb519-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb519-2"><a href="#cb519-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="cb519-3"><a href="#cb519-3" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb519-4"><a href="#cb519-4" aria-hidden="true" tabindex="-1"></a> &quot;json&quot;: &quot;JavaScript Object Notation&quot;,</span>
-<span id="cb519-5"><a href="#cb519-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb519-6"><a href="#cb519-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
-<span id="cb519-7"><a href="#cb519-7" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb519-8"><a href="#cb519-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb519-9"><a href="#cb519-9" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb519-10"><a href="#cb519-10" aria-hidden="true" tabindex="-1"></a> contentBlock = {This is <span class="fu">\texttt</span>{#2}, #4.},</span>
-<span id="cb519-11"><a href="#cb519-11" aria-hidden="true" tabindex="-1"></a> contentBlockOnlineImage = {This is the image <span class="fu">\texttt</span>{#2}, #4.},</span>
-<span id="cb519-12"><a href="#cb519-12" aria-hidden="true" tabindex="-1"></a> contentBlockCode = {<span class="co">%</span></span>
-<span id="cb519-13"><a href="#cb519-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="cb519-14"><a href="#cb519-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb519-15"><a href="#cb519-15" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb519-16"><a href="#cb519-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb519-17"><a href="#cb519-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb519-18"><a href="#cb519-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb519-19"><a href="#cb519-19" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
-<span id="cb519-20"><a href="#cb519-20" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
-<span id="cb519-21"><a href="#cb519-21" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
-<span id="cb519-22"><a href="#cb519-22" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
-<span id="cb519-23"><a href="#cb519-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb519-24"><a href="#cb519-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb522-2"><a href="#cb522-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="cb522-3"><a href="#cb522-3" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb522-4"><a href="#cb522-4" aria-hidden="true" tabindex="-1"></a> &quot;json&quot;: &quot;JavaScript Object Notation&quot;,</span>
+<span id="cb522-5"><a href="#cb522-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb522-6"><a href="#cb522-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">filecontents</span>}</span>
+<span id="cb522-7"><a href="#cb522-7" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb522-8"><a href="#cb522-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb522-9"><a href="#cb522-9" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb522-10"><a href="#cb522-10" aria-hidden="true" tabindex="-1"></a> contentBlock = {This is <span class="fu">\texttt</span>{#2}, #4.},</span>
+<span id="cb522-11"><a href="#cb522-11" aria-hidden="true" tabindex="-1"></a> contentBlockOnlineImage = {This is the image <span class="fu">\texttt</span>{#2}, #4.},</span>
+<span id="cb522-12"><a href="#cb522-12" aria-hidden="true" tabindex="-1"></a> contentBlockCode = {<span class="co">%</span></span>
+<span id="cb522-13"><a href="#cb522-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="cb522-14"><a href="#cb522-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb522-15"><a href="#cb522-15" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb522-16"><a href="#cb522-16" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb522-17"><a href="#cb522-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb522-18"><a href="#cb522-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb522-19"><a href="#cb522-19" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
+<span id="cb522-20"><a href="#cb522-20" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
+<span id="cb522-21"><a href="#cb522-21" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
+<span id="cb522-22"><a href="#cb522-22" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
+<span id="cb522-23"><a href="#cb522-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb522-24"><a href="#cb522-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="cb520"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb520-1"><a href="#cb520-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -9440,35 +9426,35 @@ the logotype of TUGboat.</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="cb521"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb521-1"><a href="#cb521-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb521-2"><a href="#cb521-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span>
-<span id="cb521-3"><a href="#cb521-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb521-4"><a href="#cb521-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb521-5"><a href="#cb521-5" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb521-6"><a href="#cb521-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb521-7"><a href="#cb521-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
-<span id="cb521-8"><a href="#cb521-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb521-9"><a href="#cb521-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="cb521-10"><a href="#cb521-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="cb521-11"><a href="#cb521-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb521-12"><a href="#cb521-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb521-13"><a href="#cb521-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb521-14"><a href="#cb521-14" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
-<span id="cb521-15"><a href="#cb521-15" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
-<span id="cb521-16"><a href="#cb521-16" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
-<span id="cb521-17"><a href="#cb521-17" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
-<span id="cb521-18"><a href="#cb521-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb521-19"><a href="#cb521-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb524-2"><a href="#cb524-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[contentBlocks = yes]</span>
+<span id="cb524-3"><a href="#cb524-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlock</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb524-4"><a href="#cb524-4" aria-hidden="true" tabindex="-1"></a> This is {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb524-5"><a href="#cb524-5" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb524-6"><a href="#cb524-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererContentBlockOnlineImage</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb524-7"><a href="#cb524-7" aria-hidden="true" tabindex="-1"></a> This is the image {<span class="fu">\tt</span> #2}, #4.</span>
+<span id="cb524-8"><a href="#cb524-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb524-9"><a href="#cb524-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="cb524-10"><a href="#cb524-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="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="fu">\starttext</span></span>
+<span id="cb524-13"><a href="#cb524-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb524-14"><a href="#cb524-14" aria-hidden="true" tabindex="-1"></a>/document.tex (the document that we are currently typesetting)</span>
+<span id="cb524-15"><a href="#cb524-15" aria-hidden="true" tabindex="-1"></a>/markdown-languages.json (the mapping between filename extensions</span>
+<span id="cb524-16"><a href="#cb524-16" aria-hidden="true" tabindex="-1"></a> and programming language names)</span>
+<span id="cb524-17"><a href="#cb524-17" aria-hidden="true" tabindex="-1"></a>https://tug.org/tugboat/noword.jpg (the logotype of TUGboat)</span>
+<span id="cb524-18"><a href="#cb524-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb524-19"><a href="#cb524-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="cb522"><pre
-class="sourceCode js"><code class="sourceCode javascript"><span id="cb522-1"><a href="#cb522-1" aria-hidden="true" tabindex="-1"></a>{</span>
-<span id="cb522-2"><a href="#cb522-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="cb522-3"><a href="#cb522-3" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb525"><pre
+class="sourceCode js"><code class="sourceCode javascript"><span id="cb525-1"><a href="#cb525-1" aria-hidden="true" tabindex="-1"></a>{</span>
+<span id="cb525-2"><a href="#cb525-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="cb525-3"><a href="#cb525-3" aria-hidden="true" tabindex="-1"></a>}</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">context</span> <span class="at">--luatex</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">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>
@@ -9484,121 +9470,121 @@ the logotype of TUGboat.</p>
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>
-<p>The <code>\markdownRendererDlBegin</code> macro represents the
+<code><strong>definitionLists</strong></code> option is enabled.</p>
+<p>The <code>markdownRendererDlBegin</code> macro represents the
beginning of a definition list that contains an item with several
paragraphs of text (the list is not tight). The macro receives no
arguments.</p>
-<p>The <code>\markdownRendererDlBeginTight</code> macro represents the
+<p>The <code>markdownRendererDlBeginTight</code> macro represents the
beginning 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
+produced, when the <code><strong>tightLists</strong></code> option is
disabled. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererDlItem</code> macro represents a term in a
+<p>The <code>markdownRendererDlItem</code> macro represents a term in a
definition list. The macro receives a single argument that corresponds
to the term being defined.</p>
-<p>The <code>\markdownRendererDlItemEnd</code> macro represents the end
+<p>The <code>markdownRendererDlItemEnd</code> macro represents the end
of a list of definitions for a single term.</p>
-<p>The <code>\markdownRendererDlDefinitionBegin</code> macro represents
+<p>The <code>markdownRendererDlDefinitionBegin</code> macro represents
the beginning of a definition in a definition list. There can be several
definitions for a single term.</p>
-<p>The <code>\markdownRendererDlDefinitionEnd</code> macro represents
-the end of a definition in a definition list. There can be several
+<p>The <code>markdownRendererDlDefinitionEnd</code> macro represents the
+end of a definition in a definition list. There can be several
definitions for a single term.</p>
-<p>The <code>\markdownRendererDlEnd</code> macro represents the end of a
+<p>The <code>markdownRendererDlEnd</code> macro represents the end of a
definition list that contains an item with several paragraphs of text
(the list is not tight). The macro receives no arguments.</p>
-<p>The <code>\markdownRendererDlEndTight</code> macro represents the end
+<p>The <code>markdownRendererDlEndTight</code> macro represents the end
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
+<code><strong>tightLists</strong></code> option is disabled. The macro
receives no arguments.</p>
<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="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="fu">\input</span> markdown</span>
-<span id="cb524-2"><a href="#cb524-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionDefinitionLists</span>{true}</span>
-<span id="cb524-3"><a href="#cb524-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
-<span id="cb524-4"><a href="#cb524-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-5"><a href="#cb524-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb524-6"><a href="#cb524-6" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
-<span id="cb524-7"><a href="#cb524-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="cb524-8"><a href="#cb524-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb524-9"><a href="#cb524-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{<span class="co">%</span></span>
-<span id="cb524-10"><a href="#cb524-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb524-11"><a href="#cb524-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</span>
-<span id="cb524-12"><a href="#cb524-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb524-13"><a href="#cb524-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb524-14"><a href="#cb524-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="cb524-15"><a href="#cb524-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb524-16"><a href="#cb524-16" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb524-17"><a href="#cb524-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb524-18"><a href="#cb524-18" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb524-19"><a href="#cb524-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
-<span id="cb524-20"><a href="#cb524-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb524-21"><a href="#cb524-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb524-22"><a href="#cb524-22" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb524-23"><a href="#cb524-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
-<span id="cb524-24"><a href="#cb524-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="cb524-25"><a href="#cb524-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{<span class="fu">\endgroup</span>}</span>
-<span id="cb524-26"><a href="#cb524-26" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-27"><a href="#cb524-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb524-28"><a href="#cb524-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
-<span id="cb524-29"><a href="#cb524-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-30"><a href="#cb524-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb524-31"><a href="#cb524-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb524-32"><a href="#cb524-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb524-33"><a href="#cb524-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb524-34"><a href="#cb524-34" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-35"><a href="#cb524-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb524-36"><a href="#cb524-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb524-37"><a href="#cb524-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb524-38"><a href="#cb524-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb524-39"><a href="#cb524-39" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb524-40"><a href="#cb524-40" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-41"><a href="#cb524-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb524-42"><a href="#cb524-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="cb524-43"><a href="#cb524-43" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb524-44"><a href="#cb524-44" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
-<span id="cb524-45"><a href="#cb524-45" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb524-46"><a href="#cb524-46" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
-<span id="cb524-47"><a href="#cb524-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb524-48"><a href="#cb524-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb524-49"><a href="#cb524-49" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb524-50"><a href="#cb524-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
-<span id="cb524-51"><a href="#cb524-51" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb524-52"><a href="#cb524-52" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb524-53"><a href="#cb524-53" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb524-54"><a href="#cb524-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
-<span id="cb524-55"><a href="#cb524-55" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
-<span id="cb524-56"><a href="#cb524-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
-<span id="cb524-57"><a href="#cb524-57" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-58"><a href="#cb524-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb524-59"><a href="#cb524-59" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
-<span id="cb524-60"><a href="#cb524-60" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-61"><a href="#cb524-61" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb524-62"><a href="#cb524-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-63"><a href="#cb524-63" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb524-64"><a href="#cb524-64" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-65"><a href="#cb524-65" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb524-66"><a href="#cb524-66" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-67"><a href="#cb524-67" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb524-68"><a href="#cb524-68" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-69"><a href="#cb524-69" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb524-70"><a href="#cb524-70" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-71"><a href="#cb524-71" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb524-72"><a href="#cb524-72" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-73"><a href="#cb524-73" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb524-74"><a href="#cb524-74" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-75"><a href="#cb524-75" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb524-76"><a href="#cb524-76" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb524-77"><a href="#cb524-77" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb524-78"><a href="#cb524-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb527-2"><a href="#cb527-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionDefinitionLists</span>{true}</span>
+<span id="cb527-3"><a href="#cb527-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
+<span id="cb527-4"><a href="#cb527-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-5"><a href="#cb527-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb527-6"><a href="#cb527-6" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
+<span id="cb527-7"><a href="#cb527-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="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\markdownRendererDlBeginTight</span>{<span class="co">%</span></span>
+<span id="cb527-10"><a href="#cb527-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb527-11"><a href="#cb527-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\parindent</span>=0pt</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\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb527-14"><a href="#cb527-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="cb527-15"><a href="#cb527-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb527-16"><a href="#cb527-16" aria-hidden="true" tabindex="-1"></a> ,</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> , and</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> }<span class="co">%</span></span>
+<span id="cb527-21"><a href="#cb527-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb527-22"><a href="#cb527-22" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb527-23"><a href="#cb527-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
+<span id="cb527-24"><a href="#cb527-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="cb527-25"><a href="#cb527-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{<span class="fu">\endgroup</span>}</span>
+<span id="cb527-26"><a href="#cb527-26" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-27"><a href="#cb527-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb527-28"><a href="#cb527-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
+<span id="cb527-29"><a href="#cb527-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-30"><a href="#cb527-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb527-31"><a href="#cb527-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb527-32"><a href="#cb527-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb527-33"><a href="#cb527-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb527-34"><a href="#cb527-34" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-35"><a href="#cb527-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb527-36"><a href="#cb527-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb527-37"><a href="#cb527-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb527-38"><a href="#cb527-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb527-39"><a href="#cb527-39" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb527-40"><a href="#cb527-40" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-41"><a href="#cb527-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb527-42"><a href="#cb527-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="cb527-43"><a href="#cb527-43" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb527-44"><a href="#cb527-44" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
+<span id="cb527-45"><a href="#cb527-45" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb527-46"><a href="#cb527-46" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
+<span id="cb527-47"><a href="#cb527-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb527-48"><a href="#cb527-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb527-49"><a href="#cb527-49" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb527-50"><a href="#cb527-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
+<span id="cb527-51"><a href="#cb527-51" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb527-52"><a href="#cb527-52" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb527-53"><a href="#cb527-53" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb527-54"><a href="#cb527-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
+<span id="cb527-55"><a href="#cb527-55" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
+<span id="cb527-56"><a href="#cb527-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
+<span id="cb527-57"><a href="#cb527-57" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-58"><a href="#cb527-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb527-59"><a href="#cb527-59" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
+<span id="cb527-60"><a href="#cb527-60" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-61"><a href="#cb527-61" aria-hidden="true" tabindex="-1"></a>Coffee</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>: black hot drink</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>: prepared from roasted coffee beans</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>: one of the most traded agricultural commodities in the world</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>Milk</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>: white cold drink</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>: nutrient-rich</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>: produced on an industrial scale</span>
+<span id="cb527-76"><a href="#cb527-76" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb527-77"><a href="#cb527-77" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb527-78"><a href="#cb527-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="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">luatex</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">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>
@@ -9624,90 +9610,90 @@ nutrient-rich, and produced on an industrial scale.</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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb526-2"><a href="#cb526-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists, tightLists]{<span class="ex">markdown</span>}</span>
-<span id="cb526-3"><a href="#cb526-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb526-4"><a href="#cb526-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-5"><a href="#cb526-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
-<span id="cb526-6"><a href="#cb526-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb526-7"><a href="#cb526-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb526-8"><a href="#cb526-8" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
-<span id="cb526-9"><a href="#cb526-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="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> dlBeginTight = {<span class="kw">\begin</span>{<span class="ex">description</span>}},</span>
-<span id="cb526-12"><a href="#cb526-12" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
-<span id="cb526-13"><a href="#cb526-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[#1]</span>
-<span id="cb526-14"><a href="#cb526-14" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">itemize</span>}</span>
-<span id="cb526-15"><a href="#cb526-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb526-16"><a href="#cb526-16" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb526-17"><a href="#cb526-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb526-18"><a href="#cb526-18" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb526-19"><a href="#cb526-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
-<span id="cb526-20"><a href="#cb526-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb526-21"><a href="#cb526-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb526-22"><a href="#cb526-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb526-23"><a href="#cb526-23" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
-<span id="cb526-24"><a href="#cb526-24" aria-hidden="true" tabindex="-1"></a> dlDefinitionBegin = <span class="fu">\item</span>,</span>
-<span id="cb526-25"><a href="#cb526-25" aria-hidden="true" tabindex="-1"></a> dlEndTight = {<span class="kw">\end</span>{<span class="ex">description</span>}},</span>
-<span id="cb526-26"><a href="#cb526-26" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb526-27"><a href="#cb526-27" aria-hidden="true" tabindex="-1"></a>]</span>
-<span id="cb526-28"><a href="#cb526-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
-<span id="cb526-29"><a href="#cb526-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-30"><a href="#cb526-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb526-31"><a href="#cb526-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb526-32"><a href="#cb526-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb526-33"><a href="#cb526-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb526-34"><a href="#cb526-34" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-35"><a href="#cb526-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb526-36"><a href="#cb526-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb526-37"><a href="#cb526-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb526-38"><a href="#cb526-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb526-39"><a href="#cb526-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb526-40"><a href="#cb526-40" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-41"><a href="#cb526-41" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
-<span id="cb526-42"><a href="#cb526-42" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb526-43"><a href="#cb526-43" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb526-44"><a href="#cb526-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="cb526-45"><a href="#cb526-45" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb526-46"><a href="#cb526-46" aria-hidden="true" tabindex="-1"></a> dlBegin = {},</span>
-<span id="cb526-47"><a href="#cb526-47" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
-<span id="cb526-48"><a href="#cb526-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
-<span id="cb526-49"><a href="#cb526-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb526-50"><a href="#cb526-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb526-51"><a href="#cb526-51" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb526-52"><a href="#cb526-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
-<span id="cb526-53"><a href="#cb526-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb526-54"><a href="#cb526-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb526-55"><a href="#cb526-55" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb526-56"><a href="#cb526-56" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {},</span>
-<span id="cb526-57"><a href="#cb526-57" aria-hidden="true" tabindex="-1"></a> dlDefinitionEnd = {},</span>
-<span id="cb526-58"><a href="#cb526-58" aria-hidden="true" tabindex="-1"></a> dlEnd = {.},</span>
-<span id="cb526-59"><a href="#cb526-59" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb526-60"><a href="#cb526-60" aria-hidden="true" tabindex="-1"></a>]</span>
-<span id="cb526-61"><a href="#cb526-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
-<span id="cb526-62"><a href="#cb526-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-63"><a href="#cb526-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb526-64"><a href="#cb526-64" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-65"><a href="#cb526-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb526-66"><a href="#cb526-66" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-67"><a href="#cb526-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb526-68"><a href="#cb526-68" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-69"><a href="#cb526-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb526-70"><a href="#cb526-70" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-71"><a href="#cb526-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb526-72"><a href="#cb526-72" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-73"><a href="#cb526-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb526-74"><a href="#cb526-74" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-75"><a href="#cb526-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb526-76"><a href="#cb526-76" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-77"><a href="#cb526-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb526-78"><a href="#cb526-78" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb526-79"><a href="#cb526-79" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb526-80"><a href="#cb526-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb529-2"><a href="#cb529-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[definitionLists, tightLists]{<span class="ex">markdown</span>}</span>
+<span id="cb529-3"><a href="#cb529-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb529-4"><a href="#cb529-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-5"><a href="#cb529-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb529-6"><a href="#cb529-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb529-7"><a href="#cb529-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb529-8"><a href="#cb529-8" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
+<span id="cb529-9"><a href="#cb529-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="cb529-10"><a href="#cb529-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb529-11"><a href="#cb529-11" aria-hidden="true" tabindex="-1"></a> dlBeginTight = {<span class="kw">\begin</span>{<span class="ex">description</span>}},</span>
+<span id="cb529-12"><a href="#cb529-12" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
+<span id="cb529-13"><a href="#cb529-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span>[#1]</span>
+<span id="cb529-14"><a href="#cb529-14" aria-hidden="true" tabindex="-1"></a> <span class="kw">\begin</span>{<span class="ex">itemize</span>}</span>
+<span id="cb529-15"><a href="#cb529-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb529-16"><a href="#cb529-16" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb529-17"><a href="#cb529-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb529-18"><a href="#cb529-18" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb529-19"><a href="#cb529-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
+<span id="cb529-20"><a href="#cb529-20" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb529-21"><a href="#cb529-21" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb529-22"><a href="#cb529-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb529-23"><a href="#cb529-23" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {<span class="kw">\end</span>{<span class="ex">itemize</span>}},</span>
+<span id="cb529-24"><a href="#cb529-24" aria-hidden="true" tabindex="-1"></a> dlDefinitionBegin = <span class="fu">\item</span>,</span>
+<span id="cb529-25"><a href="#cb529-25" aria-hidden="true" tabindex="-1"></a> dlEndTight = {<span class="kw">\end</span>{<span class="ex">description</span>}},</span>
+<span id="cb529-26"><a href="#cb529-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb529-27"><a href="#cb529-27" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb529-28"><a href="#cb529-28" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
+<span id="cb529-29"><a href="#cb529-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-30"><a href="#cb529-30" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb529-31"><a href="#cb529-31" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb529-32"><a href="#cb529-32" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb529-33"><a href="#cb529-33" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb529-34"><a href="#cb529-34" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-35"><a href="#cb529-35" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb529-36"><a href="#cb529-36" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb529-37"><a href="#cb529-37" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb529-38"><a href="#cb529-38" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb529-39"><a href="#cb529-39" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb529-40"><a href="#cb529-40" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-41"><a href="#cb529-41" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb529-42"><a href="#cb529-42" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb529-43"><a href="#cb529-43" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb529-44"><a href="#cb529-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="cb529-45"><a href="#cb529-45" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb529-46"><a href="#cb529-46" aria-hidden="true" tabindex="-1"></a> dlBegin = {},</span>
+<span id="cb529-47"><a href="#cb529-47" aria-hidden="true" tabindex="-1"></a> dlItem = {<span class="co">%</span></span>
+<span id="cb529-48"><a href="#cb529-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
+<span id="cb529-49"><a href="#cb529-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb529-50"><a href="#cb529-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb529-51"><a href="#cb529-51" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb529-52"><a href="#cb529-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
+<span id="cb529-53"><a href="#cb529-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb529-54"><a href="#cb529-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb529-55"><a href="#cb529-55" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb529-56"><a href="#cb529-56" aria-hidden="true" tabindex="-1"></a> dlItemEnd = {},</span>
+<span id="cb529-57"><a href="#cb529-57" aria-hidden="true" tabindex="-1"></a> dlDefinitionEnd = {},</span>
+<span id="cb529-58"><a href="#cb529-58" aria-hidden="true" tabindex="-1"></a> dlEnd = {.},</span>
+<span id="cb529-59"><a href="#cb529-59" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb529-60"><a href="#cb529-60" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb529-61"><a href="#cb529-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
+<span id="cb529-62"><a href="#cb529-62" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-63"><a href="#cb529-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb529-64"><a href="#cb529-64" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-65"><a href="#cb529-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb529-66"><a href="#cb529-66" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-67"><a href="#cb529-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb529-68"><a href="#cb529-68" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-69"><a href="#cb529-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb529-70"><a href="#cb529-70" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-71"><a href="#cb529-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb529-72"><a href="#cb529-72" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-73"><a href="#cb529-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb529-74"><a href="#cb529-74" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-75"><a href="#cb529-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb529-76"><a href="#cb529-76" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-77"><a href="#cb529-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb529-78"><a href="#cb529-78" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb529-79"><a href="#cb529-79" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb529-80"><a href="#cb529-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="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">lualatex</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">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>
@@ -9733,90 +9719,90 @@ nutrient-rich, and produced on an industrial scale.</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="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">\usemodule</span>[t][markdown]</span>
-<span id="cb528-2"><a href="#cb528-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
-<span id="cb528-3"><a href="#cb528-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb528-4"><a href="#cb528-4" aria-hidden="true" tabindex="-1"></a> definitionLists = yes,</span>
-<span id="cb528-5"><a href="#cb528-5" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span>
-<span id="cb528-6"><a href="#cb528-6" aria-hidden="true" tabindex="-1"></a> ]</span>
-<span id="cb528-7"><a href="#cb528-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb528-8"><a href="#cb528-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-9"><a href="#cb528-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb528-10"><a href="#cb528-10" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
-<span id="cb528-11"><a href="#cb528-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="cb528-12"><a href="#cb528-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb528-13"><a href="#cb528-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{}</span>
-<span id="cb528-14"><a href="#cb528-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb528-15"><a href="#cb528-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="cb528-16"><a href="#cb528-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startitemize</span></span>
-<span id="cb528-17"><a href="#cb528-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb528-18"><a href="#cb528-18" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb528-19"><a href="#cb528-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
-<span id="cb528-20"><a href="#cb528-20" aria-hidden="true" tabindex="-1"></a> , and</span>
-<span id="cb528-21"><a href="#cb528-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
-<span id="cb528-22"><a href="#cb528-22" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb528-23"><a href="#cb528-23" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb528-24"><a href="#cb528-24" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb528-25"><a href="#cb528-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{<span class="fu">\stopitemize</span>}</span>
-<span id="cb528-26"><a href="#cb528-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\item</span>}</span>
-<span id="cb528-27"><a href="#cb528-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{}</span>
-<span id="cb528-28"><a href="#cb528-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-29"><a href="#cb528-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb528-30"><a href="#cb528-30" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
-<span id="cb528-31"><a href="#cb528-31" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-32"><a href="#cb528-32" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb528-33"><a href="#cb528-33" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb528-34"><a href="#cb528-34" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb528-35"><a href="#cb528-35" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb528-36"><a href="#cb528-36" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-37"><a href="#cb528-37" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb528-38"><a href="#cb528-38" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb528-39"><a href="#cb528-39" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb528-40"><a href="#cb528-40" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb528-41"><a href="#cb528-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb528-42"><a href="#cb528-42" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-43"><a href="#cb528-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb528-44"><a href="#cb528-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="cb528-45"><a href="#cb528-45" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb528-46"><a href="#cb528-46" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
-<span id="cb528-47"><a href="#cb528-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
-<span id="cb528-48"><a href="#cb528-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
-<span id="cb528-49"><a href="#cb528-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb528-50"><a href="#cb528-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
-<span id="cb528-51"><a href="#cb528-51" aria-hidden="true" tabindex="-1"></a> ,</span>
-<span id="cb528-52"><a href="#cb528-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
-<span id="cb528-53"><a href="#cb528-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb528-54"><a href="#cb528-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb528-55"><a href="#cb528-55" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb528-56"><a href="#cb528-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
-<span id="cb528-57"><a href="#cb528-57" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
-<span id="cb528-58"><a href="#cb528-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
-<span id="cb528-59"><a href="#cb528-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-60"><a href="#cb528-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb528-61"><a href="#cb528-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
-<span id="cb528-62"><a href="#cb528-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-63"><a href="#cb528-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
-<span id="cb528-64"><a href="#cb528-64" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-65"><a href="#cb528-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
-<span id="cb528-66"><a href="#cb528-66" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-67"><a href="#cb528-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
-<span id="cb528-68"><a href="#cb528-68" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-69"><a href="#cb528-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
-<span id="cb528-70"><a href="#cb528-70" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-71"><a href="#cb528-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
-<span id="cb528-72"><a href="#cb528-72" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-73"><a href="#cb528-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
-<span id="cb528-74"><a href="#cb528-74" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-75"><a href="#cb528-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
-<span id="cb528-76"><a href="#cb528-76" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-77"><a href="#cb528-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
-<span id="cb528-78"><a href="#cb528-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb528-79"><a href="#cb528-79" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb528-80"><a href="#cb528-80" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb531-2"><a href="#cb531-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb531-3"><a href="#cb531-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb531-4"><a href="#cb531-4" aria-hidden="true" tabindex="-1"></a> definitionLists = yes,</span>
+<span id="cb531-5"><a href="#cb531-5" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</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 class="fu">\starttext</span></span>
+<span id="cb531-8"><a href="#cb531-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-9"><a href="#cb531-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb531-10"><a href="#cb531-10" aria-hidden="true" tabindex="-1"></a> :<span class="co">%</span></span>
+<span id="cb531-11"><a href="#cb531-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="cb531-12"><a href="#cb531-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb531-13"><a href="#cb531-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBeginTight</span>{}</span>
+<span id="cb531-14"><a href="#cb531-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb531-15"><a href="#cb531-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="cb531-16"><a href="#cb531-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\startitemize</span></span>
+<span id="cb531-17"><a href="#cb531-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb531-18"><a href="#cb531-18" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb531-19"><a href="#cb531-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{<span class="co">%</span></span>
+<span id="cb531-20"><a href="#cb531-20" aria-hidden="true" tabindex="-1"></a> , and</span>
+<span id="cb531-21"><a href="#cb531-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionEnd</span>{.}<span class="co">%</span></span>
+<span id="cb531-22"><a href="#cb531-22" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb531-23"><a href="#cb531-23" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb531-24"><a href="#cb531-24" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb531-25"><a href="#cb531-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{<span class="fu">\stopitemize</span>}</span>
+<span id="cb531-26"><a href="#cb531-26" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="fu">\item</span>}</span>
+<span id="cb531-27"><a href="#cb531-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEndTight</span>{}</span>
+<span id="cb531-28"><a href="#cb531-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-29"><a href="#cb531-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb531-30"><a href="#cb531-30" aria-hidden="true" tabindex="-1"></a>This is a tight definition list</span>
+<span id="cb531-31"><a href="#cb531-31" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-32"><a href="#cb531-32" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb531-33"><a href="#cb531-33" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb531-34"><a href="#cb531-34" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb531-35"><a href="#cb531-35" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb531-36"><a href="#cb531-36" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-37"><a href="#cb531-37" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb531-38"><a href="#cb531-38" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb531-39"><a href="#cb531-39" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb531-40"><a href="#cb531-40" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb531-41"><a href="#cb531-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb531-42"><a href="#cb531-42" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-43"><a href="#cb531-43" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb531-44"><a href="#cb531-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="cb531-45"><a href="#cb531-45" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb531-46"><a href="#cb531-46" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlBegin</span>{}</span>
+<span id="cb531-47"><a href="#cb531-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItem</span>#1{<span class="co">%</span></span>
+<span id="cb531-48"><a href="#cb531-48" aria-hidden="true" tabindex="-1"></a> . #1 is a</span>
+<span id="cb531-49"><a href="#cb531-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb531-50"><a href="#cb531-50" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{<span class="co">%</span></span>
+<span id="cb531-51"><a href="#cb531-51" aria-hidden="true" tabindex="-1"></a> ,</span>
+<span id="cb531-52"><a href="#cb531-52" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\markdownRendererDlDefinitionBegin</span>{, and }<span class="co">%</span></span>
+<span id="cb531-53"><a href="#cb531-53" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb531-54"><a href="#cb531-54" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb531-55"><a href="#cb531-55" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb531-56"><a href="#cb531-56" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlItemEnd</span>{}</span>
+<span id="cb531-57"><a href="#cb531-57" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlDefinitionEnd</span>{}</span>
+<span id="cb531-58"><a href="#cb531-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDlEnd</span>{.}</span>
+<span id="cb531-59"><a href="#cb531-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-60"><a href="#cb531-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb531-61"><a href="#cb531-61" aria-hidden="true" tabindex="-1"></a>This is a loose definition list</span>
+<span id="cb531-62"><a href="#cb531-62" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-63"><a href="#cb531-63" aria-hidden="true" tabindex="-1"></a>Coffee</span>
+<span id="cb531-64"><a href="#cb531-64" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-65"><a href="#cb531-65" aria-hidden="true" tabindex="-1"></a>: black hot drink</span>
+<span id="cb531-66"><a href="#cb531-66" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-67"><a href="#cb531-67" aria-hidden="true" tabindex="-1"></a>: prepared from roasted coffee beans</span>
+<span id="cb531-68"><a href="#cb531-68" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-69"><a href="#cb531-69" aria-hidden="true" tabindex="-1"></a>: one of the most traded agricultural commodities in the world</span>
+<span id="cb531-70"><a href="#cb531-70" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-71"><a href="#cb531-71" aria-hidden="true" tabindex="-1"></a>Milk</span>
+<span id="cb531-72"><a href="#cb531-72" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-73"><a href="#cb531-73" aria-hidden="true" tabindex="-1"></a>: white cold drink</span>
+<span id="cb531-74"><a href="#cb531-74" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-75"><a href="#cb531-75" aria-hidden="true" tabindex="-1"></a>: nutrient-rich</span>
+<span id="cb531-76"><a href="#cb531-76" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-77"><a href="#cb531-77" aria-hidden="true" tabindex="-1"></a>: produced on an industrial scale</span>
+<span id="cb531-78"><a href="#cb531-78" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb531-79"><a href="#cb531-79" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb531-80"><a href="#cb531-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="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">context</span> <span class="at">--luatex</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">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>
@@ -9840,25 +9826,25 @@ nutrient-rich, and produced on an industrial scale.</p>
</blockquote>
<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
+<p>The <code>markdownRendererEllipsis</code> macro replaces any
+occurrence of ASCII ellipses in the input text. This macro will only be
+produced, when the <code><strong>smartEllipses</strong></code> option is
enabled. The macro receives no arguments.</p>
<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="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="fu">\input</span> markdown</span>
-<span id="cb530-2"><a href="#cb530-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
-<span id="cb530-3"><a href="#cb530-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{{<span class="fu">\it</span> SHAZAM}!}</span>
-<span id="cb530-4"><a href="#cb530-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb530-5"><a href="#cb530-5" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
-<span id="cb530-6"><a href="#cb530-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb530-7"><a href="#cb530-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb533-2"><a href="#cb533-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSmartEllipses</span>{true}</span>
+<span id="cb533-3"><a href="#cb533-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{{<span class="fu">\it</span> SHAZAM}!}</span>
+<span id="cb533-4"><a href="#cb533-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb533-5"><a href="#cb533-5" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
+<span id="cb533-6"><a href="#cb533-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb533-7"><a href="#cb533-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="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">luatex</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">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>
@@ -9868,22 +9854,22 @@ 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb532-2"><a href="#cb532-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span>
-<span id="cb532-3"><a href="#cb532-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb532-4"><a href="#cb532-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb532-5"><a href="#cb532-5" aria-hidden="true" tabindex="-1"></a> ellipsis = <span class="fu">\emph</span>{SHAZAM}!,</span>
-<span id="cb532-6"><a href="#cb532-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb532-7"><a href="#cb532-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb532-8"><a href="#cb532-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb532-9"><a href="#cb532-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb532-10"><a href="#cb532-10" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
-<span id="cb532-11"><a href="#cb532-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb532-12"><a href="#cb532-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb535-2"><a href="#cb535-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[smartEllipses]{<span class="ex">markdown</span>}</span>
+<span id="cb535-3"><a href="#cb535-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb535-4"><a href="#cb535-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb535-5"><a href="#cb535-5" aria-hidden="true" tabindex="-1"></a> ellipsis = <span class="fu">\emph</span>{SHAZAM}!,</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>}</span>
+<span id="cb535-8"><a href="#cb535-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb535-9"><a href="#cb535-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb535-10"><a href="#cb535-10" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
+<span id="cb535-11"><a href="#cb535-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb535-12"><a href="#cb535-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="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">lualatex</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">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>
@@ -9893,18 +9879,18 @@ 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="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">\usemodule</span>[t][markdown]</span>
-<span id="cb534-2"><a href="#cb534-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
-<span id="cb534-3"><a href="#cb534-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{<span class="fu">\emph</span>{SHAZAM}!}</span>
-<span id="cb534-4"><a href="#cb534-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb534-5"><a href="#cb534-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb534-6"><a href="#cb534-6" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
-<span id="cb534-7"><a href="#cb534-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb534-8"><a href="#cb534-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb537-2"><a href="#cb537-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[smartEllipses = yes]</span>
+<span id="cb537-3"><a href="#cb537-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEllipsis</span>{<span class="fu">\emph</span>{SHAZAM}!}</span>
+<span id="cb537-4"><a href="#cb537-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb537-5"><a href="#cb537-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb537-6"><a href="#cb537-6" aria-hidden="true" tabindex="-1"></a>The secret word is ...</span>
+<span id="cb537-7"><a href="#cb537-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb537-8"><a href="#cb537-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="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">context</span> <span class="at">--luatex</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">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>
@@ -9914,29 +9900,29 @@ contain the following text:</p>
</blockquote>
<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
+<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>
-<p>The <code>\markdownRendererStrongEmphasis</code> macro represents a
+<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="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="fu">\input</span> markdown</span>
-<span id="cb536-2"><a href="#cb536-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{{<span class="fu">\it</span>#1}}</span>
-<span id="cb536-3"><a href="#cb536-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{{<span class="fu">\bf</span>#1}}</span>
-<span id="cb536-4"><a href="#cb536-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb536-5"><a href="#cb536-5" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
-<span id="cb536-6"><a href="#cb536-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb536-7"><a href="#cb536-7" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
-<span id="cb536-8"><a href="#cb536-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb536-9"><a href="#cb536-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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">\it</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">\bf</span>#1}}</span>
+<span id="cb539-4"><a href="#cb539-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb539-5"><a href="#cb539-5" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
+<span id="cb539-6"><a href="#cb539-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb539-7"><a href="#cb539-7" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
+<span id="cb539-8"><a href="#cb539-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb539-9"><a href="#cb539-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="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">luatex</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">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>
@@ -9947,25 +9933,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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb538-2"><a href="#cb538-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb538-3"><a href="#cb538-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb538-4"><a href="#cb538-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb538-5"><a href="#cb538-5" aria-hidden="true" tabindex="-1"></a> emphasis = {<span class="fu">\emph</span>{#1}},</span>
-<span id="cb538-6"><a href="#cb538-6" aria-hidden="true" tabindex="-1"></a> strongEmphasis = {<span class="fu">\textbf</span>{#1}},</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>}</span>
-<span id="cb538-9"><a href="#cb538-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb538-10"><a href="#cb538-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb538-11"><a href="#cb538-11" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
-<span id="cb538-12"><a href="#cb538-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb538-13"><a href="#cb538-13" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
-<span id="cb538-14"><a href="#cb538-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb538-15"><a href="#cb538-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="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>{<span class="ex">markdown</span>}</span>
+<span id="cb541-3"><a href="#cb541-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb541-4"><a href="#cb541-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb541-5"><a href="#cb541-5" aria-hidden="true" tabindex="-1"></a> emphasis = {<span class="fu">\emph</span>{#1}},</span>
+<span id="cb541-6"><a href="#cb541-6" aria-hidden="true" tabindex="-1"></a> strongEmphasis = {<span class="fu">\textbf</span>{#1}},</span>
+<span id="cb541-7"><a href="#cb541-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb541-8"><a href="#cb541-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb541-9"><a href="#cb541-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb541-10"><a href="#cb541-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb541-11"><a href="#cb541-11" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
+<span id="cb541-12"><a href="#cb541-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb541-13"><a href="#cb541-13" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
+<span id="cb541-14"><a href="#cb541-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb541-15"><a href="#cb541-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="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">lualatex</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> 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>
@@ -9976,20 +9962,20 @@ 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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb540-2"><a href="#cb540-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{<span class="fu">\emph</span>{#1}}</span>
-<span id="cb540-3"><a href="#cb540-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{<span class="fu">\bold</span>{#1}}</span>
-<span id="cb540-4"><a href="#cb540-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb540-5"><a href="#cb540-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb540-6"><a href="#cb540-6" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</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>This is **strong emphasis**.</span>
-<span id="cb540-9"><a href="#cb540-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb540-10"><a href="#cb540-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb543"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb543-1"><a href="#cb543-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb543-2"><a href="#cb543-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererEmphasis</span>#1{<span class="fu">\emph</span>{#1}}</span>
+<span id="cb543-3"><a href="#cb543-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrongEmphasis</span>#1{<span class="fu">\bold</span>{#1}}</span>
+<span id="cb543-4"><a href="#cb543-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb543-5"><a href="#cb543-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb543-6"><a href="#cb543-6" aria-hidden="true" tabindex="-1"></a>This is *emphasis*.</span>
+<span id="cb543-7"><a href="#cb543-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb543-8"><a href="#cb543-8" aria-hidden="true" tabindex="-1"></a>This is **strong emphasis**.</span>
+<span id="cb543-9"><a href="#cb543-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb543-10"><a href="#cb543-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb544"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb544-1"><a href="#cb544-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>
@@ -10001,114 +9987,116 @@ id="fenced-code-attribute-context-renderers"><span
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>
-<p>The <code>\markdownRendererFencedCodeAttributeContextBegin</code> and
-<code>\markdownRendererFencedCodeAttributeContextEnd</code> macros
+<code><strong>fencedCode</strong></code> and
+<code><strong>fencedCodeAttributes</strong></code> options are
+enabled.</p>
+<p>The <code>markdownRendererFencedCodeAttributeContextBegin</code> and
+<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-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb542-2"><a href="#cb542-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span>
-<span id="cb542-3"><a href="#cb542-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb542-4"><a href="#cb542-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
-<span id="cb542-5"><a href="#cb542-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb542-6"><a href="#cb542-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb542-7"><a href="#cb542-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span>
-<span id="cb542-8"><a href="#cb542-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb542-9"><a href="#cb542-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb542-10"><a href="#cb542-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb542-11"><a href="#cb542-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
-<span id="cb542-12"><a href="#cb542-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span>
-<span id="cb542-13"><a href="#cb542-13" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb542-14"><a href="#cb542-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb542-15"><a href="#cb542-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
-<span id="cb542-16"><a href="#cb542-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb542-17"><a href="#cb542-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span>
-<span id="cb542-18"><a href="#cb542-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb542-19"><a href="#cb542-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb542-20"><a href="#cb542-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb542-21"><a href="#cb542-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb542-22"><a href="#cb542-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb542-23"><a href="#cb542-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb542-24"><a href="#cb542-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span>
-<span id="cb542-25"><a href="#cb542-25" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
-<span id="cb542-26"><a href="#cb542-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
-<span id="cb542-27"><a href="#cb542-27" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb542-28"><a href="#cb542-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
-<span id="cb542-29"><a href="#cb542-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb542-30"><a href="#cb542-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="cb545"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb545-1"><a href="#cb545-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb545-2"><a href="#cb545-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedCode,</span>
+<span id="cb545-3"><a href="#cb545-3" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb545-4"><a href="#cb545-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">minted</span>}</span>
+<span id="cb545-5"><a href="#cb545-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb545-6"><a href="#cb545-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb545-7"><a href="#cb545-7" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextBegin = {<span class="co">%</span></span>
+<span id="cb545-8"><a href="#cb545-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb545-9"><a href="#cb545-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb545-10"><a href="#cb545-10" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb545-11"><a href="#cb545-11" aria-hidden="true" tabindex="-1"></a> attributeKeyValue = {<span class="co">%</span></span>
+<span id="cb545-12"><a href="#cb545-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\setminted</span>{{#1} = {#2}}<span class="co">%</span></span>
+<span id="cb545-13"><a href="#cb545-13" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb545-14"><a href="#cb545-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb545-15"><a href="#cb545-15" aria-hidden="true" tabindex="-1"></a> }<span class="co">%</span></span>
+<span id="cb545-16"><a href="#cb545-16" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb545-17"><a href="#cb545-17" aria-hidden="true" tabindex="-1"></a> fencedCodeAttributeContextEnd = {<span class="co">%</span></span>
+<span id="cb545-18"><a href="#cb545-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb545-19"><a href="#cb545-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb545-20"><a href="#cb545-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb545-21"><a href="#cb545-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb545-22"><a href="#cb545-22" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb545-23"><a href="#cb545-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb545-24"><a href="#cb545-24" aria-hidden="true" tabindex="-1"></a>~~~ js {linenos=true}</span>
+<span id="cb545-25"><a href="#cb545-25" aria-hidden="true" tabindex="-1"></a>if (a &gt; 3) {</span>
+<span id="cb545-26"><a href="#cb545-26" aria-hidden="true" tabindex="-1"></a> moveShip(5 * gravity, DOWN);</span>
+<span id="cb545-27"><a href="#cb545-27" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb545-28"><a href="#cb545-28" aria-hidden="true" tabindex="-1"></a>~~~~~~</span>
+<span id="cb545-29"><a href="#cb545-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb545-30"><a href="#cb545-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="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">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb546"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb546-1"><a href="#cb546-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="cb544"><pre
-class="sourceCode js linenos"><code class="sourceCode javascript"><span id="cb544-1"><a href="#cb544-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="cb544-2"><a href="#cb544-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="cb544-3"><a href="#cb544-3" aria-hidden="true" tabindex="-1"></a><span class="fl">3.</span> }</span></code></pre></div>
+<div class="sourceCode" id="cb547"><pre
+class="sourceCode js linenos"><code class="sourceCode javascript"><span id="cb547-1"><a href="#cb547-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="cb547-2"><a href="#cb547-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="cb547-3"><a href="#cb547-3" aria-hidden="true" tabindex="-1"></a><span class="fl">3.</span> }</span></code></pre></div>
</blockquote>
<h4 data-number="2.3.1.14"
id="fenced-div-attribute-context-renderers"><span
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
+<code><strong>fencedDiv</strong></code> option is enabled.</p>
+<p>The <code>markdownRendererFencedDivAttributeContextBegin</code> and
+<code>markdownRendererFencedDivAttributeContextEnd</code> macros
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="cb545"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb545-1"><a href="#cb545-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb545-2"><a href="#cb545-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
-<span id="cb545-3"><a href="#cb545-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb545-4"><a href="#cb545-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb545-5"><a href="#cb545-5" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextBegin = {<span class="co">%</span></span>
-<span id="cb545-6"><a href="#cb545-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb545-7"><a href="#cb545-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a fenced div attribute context)}</span>
-<span id="cb545-8"><a href="#cb545-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb545-9"><a href="#cb545-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb545-10"><a href="#cb545-10" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextEnd = {<span class="co">%</span></span>
-<span id="cb545-11"><a href="#cb545-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb545-12"><a href="#cb545-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a fenced div attribute context)}</span>
-<span id="cb545-13"><a href="#cb545-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb545-14"><a href="#cb545-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb545-15"><a href="#cb545-15" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb545-16"><a href="#cb545-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb545-17"><a href="#cb545-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb545-18"><a href="#cb545-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb545-19"><a href="#cb545-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-20"><a href="#cb545-20" aria-hidden="true" tabindex="-1"></a>::: {key=value}</span>
-<span id="cb545-21"><a href="#cb545-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-22"><a href="#cb545-22" aria-hidden="true" tabindex="-1"></a>foo</span>
-<span id="cb545-23"><a href="#cb545-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-24"><a href="#cb545-24" aria-hidden="true" tabindex="-1"></a>:::: {#identifier}</span>
-<span id="cb545-25"><a href="#cb545-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-26"><a href="#cb545-26" aria-hidden="true" tabindex="-1"></a>bar</span>
-<span id="cb545-27"><a href="#cb545-27" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-28"><a href="#cb545-28" aria-hidden="true" tabindex="-1"></a>::::</span>
-<span id="cb545-29"><a href="#cb545-29" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-30"><a href="#cb545-30" aria-hidden="true" tabindex="-1"></a>:::</span>
-<span id="cb545-31"><a href="#cb545-31" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-32"><a href="#cb545-32" aria-hidden="true" tabindex="-1"></a>::: {.class_name}</span>
-<span id="cb545-33"><a href="#cb545-33" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-34"><a href="#cb545-34" aria-hidden="true" tabindex="-1"></a>baz</span>
-<span id="cb545-35"><a href="#cb545-35" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-36"><a href="#cb545-36" aria-hidden="true" tabindex="-1"></a>:::</span>
-<span id="cb545-37"><a href="#cb545-37" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb545-38"><a href="#cb545-38" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb545-39"><a href="#cb545-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb548-2"><a href="#cb548-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[fencedDivs]{<span class="ex">markdown</span>}</span>
+<span id="cb548-3"><a href="#cb548-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb548-4"><a href="#cb548-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb548-5"><a href="#cb548-5" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextBegin = {<span class="co">%</span></span>
+<span id="cb548-6"><a href="#cb548-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb548-7"><a href="#cb548-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a fenced div attribute context)}</span>
+<span id="cb548-8"><a href="#cb548-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb548-9"><a href="#cb548-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb548-10"><a href="#cb548-10" aria-hidden="true" tabindex="-1"></a> fencedDivAttributeContextEnd = {<span class="co">%</span></span>
+<span id="cb548-11"><a href="#cb548-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb548-12"><a href="#cb548-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a fenced div attribute context)}</span>
+<span id="cb548-13"><a href="#cb548-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></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>
+<span id="cb548-16"><a href="#cb548-16" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb548-17"><a href="#cb548-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb548-18"><a href="#cb548-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb548-19"><a href="#cb548-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-20"><a href="#cb548-20" aria-hidden="true" tabindex="-1"></a>::: {key=value}</span>
+<span id="cb548-21"><a href="#cb548-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-22"><a href="#cb548-22" aria-hidden="true" tabindex="-1"></a>foo</span>
+<span id="cb548-23"><a href="#cb548-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-24"><a href="#cb548-24" aria-hidden="true" tabindex="-1"></a>:::: {#identifier}</span>
+<span id="cb548-25"><a href="#cb548-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-26"><a href="#cb548-26" aria-hidden="true" tabindex="-1"></a>bar</span>
+<span id="cb548-27"><a href="#cb548-27" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-28"><a href="#cb548-28" aria-hidden="true" tabindex="-1"></a>::::</span>
+<span id="cb548-29"><a href="#cb548-29" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-30"><a href="#cb548-30" aria-hidden="true" tabindex="-1"></a>:::</span>
+<span id="cb548-31"><a href="#cb548-31" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-32"><a href="#cb548-32" aria-hidden="true" tabindex="-1"></a>::: {.class_name}</span>
+<span id="cb548-33"><a href="#cb548-33" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-34"><a href="#cb548-34" aria-hidden="true" tabindex="-1"></a>baz</span>
+<span id="cb548-35"><a href="#cb548-35" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-36"><a href="#cb548-36" aria-hidden="true" tabindex="-1"></a>:::</span>
+<span id="cb548-37"><a href="#cb548-37" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb548-38"><a href="#cb548-38" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb548-39"><a href="#cb548-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="cb546"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb546-1"><a href="#cb546-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -10126,48 +10114,48 @@ contain the following text:</p>
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>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
+<code><strong>autoIdentifiers</strong></code>,
+<code><strong>gfmAutoIdentifiers</strong></code>, or
+<code><strong>headerAttributes</strong></code> options are enabled.</p>
+<p>The <code>markdownRendererHeaderAttributeContextBegin</code> and
+<code>markdownRendererHeaderAttributeContextEnd</code> macros represent
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-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="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>[headerAttributes]{<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> headerAttributeContextBegin = {<span class="co">%</span></span>
-<span id="cb547-6"><a href="#cb547-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-7"><a href="#cb547-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a header attribute context)}</span>
-<span id="cb547-8"><a href="#cb547-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb547-9"><a href="#cb547-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb547-10"><a href="#cb547-10" aria-hidden="true" tabindex="-1"></a> headerAttributeContextEnd = {<span class="co">%</span></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">\emph</span>{(The end of a header attribute context)}</span>
-<span id="cb547-13"><a href="#cb547-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</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> },</span>
-<span id="cb547-16"><a href="#cb547-16" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb547-17"><a href="#cb547-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb547-18"><a href="#cb547-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb547-19"><a href="#cb547-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb547-20"><a href="#cb547-20" aria-hidden="true" tabindex="-1"></a># First top-level heading</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>## A subheading {#identifier}</span>
-<span id="cb547-23"><a href="#cb547-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb547-24"><a href="#cb547-24" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span>
-<span id="cb547-25"><a href="#cb547-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb547-26"><a href="#cb547-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb547-27"><a href="#cb547-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="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>[headerAttributes]{<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> headerAttributeContextBegin = {<span class="co">%</span></span>
+<span id="cb550-6"><a href="#cb550-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb550-7"><a href="#cb550-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a header attribute context)}</span>
+<span id="cb550-8"><a href="#cb550-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</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> headerAttributeContextEnd = {<span class="co">%</span></span>
+<span id="cb550-11"><a href="#cb550-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb550-12"><a href="#cb550-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a header attribute context)}</span>
+<span id="cb550-13"><a href="#cb550-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb550-14"><a href="#cb550-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb550-15"><a href="#cb550-15" aria-hidden="true" tabindex="-1"></a> },</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="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb550-18"><a href="#cb550-18" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</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># First top-level heading</span>
+<span id="cb550-21"><a href="#cb550-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb550-22"><a href="#cb550-22" aria-hidden="true" tabindex="-1"></a>## A subheading {#identifier}</span>
+<span id="cb550-23"><a href="#cb550-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb550-24"><a href="#cb550-24" aria-hidden="true" tabindex="-1"></a># Second top-level heading {.class_name}</span>
+<span id="cb550-25"><a href="#cb550-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb550-26"><a href="#cb550-26" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb550-27"><a href="#cb550-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="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="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>
@@ -10181,48 +10169,48 @@ contain the following text:</p>
</blockquote>
<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
+<p>The <code>markdownRendererHeadingOne</code> macro represents a first
level heading. The macro receives a single argument that corresponds to
the heading text.</p>
-<p>The <code>\markdownRendererHeadingTwo</code> macro represents a
-second level heading. The macro receives a single argument that
-corresponds to the heading text.</p>
-<p>The <code>\markdownRendererHeadingThree</code> macro represents a
+<p>The <code>markdownRendererHeadingTwo</code> macro represents a second
+level heading. The macro receives a single argument that corresponds to
+the heading text.</p>
+<p>The <code>markdownRendererHeadingThree</code> macro represents a
third level heading. The macro receives a single argument that
corresponds to the heading text.</p>
-<p>The <code>\markdownRendererHeadingFour</code> macro represents a
+<p>The <code>markdownRendererHeadingFour</code> macro represents a
fourth level heading. The macro receives a single argument that
corresponds to the heading text.</p>
-<p>The <code>\markdownRendererHeadingFive</code> macro represents a
-fifth level heading. The macro receives a single argument that
-corresponds to the heading text.</p>
-<p>The <code>\markdownRendererHeadingSix</code> macro represents a sixth
+<p>The <code>markdownRendererHeadingFive</code> macro represents a fifth
+level heading. The macro receives a single argument that 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-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="cb549"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb549-1"><a href="#cb549-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb549-2"><a href="#cb549-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb549-3"><a href="#cb549-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span>
-<span id="cb549-4"><a href="#cb549-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span>
-<span id="cb549-5"><a href="#cb549-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span>
-<span id="cb549-6"><a href="#cb549-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span>
-<span id="cb549-7"><a href="#cb549-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span>
-<span id="cb549-8"><a href="#cb549-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span>
-<span id="cb549-9"><a href="#cb549-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb549-10"><a href="#cb549-10" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb549-11"><a href="#cb549-11" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb549-12"><a href="#cb549-12" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb549-13"><a href="#cb549-13" aria-hidden="true" tabindex="-1"></a>###</span>
-<span id="cb549-14"><a href="#cb549-14" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb549-15"><a href="#cb549-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb549-16"><a href="#cb549-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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">\markdownBegin</span></span>
+<span id="cb552-10"><a href="#cb552-10" aria-hidden="true" tabindex="-1"></a>######</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 class="fu">\markdownEnd</span></span>
+<span id="cb552-16"><a href="#cb552-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="cb550"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb550-1"><a href="#cb550-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -10232,32 +10220,32 @@ 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="cb551"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb551-1"><a href="#cb551-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb551-2"><a href="#cb551-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb551-3"><a href="#cb551-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb551-4"><a href="#cb551-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb551-5"><a href="#cb551-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
-<span id="cb551-6"><a href="#cb551-6" aria-hidden="true" tabindex="-1"></a> headingOne = 1,</span>
-<span id="cb551-7"><a href="#cb551-7" aria-hidden="true" tabindex="-1"></a> headingTwo = 2,</span>
-<span id="cb551-8"><a href="#cb551-8" aria-hidden="true" tabindex="-1"></a> headingThree = 3,</span>
-<span id="cb551-9"><a href="#cb551-9" aria-hidden="true" tabindex="-1"></a> headingFour = 4,</span>
-<span id="cb551-10"><a href="#cb551-10" aria-hidden="true" tabindex="-1"></a> headingFive = 5,</span>
-<span id="cb551-11"><a href="#cb551-11" aria-hidden="true" tabindex="-1"></a> headingSix = 6,</span>
-<span id="cb551-12"><a href="#cb551-12" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb551-13"><a href="#cb551-13" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb551-14"><a href="#cb551-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb551-15"><a href="#cb551-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb551-16"><a href="#cb551-16" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb551-17"><a href="#cb551-17" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb551-18"><a href="#cb551-18" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb551-19"><a href="#cb551-19" aria-hidden="true" tabindex="-1"></a>###</span>
-<span id="cb551-20"><a href="#cb551-20" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb551-21"><a href="#cb551-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb551-22"><a href="#cb551-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="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>{<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> interblockSeparator = {},</span>
+<span id="cb554-6"><a href="#cb554-6" aria-hidden="true" tabindex="-1"></a> headingOne = 1,</span>
+<span id="cb554-7"><a href="#cb554-7" aria-hidden="true" tabindex="-1"></a> headingTwo = 2,</span>
+<span id="cb554-8"><a href="#cb554-8" aria-hidden="true" tabindex="-1"></a> headingThree = 3,</span>
+<span id="cb554-9"><a href="#cb554-9" aria-hidden="true" tabindex="-1"></a> headingFour = 4,</span>
+<span id="cb554-10"><a href="#cb554-10" aria-hidden="true" tabindex="-1"></a> headingFive = 5,</span>
+<span id="cb554-11"><a href="#cb554-11" aria-hidden="true" tabindex="-1"></a> headingSix = 6,</span>
+<span id="cb554-12"><a href="#cb554-12" aria-hidden="true" tabindex="-1"></a> },</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><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb554-15"><a href="#cb554-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb554-16"><a href="#cb554-16" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb554-17"><a href="#cb554-17" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb554-18"><a href="#cb554-18" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb554-19"><a href="#cb554-19" aria-hidden="true" tabindex="-1"></a>###</span>
+<span id="cb554-20"><a href="#cb554-20" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb554-21"><a href="#cb554-21" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb554-22"><a href="#cb554-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="cb552"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb552-1"><a href="#cb552-1" 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></code></pre></div>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -10267,27 +10255,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="cb553"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb553-1"><a href="#cb553-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb553-2"><a href="#cb553-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb553-3"><a href="#cb553-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span>
-<span id="cb553-4"><a href="#cb553-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span>
-<span id="cb553-5"><a href="#cb553-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span>
-<span id="cb553-6"><a href="#cb553-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span>
-<span id="cb553-7"><a href="#cb553-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span>
-<span id="cb553-8"><a href="#cb553-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span>
-<span id="cb553-9"><a href="#cb553-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb553-10"><a href="#cb553-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb553-11"><a href="#cb553-11" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb553-12"><a href="#cb553-12" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb553-13"><a href="#cb553-13" aria-hidden="true" tabindex="-1"></a>#####</span>
-<span id="cb553-14"><a href="#cb553-14" aria-hidden="true" tabindex="-1"></a>###</span>
-<span id="cb553-15"><a href="#cb553-15" aria-hidden="true" tabindex="-1"></a>######</span>
-<span id="cb553-16"><a href="#cb553-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb553-17"><a href="#cb553-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb556-2"><a href="#cb556-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb556-3"><a href="#cb556-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingOne</span>{1}</span>
+<span id="cb556-4"><a href="#cb556-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingTwo</span>{2}</span>
+<span id="cb556-5"><a href="#cb556-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingThree</span>{3}</span>
+<span id="cb556-6"><a href="#cb556-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFour</span>{4}</span>
+<span id="cb556-7"><a href="#cb556-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingFive</span>{5}</span>
+<span id="cb556-8"><a href="#cb556-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererHeadingSix</span>{6}</span>
+<span id="cb556-9"><a href="#cb556-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb556-10"><a href="#cb556-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb556-11"><a href="#cb556-11" aria-hidden="true" tabindex="-1"></a>######</span>
+<span id="cb556-12"><a href="#cb556-12" aria-hidden="true" tabindex="-1"></a>#####</span>
+<span id="cb556-13"><a href="#cb556-13" aria-hidden="true" tabindex="-1"></a>#####</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>######</span>
+<span id="cb556-16"><a href="#cb556-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb556-17"><a href="#cb556-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="cb554"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb554-1"><a href="#cb554-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</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">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>
@@ -10296,35 +10284,35 @@ contain the following text:</p>
<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
+<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
+only be produced, when the <code><strong>html</strong></code> option is
enabled. The macro receives a single argument that corresponds to the
contents of the <abbr>HTML</abbr> comment.</p>
<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="cb555"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb555-1"><a href="#cb555-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb555-2"><a href="#cb555-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span>
-<span id="cb555-3"><a href="#cb555-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
-<span id="cb555-4"><a href="#cb555-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb555-5"><a href="#cb555-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb555-6"><a href="#cb555-6" aria-hidden="true" tabindex="-1"></a> inlineHtmlComment = {<span class="fu">\marginnote</span>{#1}},</span>
-<span id="cb555-7"><a href="#cb555-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb555-8"><a href="#cb555-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb555-9"><a href="#cb555-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb555-10"><a href="#cb555-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb555-11"><a href="#cb555-11" aria-hidden="true" tabindex="-1"></a>A useful use of inline HTML comments are side notes.</span>
-<span id="cb555-12"><a href="#cb555-12" aria-hidden="true" tabindex="-1"></a>&lt;!-- Side notes are displayed in the horizontal margins next to the relevant</span>
-<span id="cb555-13"><a href="#cb555-13" aria-hidden="true" tabindex="-1"></a>passages, which makes them *easier for the reader to find* than notes. --&gt;</span>
-<span id="cb555-14"><a href="#cb555-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb555-15"><a href="#cb555-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="cb556"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb556-1"><a href="#cb556-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb556-2"><a href="#cb556-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb558-2"><a href="#cb558-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span>
+<span id="cb558-3"><a href="#cb558-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
+<span id="cb558-4"><a href="#cb558-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb558-5"><a href="#cb558-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb558-6"><a href="#cb558-6" aria-hidden="true" tabindex="-1"></a> inlineHtmlComment = {<span class="fu">\marginnote</span>{#1}},</span>
+<span id="cb558-7"><a href="#cb558-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb558-8"><a href="#cb558-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb558-9"><a href="#cb558-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb558-10"><a href="#cb558-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb558-11"><a href="#cb558-11" aria-hidden="true" tabindex="-1"></a>A useful use of inline HTML comments are side notes.</span>
+<span id="cb558-12"><a href="#cb558-12" aria-hidden="true" tabindex="-1"></a>&lt;!-- Side notes are displayed in the horizontal margins next to the relevant</span>
+<span id="cb558-13"><a href="#cb558-13" aria-hidden="true" tabindex="-1"></a>passages, which makes them *easier for the reader to find* than notes. --&gt;</span>
+<span id="cb558-14"><a href="#cb558-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb558-15"><a href="#cb558-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="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">lualatex</span> document.tex</span>
+<span id="cb559-2"><a href="#cb559-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>
@@ -10339,42 +10327,42 @@ find</em> than notes.</p>
<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
+<p>The <code>markdownRendererInlineHtmlTag</code> macro represents an
opening, closing, or empty inline <abbr>HTML</abbr> tag. This macro will
-only be produced, when the <strong><code>html</code></strong> option is
+only be produced, when the <code><strong>html</strong></code> option is
enabled. The macro receives a single argument that corresponds to the
contents of the <abbr>HTML</abbr> tag.</p>
-<p>The <code>\markdownRendererInputBlockHtmlElement</code> macro
+<p>The <code>markdownRendererInputBlockHtmlElement</code> macro
represents a block <abbr>HTML</abbr> element. This macro will only be
-produced, when the <strong><code>html</code></strong> option is enabled.
+produced, when the <code><strong>html</strong></code> 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-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="cb557"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb557-1"><a href="#cb557-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb557-2"><a href="#cb557-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[html]{<span class="ex">markdown</span>}</span>
-<span id="cb557-3"><a href="#cb557-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
-<span id="cb557-4"><a href="#cb557-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
-<span id="cb557-5"><a href="#cb557-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb557-6"><a href="#cb557-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb557-7"><a href="#cb557-7" aria-hidden="true" tabindex="-1"></a> inlineHtmlTag = {<span class="fu">\textbf</span>{#1}},</span>
-<span id="cb557-8"><a href="#cb557-8" aria-hidden="true" tabindex="-1"></a> inputBlockHtmlElement = {<span class="fu">\verbatiminput</span>{#1}},</span>
-<span id="cb557-9"><a href="#cb557-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb557-10"><a href="#cb557-10" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb557-11"><a href="#cb557-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb557-12"><a href="#cb557-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb557-13"><a href="#cb557-13" aria-hidden="true" tabindex="-1"></a>&lt;b&gt;_Hello,_ world!&lt;/b&gt;&lt;br/&gt;</span>
-<span id="cb557-14"><a href="#cb557-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb557-15"><a href="#cb557-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;_Hello,_ world!&lt;/div&gt;</span>
-<span id="cb557-16"><a href="#cb557-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb557-17"><a href="#cb557-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="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>[html]{<span class="ex">markdown</span>}</span>
+<span id="cb560-3"><a href="#cb560-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">marginnote</span>}</span>
+<span id="cb560-4"><a href="#cb560-4" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">verbatim</span>}</span>
+<span id="cb560-5"><a href="#cb560-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</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> inlineHtmlTag = {<span class="fu">\textbf</span>{#1}},</span>
+<span id="cb560-8"><a href="#cb560-8" aria-hidden="true" tabindex="-1"></a> inputBlockHtmlElement = {<span class="fu">\verbatiminput</span>{#1}},</span>
+<span id="cb560-9"><a href="#cb560-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb560-10"><a href="#cb560-10" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb560-11"><a href="#cb560-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb560-12"><a href="#cb560-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb560-13"><a href="#cb560-13" aria-hidden="true" tabindex="-1"></a>&lt;b&gt;_Hello,_ world!&lt;/b&gt;&lt;br/&gt;</span>
+<span id="cb560-14"><a href="#cb560-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb560-15"><a href="#cb560-15" aria-hidden="true" tabindex="-1"></a>&lt;div&gt;_Hello,_ world!&lt;/div&gt;</span>
+<span id="cb560-16"><a href="#cb560-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb560-17"><a href="#cb560-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="cb558"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb558-1"><a href="#cb558-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb558-2"><a href="#cb558-2" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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>
+<span id="cb561-2"><a href="#cb561-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>
@@ -10383,7 +10371,7 @@ contain the following body text:</p>
</blockquote>
<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
+<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>
@@ -10391,44 +10379,44 @@ outside typesetting, and the title of the link.</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="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>{<span class="ex">markdown</span>}</span>
-<span id="cb560-3"><a href="#cb560-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
-<span id="cb560-4"><a href="#cb560-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\@</span>=11</span>
-<span id="cb560-5"><a href="#cb560-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
-<span id="cb560-6"><a href="#cb560-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\^</span>^A=14</span>
-<span id="cb560-7"><a href="#cb560-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\global\def\markdownRendererImage</span>#1#2#3#4{^^A</span>
-<span id="cb560-8"><a href="#cb560-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\immediate\write</span>18{^^A</span></code></pre></div>
-<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="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="cb561-2"><a href="#cb561-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="cb561-3"><a href="#cb561-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="cb561-4"><a href="#cb561-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="cb561-5"><a href="#cb561-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="cb561-6"><a href="#cb561-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="cb561-7"><a href="#cb561-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">fi</span><span class="kw">;</span></span>
-<span id="cb561-8"><a href="#cb561-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="cb561-9"><a href="#cb561-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span></span>
-<span id="cb561-10"><a href="#cb561-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="cb561-11"><a href="#cb561-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">fi^^A</span></span></code></pre></div>
-<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> }^^A</span>
-<span id="cb562-2"><a href="#cb562-2" aria-hidden="true" tabindex="-1"></a> {^^A</span>
-<span id="cb562-3"><a href="#cb562-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\everyeof</span>={<span class="fu">\noexpand</span>}^^A</span>
-<span id="cb562-4"><a href="#cb562-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="cb562-5"><a href="#cb562-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="cb562-6"><a href="#cb562-6" aria-hidden="true" tabindex="-1"></a> }^^A</span>
-<span id="cb562-7"><a href="#cb562-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb562-8"><a href="#cb562-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
-<span id="cb562-9"><a href="#cb562-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb562-10"><a href="#cb562-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb562-11"><a href="#cb562-11" aria-hidden="true" tabindex="-1"></a>![TUGboat](https://tug.org/tugboat/noword.jpg)</span>
-<span id="cb562-12"><a href="#cb562-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb562-13"><a href="#cb562-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="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">lualatex</span> <span class="at">--shell-escape</span> document.tex</span></code></pre></div>
+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>{<span class="ex">markdown</span>}</span>
+<span id="cb563-3"><a href="#cb563-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\begingroup</span></span>
+<span id="cb563-4"><a href="#cb563-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\@</span>=11</span>
+<span id="cb563-5"><a href="#cb563-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\%</span>=12</span>
+<span id="cb563-6"><a href="#cb563-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\catcode</span>`<span class="fu">\^</span>^A=14</span>
+<span id="cb563-7"><a href="#cb563-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\global\def\markdownRendererImage</span>#1#2#3#4{^^A</span>
+<span id="cb563-8"><a href="#cb563-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\immediate\write</span>18{^^A</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="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="cb564-2"><a href="#cb564-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="cb564-3"><a href="#cb564-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="cb564-4"><a href="#cb564-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="cb564-5"><a href="#cb564-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="cb564-6"><a href="#cb564-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="cb564-7"><a href="#cb564-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">fi</span><span class="kw">;</span></span>
+<span id="cb564-8"><a href="#cb564-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="cb564-9"><a href="#cb564-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span></span>
+<span id="cb564-10"><a href="#cb564-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="cb564-11"><a href="#cb564-11" aria-hidden="true" tabindex="-1"></a> <span class="ex">fi^^A</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> }^^A</span>
+<span id="cb565-2"><a href="#cb565-2" aria-hidden="true" tabindex="-1"></a> {^^A</span>
+<span id="cb565-3"><a href="#cb565-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\everyeof</span>={<span class="fu">\noexpand</span>}^^A</span>
+<span id="cb565-4"><a href="#cb565-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="cb565-5"><a href="#cb565-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="cb565-6"><a href="#cb565-6" aria-hidden="true" tabindex="-1"></a> }^^A</span>
+<span id="cb565-7"><a href="#cb565-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb565-8"><a href="#cb565-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\endgroup</span></span>
+<span id="cb565-9"><a href="#cb565-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb565-10"><a href="#cb565-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb565-11"><a href="#cb565-11" aria-hidden="true" tabindex="-1"></a>![TUGboat](https://tug.org/tugboat/noword.jpg)</span>
+<span id="cb565-12"><a href="#cb565-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb565-13"><a href="#cb565-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="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">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
@@ -10447,35 +10435,35 @@ title="The Communications of the TeX Users Group" alt="TUGboat" />
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
+<code><strong>linkAttributes</strong></code> option is enabled.</p>
+<p>The <code>markdownRendererImageAttributeContextBegin</code> and
+<code>markdownRendererImageAttributeContextEnd</code> macros represent
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-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="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>[linkAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb564-3"><a href="#cb564-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb564-4"><a href="#cb564-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb564-5"><a href="#cb564-5" aria-hidden="true" tabindex="-1"></a> imageAttributeContextBegin = {(},</span>
-<span id="cb564-6"><a href="#cb564-6" aria-hidden="true" tabindex="-1"></a> image = {#1},</span>
-<span id="cb564-7"><a href="#cb564-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {)},</span>
-<span id="cb564-8"><a href="#cb564-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb564-9"><a href="#cb564-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb564-10"><a href="#cb564-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb564-11"><a href="#cb564-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb564-12"><a href="#cb564-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb564-13"><a href="#cb564-13" aria-hidden="true" tabindex="-1"></a>foo ![bar](#bar){key=value} baz</span>
-<span id="cb564-14"><a href="#cb564-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb564-15"><a href="#cb564-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb564-16"><a href="#cb564-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="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>[linkAttributes]{<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> imageAttributeContextBegin = {(},</span>
+<span id="cb567-6"><a href="#cb567-6" aria-hidden="true" tabindex="-1"></a> image = {#1},</span>
+<span id="cb567-7"><a href="#cb567-7" aria-hidden="true" tabindex="-1"></a> imageAttributeContextEnd = {)},</span>
+<span id="cb567-8"><a href="#cb567-8" aria-hidden="true" tabindex="-1"></a> },</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 class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb567-11"><a href="#cb567-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb567-12"><a href="#cb567-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb567-13"><a href="#cb567-13" aria-hidden="true" tabindex="-1"></a>foo ![bar](#bar){key=value} baz</span>
+<span id="cb567-14"><a href="#cb567-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb567-15"><a href="#cb567-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb567-16"><a href="#cb567-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="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>
+<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>
@@ -10484,29 +10472,29 @@ contain the following text:</p>
<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 an interblock separator between two markdown block elements.
-The macro receives no arguments.</p>
+<p>The <code>markdownRendererInterblockSeparator</code> macro 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="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="fu">\input</span> markdown</span>
-<span id="cb566-2"><a href="#cb566-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb566-3"><a href="#cb566-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb566-4"><a href="#cb566-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(The end of a block)}<span class="co">%</span></span>
-<span id="cb566-5"><a href="#cb566-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb566-6"><a href="#cb566-6" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb566-7"><a href="#cb566-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb566-8"><a href="#cb566-8" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
-<span id="cb566-9"><a href="#cb566-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb566-10"><a href="#cb566-10" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb566-11"><a href="#cb566-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb566-12"><a href="#cb566-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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">\it</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">\markdownBegin</span></span>
+<span id="cb569-8"><a href="#cb569-8" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
+<span id="cb569-9"><a href="#cb569-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb569-10"><a href="#cb569-10" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb569-11"><a href="#cb569-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb569-12"><a href="#cb569-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="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">luatex</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">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>
@@ -10520,28 +10508,28 @@ 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb568-2"><a href="#cb568-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb568-3"><a href="#cb568-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb568-4"><a href="#cb568-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb568-5"><a href="#cb568-5" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb568-6"><a href="#cb568-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb568-7"><a href="#cb568-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span>
-<span id="cb568-8"><a href="#cb568-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb568-9"><a href="#cb568-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb568-10"><a href="#cb568-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb568-11"><a href="#cb568-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb568-12"><a href="#cb568-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb568-13"><a href="#cb568-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb568-14"><a href="#cb568-14" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
-<span id="cb568-15"><a href="#cb568-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb568-16"><a href="#cb568-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb568-17"><a href="#cb568-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb568-18"><a href="#cb568-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="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> interblockSeparator = {<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 block)}<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="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">lualatex</span> document.tex</span></code></pre></div>
+<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>
@@ -10555,23 +10543,23 @@ 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="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="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb570-2"><a href="#cb570-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb570-3"><a href="#cb570-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb570-4"><a href="#cb570-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span>
-<span id="cb570-5"><a href="#cb570-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></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 class="fu">\starttext</span></span>
-<span id="cb570-8"><a href="#cb570-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb570-9"><a href="#cb570-9" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
-<span id="cb570-10"><a href="#cb570-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb570-11"><a href="#cb570-11" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb570-12"><a href="#cb570-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb570-13"><a href="#cb570-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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">\usemodule</span>[t][markdown]</span>
+<span id="cb573-2"><a href="#cb573-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb573-3"><a href="#cb573-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb573-4"><a href="#cb573-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a block)}<span class="co">%</span></span>
+<span id="cb573-5"><a href="#cb573-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb573-6"><a href="#cb573-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb573-7"><a href="#cb573-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb573-8"><a href="#cb573-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb573-9"><a href="#cb573-9" aria-hidden="true" tabindex="-1"></a>- Hello *world*!</span>
+<span id="cb573-10"><a href="#cb573-10" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb573-11"><a href="#cb573-11" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb573-12"><a href="#cb573-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb573-13"><a href="#cb573-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="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">context</span> <span class="at">--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">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>
@@ -10586,34 +10574,34 @@ 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
+<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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb572-2"><a href="#cb572-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb572-3"><a href="#cb572-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb572-4"><a href="#cb572-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb572-5"><a href="#cb572-5" aria-hidden="true" tabindex="-1"></a> paragraphSeparator = {<span class="co">%</span></span>
-<span id="cb572-6"><a href="#cb572-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb572-7"><a href="#cb572-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a paragraph)}<span class="co">%</span></span>
-<span id="cb572-8"><a href="#cb572-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb572-9"><a href="#cb572-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb572-10"><a href="#cb572-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb572-11"><a href="#cb572-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb572-12"><a href="#cb572-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb572-13"><a href="#cb572-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb572-14"><a href="#cb572-14" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb572-15"><a href="#cb572-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb572-16"><a href="#cb572-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb572-17"><a href="#cb572-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb572-18"><a href="#cb572-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="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>{<span class="ex">markdown</span>}</span>
+<span id="cb575-3"><a href="#cb575-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb575-4"><a href="#cb575-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb575-5"><a href="#cb575-5" aria-hidden="true" tabindex="-1"></a> paragraphSeparator = {<span class="co">%</span></span>
+<span id="cb575-6"><a href="#cb575-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb575-7"><a href="#cb575-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a paragraph)}<span class="co">%</span></span>
+<span id="cb575-8"><a href="#cb575-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb575-9"><a href="#cb575-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb575-10"><a href="#cb575-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb575-11"><a href="#cb575-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb575-12"><a href="#cb575-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb575-13"><a href="#cb575-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb575-14"><a href="#cb575-14" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb575-15"><a href="#cb575-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb575-16"><a href="#cb575-16" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb575-17"><a href="#cb575-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb575-18"><a href="#cb575-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="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">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>
@@ -10624,28 +10612,27 @@ contain the following text:</p>
<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>
+<code><strong>lineBlocks</strong></code> 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-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="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\markdownOptionLineBlocks</span>{true}</span>
-<span id="cb574-3"><a href="#cb574-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb574-4"><a href="#cb574-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb574-5"><a href="#cb574-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb574-6"><a href="#cb574-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb574-7"><a href="#cb574-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb574-8"><a href="#cb574-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb574-9"><a href="#cb574-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb577-2"><a href="#cb577-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionLineBlocks</span>{true}</span>
+<span id="cb577-3"><a href="#cb577-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb577-4"><a href="#cb577-4" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb577-5"><a href="#cb577-5" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb577-6"><a href="#cb577-6" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb577-7"><a href="#cb577-7" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb577-8"><a href="#cb577-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb577-9"><a href="#cb577-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="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="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">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>
@@ -10658,20 +10645,20 @@ Tread softly because you tread on my dreams.</div>
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>[lineBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb576-3"><a href="#cb576-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb576-4"><a href="#cb576-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb576-5"><a href="#cb576-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb576-6"><a href="#cb576-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb576-7"><a href="#cb576-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb576-8"><a href="#cb576-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb576-9"><a href="#cb576-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb576-10"><a href="#cb576-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb579-2"><a href="#cb579-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[lineBlocks]{<span class="ex">markdown</span>}</span>
+<span id="cb579-3"><a href="#cb579-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb579-4"><a href="#cb579-4" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb579-5"><a href="#cb579-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb579-6"><a href="#cb579-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb579-7"><a href="#cb579-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb579-8"><a href="#cb579-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb579-9"><a href="#cb579-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb579-10"><a href="#cb579-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="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="cb580"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb580-1"><a href="#cb580-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>
@@ -10684,20 +10671,20 @@ Tread softly because you tread on my dreams.</div>
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>[lineBlocks = yes]</span>
-<span id="cb578-3"><a href="#cb578-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb578-4"><a href="#cb578-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb578-5"><a href="#cb578-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
-<span id="cb578-6"><a href="#cb578-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
-<span id="cb578-7"><a href="#cb578-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
-<span id="cb578-8"><a href="#cb578-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
-<span id="cb578-9"><a href="#cb578-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb578-10"><a href="#cb578-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<div class="sourceCode" id="cb581"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb581-1"><a href="#cb581-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb581-2"><a href="#cb581-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[lineBlocks = yes]</span>
+<span id="cb581-3"><a href="#cb581-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb581-4"><a href="#cb581-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb581-5"><a href="#cb581-5" aria-hidden="true" tabindex="-1"></a>| I would spread the cloths under your feet:</span>
+<span id="cb581-6"><a href="#cb581-6" aria-hidden="true" tabindex="-1"></a>| But I, being poor, have only my dreams;</span>
+<span id="cb581-7"><a href="#cb581-7" aria-hidden="true" tabindex="-1"></a>| I have spread my dreams under your feet;</span>
+<span id="cb581-8"><a href="#cb581-8" aria-hidden="true" tabindex="-1"></a>| Tread softly because you tread on my dreams.</span>
+<span id="cb581-9"><a href="#cb581-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb581-10"><a href="#cb581-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="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> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb582"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb582-1"><a href="#cb582-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>
@@ -10708,29 +10695,29 @@ Tread softly because you tread on my dreams.</div>
</blockquote>
<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
+<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="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\markdownRendererSoftLineBreak</span>{<span class="co">%</span></span>
-<span id="cb580-3"><a href="#cb580-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb580-4"><a href="#cb580-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A soft line break)}<span class="co">%</span></span>
-<span id="cb580-5"><a href="#cb580-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb580-6"><a href="#cb580-6" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb580-7"><a href="#cb580-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb580-8"><a href="#cb580-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></span></code></pre></div>
+<div class="sourceCode" id="cb583"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb583-1"><a href="#cb583-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
+<span id="cb583-2"><a href="#cb583-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSoftLineBreak</span>{<span class="co">%</span></span>
+<span id="cb583-3"><a href="#cb583-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb583-4"><a href="#cb583-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A soft line break)}<span class="co">%</span></span>
+<span id="cb583-5"><a href="#cb583-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb583-6"><a href="#cb583-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb583-7"><a href="#cb583-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb583-8"><a href="#cb583-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="cb581"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb581-1"><a href="#cb581-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span>
-<span id="cb581-2"><a href="#cb581-2" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span></code></pre></div>
+<div class="sourceCode" id="cb584"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb584-1"><a href="#cb584-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span>
+<span id="cb584-2"><a href="#cb584-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="cb582"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb582-1"><a href="#cb582-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -10742,29 +10729,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="cb583"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb583-1"><a href="#cb583-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb583-2"><a href="#cb583-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb583-3"><a href="#cb583-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb583-4"><a href="#cb583-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb583-5"><a href="#cb583-5" aria-hidden="true" tabindex="-1"></a> softLineBreak = {<span class="co">%</span></span>
-<span id="cb583-6"><a href="#cb583-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb583-7"><a href="#cb583-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A soft line break)}<span class="co">%</span></span>
-<span id="cb583-8"><a href="#cb583-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb583-9"><a href="#cb583-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb583-10"><a href="#cb583-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb583-11"><a href="#cb583-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb583-12"><a href="#cb583-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb583-13"><a href="#cb583-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb583-14"><a href="#cb583-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb586-2"><a href="#cb586-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb586-3"><a href="#cb586-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb586-4"><a href="#cb586-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb586-5"><a href="#cb586-5" aria-hidden="true" tabindex="-1"></a> softLineBreak = {<span class="co">%</span></span>
+<span id="cb586-6"><a href="#cb586-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb586-7"><a href="#cb586-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A soft line break)}<span class="co">%</span></span>
+<span id="cb586-8"><a href="#cb586-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb586-9"><a href="#cb586-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb586-10"><a href="#cb586-10" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb586-11"><a href="#cb586-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb586-12"><a href="#cb586-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb586-13"><a href="#cb586-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb586-14"><a href="#cb586-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="cb584"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb584-1"><a href="#cb584-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span>
-<span id="cb584-2"><a href="#cb584-2" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span></code></pre></div>
+<div class="sourceCode" id="cb587"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb587-1"><a href="#cb587-1" aria-hidden="true" tabindex="-1"></a>Hello world!</span>
+<span id="cb587-2"><a href="#cb587-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="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">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>
@@ -10772,21 +10759,21 @@ contain the following text:</p>
<p><em>(A soft line break)</em></p>
<p><em>Foo</em> bar!</p>
</blockquote>
-<p>The <code>\markdownRendererHardLineBreak</code> macro represents a
+<p>The <code>markdownRendererHardLineBreak</code> macro represents a
hard line break. The macro receives no arguments.</p>
<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="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\markdownRendererHardLineBreak</span>{<span class="co">%</span></span>
-<span id="cb586-3"><a href="#cb586-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb586-4"><a href="#cb586-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A hard line break)}<span class="co">%</span></span>
-<span id="cb586-5"><a href="#cb586-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb586-6"><a href="#cb586-6" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb586-7"><a href="#cb586-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb586-8"><a href="#cb586-8" 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\markdownRendererHardLineBreak</span>{<span class="co">%</span></span>
+<span id="cb589-3"><a href="#cb589-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb589-4"><a href="#cb589-4" aria-hidden="true" tabindex="-1"></a> {<span class="fu">\it</span>(A hard line break)}<span class="co">%</span></span>
+<span id="cb589-5"><a href="#cb589-5" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb589-6"><a href="#cb589-6" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb589-7"><a href="#cb589-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb589-8"><a href="#cb589-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
@@ -10795,8 +10782,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="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="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>
@@ -10808,21 +10795,21 @@ 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="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>{<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> hardLineBreak = {<span class="co">%</span></span>
-<span id="cb588-6"><a href="#cb588-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb588-7"><a href="#cb588-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A hard line break)}<span class="co">%</span></span>
-<span id="cb588-8"><a href="#cb588-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb588-9"><a href="#cb588-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb588-10"><a href="#cb588-10" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb588-11"><a href="#cb588-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb588-12"><a href="#cb588-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb588-13"><a href="#cb588-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
-<span id="cb588-14"><a href="#cb588-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="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> hardLineBreak = {<span class="co">%</span></span>
+<span id="cb591-6"><a href="#cb591-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb591-7"><a href="#cb591-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(A hard line break)}<span class="co">%</span></span>
+<span id="cb591-8"><a href="#cb591-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></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>
+<span id="cb591-11"><a href="#cb591-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb591-12"><a href="#cb591-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb591-13"><a href="#cb591-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownInput</span>{example.md}</span>
+<span id="cb591-14"><a href="#cb591-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
@@ -10831,8 +10818,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="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="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>
@@ -10842,7 +10829,7 @@ contain the following text:</p>
</blockquote>
<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.
+<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>
@@ -10850,21 +10837,21 @@ that can be used outside typesetting, and the title of the link.</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="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">\input</span> markdown</span>
-<span id="cb590-2"><a href="#cb590-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb590-3"><a href="#cb590-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="cb590-4"><a href="#cb590-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb590-5"><a href="#cb590-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb590-6"><a href="#cb590-6" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
-<span id="cb590-7"><a href="#cb590-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb590-8"><a href="#cb590-8" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
-<span id="cb590-9"><a href="#cb590-9" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
-<span id="cb590-10"><a href="#cb590-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb590-11"><a href="#cb590-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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">\it</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">\markdownBegin</span></span>
+<span id="cb593-6"><a href="#cb593-6" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
+<span id="cb593-7"><a href="#cb593-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb593-8"><a href="#cb593-8" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
+<span id="cb593-9"><a href="#cb593-9" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
+<span id="cb593-10"><a href="#cb593-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb593-11"><a href="#cb593-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="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">luatex</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">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>
@@ -10876,27 +10863,27 @@ Archive Network</em>.</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="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>{<span class="ex">markdown</span>}</span>
-<span id="cb592-3"><a href="#cb592-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb592-4"><a href="#cb592-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb592-5"><a href="#cb592-5" aria-hidden="true" tabindex="-1"></a> link = {<span class="co">%</span></span>
-<span id="cb592-6"><a href="#cb592-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="cb592-7"><a href="#cb592-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb592-8"><a href="#cb592-8" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb592-9"><a href="#cb592-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb592-10"><a href="#cb592-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb592-11"><a href="#cb592-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb592-12"><a href="#cb592-12" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
-<span id="cb592-13"><a href="#cb592-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb592-14"><a href="#cb592-14" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
-<span id="cb592-15"><a href="#cb592-15" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
-<span id="cb592-16"><a href="#cb592-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb592-17"><a href="#cb592-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="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>{<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> link = {<span class="co">%</span></span>
+<span id="cb595-6"><a href="#cb595-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="cb595-7"><a href="#cb595-7" aria-hidden="true" tabindex="-1"></a> },</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>Please visit [the link][ctan].</span>
+<span id="cb595-13"><a href="#cb595-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb595-14"><a href="#cb595-14" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
+<span id="cb595-15"><a href="#cb595-15" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
+<span id="cb595-16"><a href="#cb595-16" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb595-17"><a href="#cb595-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="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="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>
@@ -10908,22 +10895,22 @@ Archive Network</em>.</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="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">\usemodule</span>[t][markdown]</span>
-<span id="cb594-2"><a href="#cb594-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span>
-<span id="cb594-3"><a href="#cb594-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="cb594-4"><a href="#cb594-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb594-5"><a href="#cb594-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb594-6"><a href="#cb594-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb594-7"><a href="#cb594-7" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</span>
-<span id="cb594-8"><a href="#cb594-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb594-9"><a href="#cb594-9" aria-hidden="true" tabindex="-1"></a> [ctan]: https://ctan.org/</span>
-<span id="cb594-10"><a href="#cb594-10" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
-<span id="cb594-11"><a href="#cb594-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb594-12"><a href="#cb594-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></span></code></pre></div>
+<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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb597-2"><a href="#cb597-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererLink</span>#1#2#3#4{<span class="co">%</span></span>
+<span id="cb597-3"><a href="#cb597-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="cb597-4"><a href="#cb597-4" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb597-5"><a href="#cb597-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb597-6"><a href="#cb597-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb597-7"><a href="#cb597-7" aria-hidden="true" tabindex="-1"></a>Please visit [the link][ctan].</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> [ctan]: https://ctan.org/</span>
+<span id="cb597-10"><a href="#cb597-10" aria-hidden="true" tabindex="-1"></a> (the Comprehensive TeX Archive Network)</span>
+<span id="cb597-11"><a href="#cb597-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb597-12"><a href="#cb597-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="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">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -10935,35 +10922,35 @@ Archive Network</em>.</p>
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
+<code><strong>linkAttributes</strong></code> option is enabled.</p>
+<p>The <code>markdownRendererLinkAttributeContextBegin</code> and
+<code>markdownRendererLinkAttributeContextEnd</code> macros represent
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-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="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>[linkAttributes]{<span class="ex">markdown</span>}</span>
-<span id="cb596-3"><a href="#cb596-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb596-4"><a href="#cb596-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb596-5"><a href="#cb596-5" aria-hidden="true" tabindex="-1"></a> linkAttributeContextBegin = {(},</span>
-<span id="cb596-6"><a href="#cb596-6" aria-hidden="true" tabindex="-1"></a> link = {#1},</span>
-<span id="cb596-7"><a href="#cb596-7" aria-hidden="true" tabindex="-1"></a> linkAttributeContextEnd = {)},</span>
-<span id="cb596-8"><a href="#cb596-8" aria-hidden="true" tabindex="-1"></a> },</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="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb596-11"><a href="#cb596-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb596-12"><a href="#cb596-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb596-13"><a href="#cb596-13" aria-hidden="true" tabindex="-1"></a>foo [bar](#bar){key=value} baz</span>
-<span id="cb596-14"><a href="#cb596-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb596-15"><a href="#cb596-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb596-16"><a href="#cb596-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="cb599"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb599-1"><a href="#cb599-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb599-2"><a href="#cb599-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[linkAttributes]{<span class="ex">markdown</span>}</span>
+<span id="cb599-3"><a href="#cb599-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb599-4"><a href="#cb599-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb599-5"><a href="#cb599-5" aria-hidden="true" tabindex="-1"></a> linkAttributeContextBegin = {(},</span>
+<span id="cb599-6"><a href="#cb599-6" aria-hidden="true" tabindex="-1"></a> link = {#1},</span>
+<span id="cb599-7"><a href="#cb599-7" aria-hidden="true" tabindex="-1"></a> linkAttributeContextEnd = {)},</span>
+<span id="cb599-8"><a href="#cb599-8" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb599-9"><a href="#cb599-9" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb599-10"><a href="#cb599-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb599-11"><a href="#cb599-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb599-12"><a href="#cb599-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb599-13"><a href="#cb599-13" aria-hidden="true" tabindex="-1"></a>foo [bar](#bar){key=value} baz</span>
+<span id="cb599-14"><a href="#cb599-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb599-15"><a href="#cb599-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb599-16"><a href="#cb599-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="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="cb600"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb600-1"><a href="#cb600-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>
@@ -10972,33 +10959,33 @@ contain the following text:</p>
<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
+<code><strong>mark</strong></code> 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb598-2"><a href="#cb598-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span>
-<span id="cb598-3"><a href="#cb598-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
-<span id="cb598-4"><a href="#cb598-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb598-5"><a href="#cb598-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb598-6"><a href="#cb598-6" aria-hidden="true" tabindex="-1"></a> mark = {<span class="fu">\hl</span>{#1}},</span>
-<span id="cb598-7"><a href="#cb598-7" aria-hidden="true" tabindex="-1"></a> },</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="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb598-10"><a href="#cb598-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb598-11"><a href="#cb598-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb598-12"><a href="#cb598-12" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span>
-<span id="cb598-13"><a href="#cb598-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb598-14"><a href="#cb598-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb598-15"><a href="#cb598-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="cb601"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb601-1"><a href="#cb601-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb601-2"><a href="#cb601-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[mark]{<span class="ex">markdown</span>}</span>
+<span id="cb601-3"><a href="#cb601-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
+<span id="cb601-4"><a href="#cb601-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb601-5"><a href="#cb601-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb601-6"><a href="#cb601-6" aria-hidden="true" tabindex="-1"></a> mark = {<span class="fu">\hl</span>{#1}},</span>
+<span id="cb601-7"><a href="#cb601-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb601-8"><a href="#cb601-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb601-9"><a href="#cb601-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb601-10"><a href="#cb601-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb601-11"><a href="#cb601-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb601-12"><a href="#cb601-12" aria-hidden="true" tabindex="-1"></a>This ==is highlighted text.==</span>
+<span id="cb601-13"><a href="#cb601-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb601-14"><a href="#cb601-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb601-15"><a href="#cb601-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="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">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb602"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb602-1"><a href="#cb602-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>
@@ -11007,8 +10994,8 @@ contain the following text:</p>
<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
+<p>The <code>markdownRendererDocumentBegin</code> and
+<code>markdownRendererDocumentEnd</code> macros represent the beginning
and the end of a <em>markdown</em> document. The macros receive no
arguments.</p>
<p>A <span class="tex">T<sub>e</sub>X</span> document may contain any
@@ -11020,77 +11007,77 @@ account.</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>nested.md</code> with the following content:</p>
-<div class="sourceCode" id="cb600"><pre
-class="sourceCode md"><code class="sourceCode markdown"><span id="cb600-1"><a href="#cb600-1" aria-hidden="true" tabindex="-1"></a>This is a *nested* markdown document.</span></code></pre></div>
+<div class="sourceCode" id="cb603"><pre
+class="sourceCode md"><code class="sourceCode markdown"><span id="cb603-1"><a href="#cb603-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="cb601"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb601-1"><a href="#cb601-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb601-2"><a href="#cb601-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[contentBlocks]{<span class="ex">markdown</span>}</span>
-<span id="cb601-3"><a href="#cb601-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb601-4"><a href="#cb601-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb601-5"><a href="#cb601-5" aria-hidden="true" tabindex="-1"></a> contentBlock = {<span class="co">%</span></span>
-<span id="cb601-6"><a href="#cb601-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownInput</span>{#3}<span class="co">%</span></span>
-<span id="cb601-7"><a href="#cb601-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-8"><a href="#cb601-8" aria-hidden="true" tabindex="-1"></a> documentBegin = {<span class="co">%</span></span>
-<span id="cb601-9"><a href="#cb601-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-10"><a href="#cb601-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a document)}</span>
-<span id="cb601-11"><a href="#cb601-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-12"><a href="#cb601-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb601-13"><a href="#cb601-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=first-nesting-level}<span class="co">%</span></span>
-<span id="cb601-14"><a href="#cb601-14" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-15"><a href="#cb601-15" aria-hidden="true" tabindex="-1"></a> documentEnd = {<span class="co">%</span></span>
-<span id="cb601-16"><a href="#cb601-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb601-17"><a href="#cb601-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-18"><a href="#cb601-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a document)}</span>
-<span id="cb601-19"><a href="#cb601-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-20"><a href="#cb601-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-21"><a href="#cb601-21" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-22"><a href="#cb601-22" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb601-23"><a href="#cb601-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{first-nesting-level}{</span>
-<span id="cb601-24"><a href="#cb601-24" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb601-25"><a href="#cb601-25" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
-<span id="cb601-26"><a href="#cb601-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-27"><a href="#cb601-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
-<span id="cb601-28"><a href="#cb601-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-29"><a href="#cb601-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb601-30"><a href="#cb601-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=second-nesting-level-and-below}</span>
-<span id="cb601-31"><a href="#cb601-31" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-32"><a href="#cb601-32" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-33"><a href="#cb601-33" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb601-34"><a href="#cb601-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{second-nesting-level-and-below}{</span>
-<span id="cb601-35"><a href="#cb601-35" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb601-36"><a href="#cb601-36" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
-<span id="cb601-37"><a href="#cb601-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-38"><a href="#cb601-38" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
-<span id="cb601-39"><a href="#cb601-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-40"><a href="#cb601-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
-<span id="cb601-41"><a href="#cb601-41" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-42"><a href="#cb601-42" aria-hidden="true" tabindex="-1"></a> documentEnd = {</span>
-<span id="cb601-43"><a href="#cb601-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
-<span id="cb601-44"><a href="#cb601-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-45"><a href="#cb601-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a nested document)}</span>
-<span id="cb601-46"><a href="#cb601-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
-<span id="cb601-47"><a href="#cb601-47" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-48"><a href="#cb601-48" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb601-49"><a href="#cb601-49" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb601-50"><a href="#cb601-50" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb601-51"><a href="#cb601-51" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb601-52"><a href="#cb601-52" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
-<span id="cb601-53"><a href="#cb601-53" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb601-54"><a href="#cb601-54" aria-hidden="true" tabindex="-1"></a>/nested.md</span>
-<span id="cb601-55"><a href="#cb601-55" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb601-56"><a href="#cb601-56" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
-<span id="cb601-57"><a href="#cb601-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb601-58"><a href="#cb601-58" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb601-59"><a href="#cb601-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb601-60"><a href="#cb601-60" aria-hidden="true" tabindex="-1"></a>Bar baz!</span>
-<span id="cb601-61"><a href="#cb601-61" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb601-62"><a href="#cb601-62" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb601-63"><a href="#cb601-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="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>[contentBlocks]{<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> contentBlock = {<span class="co">%</span></span>
+<span id="cb604-6"><a href="#cb604-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownInput</span>{#3}<span class="co">%</span></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> documentBegin = {<span class="co">%</span></span>
+<span id="cb604-9"><a href="#cb604-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-10"><a href="#cb604-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a document)}</span>
+<span id="cb604-11"><a href="#cb604-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-12"><a href="#cb604-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb604-13"><a href="#cb604-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=first-nesting-level}<span class="co">%</span></span>
+<span id="cb604-14"><a href="#cb604-14" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-15"><a href="#cb604-15" aria-hidden="true" tabindex="-1"></a> documentEnd = {<span class="co">%</span></span>
+<span id="cb604-16"><a href="#cb604-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb604-17"><a href="#cb604-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-18"><a href="#cb604-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a document)}</span>
+<span id="cb604-19"><a href="#cb604-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-20"><a href="#cb604-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-21"><a href="#cb604-21" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-22"><a href="#cb604-22" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb604-23"><a href="#cb604-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{first-nesting-level}{</span>
+<span id="cb604-24"><a href="#cb604-24" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb604-25"><a href="#cb604-25" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
+<span id="cb604-26"><a href="#cb604-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-27"><a href="#cb604-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
+<span id="cb604-28"><a href="#cb604-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-29"><a href="#cb604-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb604-30"><a href="#cb604-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{snippet=second-nesting-level-and-below}</span>
+<span id="cb604-31"><a href="#cb604-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-32"><a href="#cb604-32" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-33"><a href="#cb604-33" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb604-34"><a href="#cb604-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span>{second-nesting-level-and-below}{</span>
+<span id="cb604-35"><a href="#cb604-35" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb604-36"><a href="#cb604-36" aria-hidden="true" tabindex="-1"></a> documentBegin = {</span>
+<span id="cb604-37"><a href="#cb604-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-38"><a href="#cb604-38" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The beginning of a nested document)}</span>
+<span id="cb604-39"><a href="#cb604-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-40"><a href="#cb604-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\begingroup</span></span>
+<span id="cb604-41"><a href="#cb604-41" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-42"><a href="#cb604-42" aria-hidden="true" tabindex="-1"></a> documentEnd = {</span>
+<span id="cb604-43"><a href="#cb604-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\endgroup</span></span>
+<span id="cb604-44"><a href="#cb604-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-45"><a href="#cb604-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\emph</span>{(The end of a nested document)}</span>
+<span id="cb604-46"><a href="#cb604-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\par</span></span>
+<span id="cb604-47"><a href="#cb604-47" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-48"><a href="#cb604-48" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb604-49"><a href="#cb604-49" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb604-50"><a href="#cb604-50" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb604-51"><a href="#cb604-51" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb604-52"><a href="#cb604-52" aria-hidden="true" tabindex="-1"></a>Hello *world*!</span>
+<span id="cb604-53"><a href="#cb604-53" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb604-54"><a href="#cb604-54" aria-hidden="true" tabindex="-1"></a>/nested.md</span>
+<span id="cb604-55"><a href="#cb604-55" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb604-56"><a href="#cb604-56" aria-hidden="true" tabindex="-1"></a>_Foo_ bar!</span>
+<span id="cb604-57"><a href="#cb604-57" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb604-58"><a href="#cb604-58" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb604-59"><a href="#cb604-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb604-60"><a href="#cb604-60" aria-hidden="true" tabindex="-1"></a>Bar baz!</span>
+<span id="cb604-61"><a href="#cb604-61" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb604-62"><a href="#cb604-62" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb604-63"><a href="#cb604-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="cb602"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb602-1"><a href="#cb602-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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>
<p>A PDF document named <code>document.pdf</code> should be produced and
contain the following text:</p>
<blockquote>
@@ -11108,48 +11095,48 @@ contain the following text:</p>
<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>
+<p>The <code>markdownRendererNbsp</code> macro represents a non-breaking
+space.</p>
<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="cb603"><pre
-class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb603-1"><a href="#cb603-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
-<span id="cb603-2"><a href="#cb603-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
-<span id="cb603-3"><a href="#cb603-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="cb603-4"><a href="#cb603-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
-<span id="cb603-5"><a href="#cb603-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
-<span id="cb603-6"><a href="#cb603-6" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
+<div class="sourceCode" id="cb606"><pre
+class="sourceCode bib"><code class="sourceCode bibtex"><span id="cb606-1"><a href="#cb606-1" aria-hidden="true" tabindex="-1"></a><span class="va">@book</span>{<span class="ot">knuth:tex</span>,</span>
+<span id="cb606-2"><a href="#cb606-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">author</span> = &quot;<span class="st">Knuth, Donald Ervin</span>&quot;,</span>
+<span id="cb606-3"><a href="#cb606-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="cb606-4"><a href="#cb606-4" aria-hidden="true" tabindex="-1"></a> <span class="dt">publisher</span> = &quot;<span class="st">Addison-Wesley</span>&quot;,</span>
+<span id="cb606-5"><a href="#cb606-5" aria-hidden="true" tabindex="-1"></a> <span class="dt">year</span> = &quot;<span class="st">1984</span>&quot;</span>
+<span id="cb606-6"><a href="#cb606-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="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>
-<span id="cb604-3"><a href="#cb604-3" aria-hidden="true" tabindex="-1"></a> citations,</span>
-<span id="cb604-4"><a href="#cb604-4" aria-hidden="true" tabindex="-1"></a> citationNbsps,</span>
-<span id="cb604-5"><a href="#cb604-5" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
-<span id="cb604-6"><a href="#cb604-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb604-7"><a href="#cb604-7" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb604-8"><a href="#cb604-8" aria-hidden="true" tabindex="-1"></a> nbsp = {<span class="ss">$</span><span class="sc">\cdot</span><span class="ss">$</span>},</span>
-<span id="cb604-9"><a href="#cb604-9" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb604-10"><a href="#cb604-10" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb604-11"><a href="#cb604-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</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 class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb604-14"><a href="#cb604-14" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</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>
-<span id="cb604-17"><a href="#cb604-17" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span>
-<span id="cb604-18"><a href="#cb604-18" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span>
-<span id="cb604-19"><a href="#cb604-19" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb604-20"><a href="#cb604-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="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>[</span>
+<span id="cb607-3"><a href="#cb607-3" aria-hidden="true" tabindex="-1"></a> citations,</span>
+<span id="cb607-4"><a href="#cb607-4" aria-hidden="true" tabindex="-1"></a> citationNbsps,</span>
+<span id="cb607-5"><a href="#cb607-5" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
+<span id="cb607-6"><a href="#cb607-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb607-7"><a href="#cb607-7" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb607-8"><a href="#cb607-8" aria-hidden="true" tabindex="-1"></a> nbsp = {<span class="ss">$</span><span class="sc">\cdot</span><span class="ss">$</span>},</span>
+<span id="cb607-9"><a href="#cb607-9" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb607-10"><a href="#cb607-10" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb607-11"><a href="#cb607-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb607-12"><a href="#cb607-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb607-13"><a href="#cb607-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb607-14"><a href="#cb607-14" aria-hidden="true" tabindex="-1"></a>The TeXbook [@knuth:tex, p. 123 and 130] is good.</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>
+<span id="cb607-17"><a href="#cb607-17" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliographystyle</span>{<span class="ex">plain</span>}</span>
+<span id="cb607-18"><a href="#cb607-18" aria-hidden="true" tabindex="-1"></a><span class="bu">\bibliography</span>{<span class="ex">document.bib</span>}</span>
+<span id="cb607-19"><a href="#cb607-19" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb607-20"><a href="#cb607-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="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>
-<span id="cb605-2"><a href="#cb605-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span>
-<span id="cb605-3"><a href="#cb605-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
-<span id="cb605-4"><a href="#cb605-4" 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>
+<span id="cb608-2"><a href="#cb608-2" aria-hidden="true" tabindex="-1"></a><span class="ex">bibtex</span> document.aux</span>
+<span id="cb608-3"><a href="#cb608-3" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span>
+<span id="cb608-4"><a href="#cb608-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>
@@ -11160,29 +11147,29 @@ typesetting.</em> Addison-Wesley, 1984.</p>
</blockquote>
<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
+<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
+<code><strong>notes</strong></code> option is enabled. The macro
receives a single argument that corresponds to the note text.</p>
<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="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">\input</span> markdown</span>
-<span id="cb606-2"><a href="#cb606-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNotes</span>{true}</span>
-<span id="cb606-3"><a href="#cb606-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span>
-<span id="cb606-4"><a href="#cb606-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb606-5"><a href="#cb606-5" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</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> [^1]: this is a note</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> [^2]: this is some other note</span>
-<span id="cb606-10"><a href="#cb606-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb606-11"><a href="#cb606-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb609-2"><a href="#cb609-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionNotes</span>{true}</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">\markdownBegin</span></span>
+<span id="cb609-5"><a href="#cb609-5" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
+<span id="cb609-6"><a href="#cb609-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb609-7"><a href="#cb609-7" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
+<span id="cb609-8"><a href="#cb609-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb609-9"><a href="#cb609-9" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
+<span id="cb609-10"><a href="#cb609-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb609-11"><a href="#cb609-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="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">luatex</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">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>
@@ -11193,26 +11180,26 @@ 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="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>[notes]{<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> note = { (and <span class="fu">\MakeLowercase</span>{#1})},</span>
-<span id="cb608-6"><a href="#cb608-6" aria-hidden="true" tabindex="-1"></a> },</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 class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb608-9"><a href="#cb608-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb608-10"><a href="#cb608-10" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
-<span id="cb608-11"><a href="#cb608-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb608-12"><a href="#cb608-12" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
-<span id="cb608-13"><a href="#cb608-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb608-14"><a href="#cb608-14" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
-<span id="cb608-15"><a href="#cb608-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb608-16"><a href="#cb608-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb611-2"><a href="#cb611-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[notes]{<span class="ex">markdown</span>}</span>
+<span id="cb611-3"><a href="#cb611-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb611-4"><a href="#cb611-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb611-5"><a href="#cb611-5" aria-hidden="true" tabindex="-1"></a> note = { (and <span class="fu">\MakeLowercase</span>{#1})},</span>
+<span id="cb611-6"><a href="#cb611-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb611-7"><a href="#cb611-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb611-8"><a href="#cb611-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb611-9"><a href="#cb611-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb611-10"><a href="#cb611-10" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
+<span id="cb611-11"><a href="#cb611-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-12"><a href="#cb611-12" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
+<span id="cb611-13"><a href="#cb611-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb611-14"><a href="#cb611-14" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
+<span id="cb611-15"><a href="#cb611-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb611-16"><a href="#cb611-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="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="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">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>
@@ -11223,22 +11210,22 @@ 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="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>[notes = yes]</span>
-<span id="cb610-3"><a href="#cb610-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span>
-<span id="cb610-4"><a href="#cb610-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb610-5"><a href="#cb610-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb610-6"><a href="#cb610-6" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
-<span id="cb610-7"><a href="#cb610-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb610-8"><a href="#cb610-8" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
-<span id="cb610-9"><a href="#cb610-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb610-10"><a href="#cb610-10" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
-<span id="cb610-11"><a href="#cb610-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb610-12"><a href="#cb610-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb613-2"><a href="#cb613-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[notes = yes]</span>
+<span id="cb613-3"><a href="#cb613-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererNote</span>#1{ (and <span class="fu">\lowercase</span>{#1})}</span>
+<span id="cb613-4"><a href="#cb613-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb613-5"><a href="#cb613-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb613-6"><a href="#cb613-6" aria-hidden="true" tabindex="-1"></a>This is some text[^1] and this is some other text[^2].</span>
+<span id="cb613-7"><a href="#cb613-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-8"><a href="#cb613-8" aria-hidden="true" tabindex="-1"></a> [^1]: this is a note</span>
+<span id="cb613-9"><a href="#cb613-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb613-10"><a href="#cb613-10" aria-hidden="true" tabindex="-1"></a> [^2]: this is some other note</span>
+<span id="cb613-11"><a href="#cb613-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb613-12"><a href="#cb613-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="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> <span class="at">--luatex</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">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>
@@ -11248,156 +11235,156 @@ contain the following text:</p>
<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
+<p>The <code>markdownRendererOlBegin</code> macro represents the
beginning of an ordered list that contains an item with several
paragraphs of text (the list is not tight). This macro will only be
-produced, when the <strong><code>fancyLists</code></strong> option is
+produced, when the <code><strong>fancyLists</strong></code> option is
disabled. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererOlBeginTight</code> macro represents the
+<p>The <code>markdownRendererOlBeginTight</code> macro represents the
beginning of an ordered 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
-enabled and the <strong><code>fancyLists</code></strong> option is
+produced, when the <code><strong>tightLists</strong></code> option is
+enabled and the <code><strong>fancyLists</strong></code> option is
disabled. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererFancyOlBegin</code> macro represents the
+<p>The <code>markdownRendererFancyOlBegin</code> macro represents the
beginning of a fancy ordered list that contains an item with several
paragraphs of text (the list is not tight). This macro will only be
-produced, when the <strong><code>fancyLists</code></strong> option is
+produced, when the <code><strong>fancyLists</strong></code> option is
enabled. The macro receives two arguments: the style of the list item
labels (<code>Decimal</code>, <code>LowerRoman</code>,
<code>UpperRoman</code>, <code>LowerAlpha</code>, and
<code>UpperAlpha</code>), and the style of delimiters between list item
labels and texts (<code>Default</code>, <code>OneParen</code>, and
<code>Period</code>).</p>
-<p>The <code>\markdownRendererFancyOlBeginTight</code> macro represents
+<p>The <code>markdownRendererFancyOlBeginTight</code> macro represents
the beginning of a fancy ordered list that contains no item with several
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
+produced, when the <code><strong>fancyLists</strong></code> and
+<code><strong>tightLists</strong></code> options are enabled. The macro
receives two arguments: the style of the list item labels, and the style
of delimiters between list item labels and texts. See the
-<code>\markdownRendererFancyOlBegin</code> macro for the valid style
+<code>markdownRendererFancyOlBegin</code> macro for the valid style
values.</p>
-<p>The <code>\markdownRendererOlItem</code> macro represents an item in
+<p>The <code>markdownRendererOlItem</code> macro represents an item in
an ordered list. This macro will only be produced, when the
-<strong><code>startNumber</code></strong> option is disabled and the
-<strong><code>fancyLists</code></strong> option is disabled. The macro
+<code><strong>startNumber</strong></code> option is disabled and the
+<code><strong>fancyLists</strong></code> option is disabled. The macro
receives no arguments.</p>
-<p>The <code>\markdownRendererOlItemEnd</code> macro represents the end
+<p>The <code>markdownRendererOlItemEnd</code> macro represents the end
of an item in an ordered list. This macro will only be produced, when
-the <strong><code>fancyLists</code></strong> option is disabled. The
+the <code><strong>fancyLists</strong></code> option is disabled. The
macro receives no arguments.</p>
-<p>The <code>\markdownRendererOlItemWithNumber</code> macro represents
-an item in an ordered list. This macro will only be produced, when the
-<strong><code>startNumber</code></strong> option is enabled and the
-<strong><code>fancyLists</code></strong> option is disabled. The macro
+<p>The <code>markdownRendererOlItemWithNumber</code> macro represents an
+item in an ordered list. This macro will only be produced, when the
+<code><strong>startNumber</strong></code> option is enabled and the
+<code><strong>fancyLists</strong></code> option is disabled. The macro
receives a single numeric argument that corresponds to the item
number.</p>
-<p>The <code>\markdownRendererFancyOlItem</code> macro represents an
-item in a fancy ordered list. This macro will only be produced, when the
-<strong><code>startNumber</code></strong> option is disabled and the
-<strong><code>fancyLists</code></strong> option is enabled. The macro
+<p>The <code>markdownRendererFancyOlItem</code> macro represents an item
+in a fancy ordered list. This macro will only be produced, when the
+<code><strong>startNumber</strong></code> option is disabled and the
+<code><strong>fancyLists</strong></code> option is enabled. The macro
receives no arguments.</p>
-<p>The <code>\markdownRendererFancyOlItemEnd</code> macro represents the
+<p>The <code>markdownRendererFancyOlItemEnd</code> macro represents the
end of an item in a fancy ordered list. This macro will only be
-produced, when the <strong><code>fancyLists</code></strong> option is
+produced, when the <code><strong>fancyLists</strong></code> option is
enabled. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererFancyOlItemWithNumber</code> macro
+<p>The <code>markdownRendererFancyOlItemWithNumber</code> macro
represents an item in a fancy ordered list. This macro will only be
-produced, when the <strong><code>startNumber</code></strong> and
-<strong><code>fancyLists</code></strong> options are enabled. The macro
+produced, when the <code><strong>startNumber</strong></code> and
+<code><strong>fancyLists</strong></code> options are enabled. The macro
receives a single numeric argument that corresponds to the item
number.</p>
-<p>The <code>\markdownRendererOlEnd</code> macro represents the end of
-an ordered list that contains an item with several paragraphs of text
-(the list is not tight). This macro will only be produced, when the
-<strong><code>fancyLists</code></strong> option is disabled. The macro
+<p>The <code>markdownRendererOlEnd</code> macro represents the end of an
+ordered list that contains an item with several paragraphs of text (the
+list is not tight). This macro will only be produced, when the
+<code><strong>fancyLists</strong></code> option is disabled. The macro
receives no arguments.</p>
-<p>The <code>\markdownRendererOlEndTight</code> macro represents the end
+<p>The <code>markdownRendererOlEndTight</code> macro represents the end
of an ordered 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 enabled and the
-<strong><code>fancyLists</code></strong> option is disabled. The macro
+<code><strong>tightLists</strong></code> option is enabled and the
+<code><strong>fancyLists</strong></code> option is disabled. The macro
receives no arguments.</p>
-<p>The <code>\markdownRendererFancyOlEnd</code> macro represents the end
+<p>The <code>markdownRendererFancyOlEnd</code> macro represents the end
of a fancy ordered list that contains an item with several paragraphs of
text (the list is not tight). This macro will only be produced, when the
-<strong><code>fancyLists</code></strong> option is enabled. The macro
+<code><strong>fancyLists</strong></code> option is enabled. The macro
receives no arguments.</p>
-<p>The <code>\markdownRendererFancyOlEndTight</code> macro represents
-the end of a fancy ordered list that contains no item with several
+<p>The <code>markdownRendererFancyOlEndTight</code> macro represents the
+end of a fancy ordered list that contains no item with several
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
+produced, when the <code><strong>fancyLists</strong></code> and
+<code><strong>tightLists</strong></code> options are enabled. The macro
receives no arguments.</p>
<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="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\markdownOptionTightLists</span>{true}</span>
-<span id="cb612-3"><a href="#cb612-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStartNumber</span>{true}</span>
-<span id="cb612-4"><a href="#cb612-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-5"><a href="#cb612-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb612-6"><a href="#cb612-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
-<span id="cb612-7"><a href="#cb612-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb612-8"><a href="#cb612-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb612-9"><a href="#cb612-9" aria-hidden="true" tabindex="-1"></a> the first</span>
-<span id="cb612-10"><a href="#cb612-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb612-11"><a href="#cb612-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb612-12"><a href="#cb612-12" aria-hidden="true" tabindex="-1"></a> , the second</span>
-<span id="cb612-13"><a href="#cb612-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb612-14"><a href="#cb612-14" aria-hidden="true" tabindex="-1"></a> , and the third</span>
-<span id="cb612-15"><a href="#cb612-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb612-16"><a href="#cb612-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb612-17"><a href="#cb612-17" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb612-18"><a href="#cb612-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
-<span id="cb612-19"><a href="#cb612-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
-<span id="cb612-20"><a href="#cb612-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-21"><a href="#cb612-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb612-22"><a href="#cb612-22" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb612-23"><a href="#cb612-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-24"><a href="#cb612-24" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb612-25"><a href="#cb612-25" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb612-26"><a href="#cb612-26" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb612-27"><a href="#cb612-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb612-28"><a href="#cb612-28" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-29"><a href="#cb612-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb612-30"><a href="#cb612-30" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb612-31"><a href="#cb612-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="cb612-32"><a href="#cb612-32" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb612-33"><a href="#cb612-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{}</span>
-<span id="cb612-34"><a href="#cb612-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb612-35"><a href="#cb612-35" aria-hidden="true" tabindex="-1"></a> #1.<span class="fu">\kern</span> 0.5em<span class="co">%</span></span>
-<span id="cb612-36"><a href="#cb612-36" aria-hidden="true" tabindex="-1"></a> This is the</span>
-<span id="cb612-37"><a href="#cb612-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb612-38"><a href="#cb612-38" aria-hidden="true" tabindex="-1"></a> first</span>
-<span id="cb612-39"><a href="#cb612-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb612-40"><a href="#cb612-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb612-41"><a href="#cb612-41" aria-hidden="true" tabindex="-1"></a> second</span>
-<span id="cb612-42"><a href="#cb612-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb612-43"><a href="#cb612-43" aria-hidden="true" tabindex="-1"></a> third</span>
-<span id="cb612-44"><a href="#cb612-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb612-45"><a href="#cb612-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb612-46"><a href="#cb612-46" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb612-47"><a href="#cb612-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
-<span id="cb612-48"><a href="#cb612-48" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{}</span>
-<span id="cb612-49"><a href="#cb612-49" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-50"><a href="#cb612-50" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb612-51"><a href="#cb612-51" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb612-52"><a href="#cb612-52" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-53"><a href="#cb612-53" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb612-54"><a href="#cb612-54" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-55"><a href="#cb612-55" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb612-56"><a href="#cb612-56" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-57"><a href="#cb612-57" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb612-58"><a href="#cb612-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb612-59"><a href="#cb612-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb612-60"><a href="#cb612-60" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb615-2"><a href="#cb615-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTightLists</span>{true}</span>
+<span id="cb615-3"><a href="#cb615-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStartNumber</span>{true}</span>
+<span id="cb615-4"><a href="#cb615-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-5"><a href="#cb615-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb615-6"><a href="#cb615-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
+<span id="cb615-7"><a href="#cb615-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb615-8"><a href="#cb615-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb615-9"><a href="#cb615-9" aria-hidden="true" tabindex="-1"></a> the first</span>
+<span id="cb615-10"><a href="#cb615-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-11"><a href="#cb615-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb615-12"><a href="#cb615-12" aria-hidden="true" tabindex="-1"></a> , the second</span>
+<span id="cb615-13"><a href="#cb615-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-14"><a href="#cb615-14" aria-hidden="true" tabindex="-1"></a> , and the third</span>
+<span id="cb615-15"><a href="#cb615-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-16"><a href="#cb615-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-17"><a href="#cb615-17" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb615-18"><a href="#cb615-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
+<span id="cb615-19"><a href="#cb615-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
+<span id="cb615-20"><a href="#cb615-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-21"><a href="#cb615-21" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb615-22"><a href="#cb615-22" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb615-23"><a href="#cb615-23" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-24"><a href="#cb615-24" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb615-25"><a href="#cb615-25" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb615-26"><a href="#cb615-26" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb615-27"><a href="#cb615-27" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb615-28"><a href="#cb615-28" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-29"><a href="#cb615-29" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb615-30"><a href="#cb615-30" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb615-31"><a href="#cb615-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="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\markdownRendererOlBegin</span>{}</span>
+<span id="cb615-34"><a href="#cb615-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb615-35"><a href="#cb615-35" aria-hidden="true" tabindex="-1"></a> #1.<span class="fu">\kern</span> 0.5em<span class="co">%</span></span>
+<span id="cb615-36"><a href="#cb615-36" aria-hidden="true" tabindex="-1"></a> This is the</span>
+<span id="cb615-37"><a href="#cb615-37" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb615-38"><a href="#cb615-38" aria-hidden="true" tabindex="-1"></a> first</span>
+<span id="cb615-39"><a href="#cb615-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-40"><a href="#cb615-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb615-41"><a href="#cb615-41" aria-hidden="true" tabindex="-1"></a> second</span>
+<span id="cb615-42"><a href="#cb615-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb615-43"><a href="#cb615-43" aria-hidden="true" tabindex="-1"></a> third</span>
+<span id="cb615-44"><a href="#cb615-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-45"><a href="#cb615-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb615-46"><a href="#cb615-46" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb615-47"><a href="#cb615-47" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
+<span id="cb615-48"><a href="#cb615-48" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{}</span>
+<span id="cb615-49"><a href="#cb615-49" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-50"><a href="#cb615-50" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb615-51"><a href="#cb615-51" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb615-52"><a href="#cb615-52" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-53"><a href="#cb615-53" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb615-54"><a href="#cb615-54" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-55"><a href="#cb615-55" aria-hidden="true" tabindex="-1"></a>2. item</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>3. item</span>
+<span id="cb615-58"><a href="#cb615-58" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb615-59"><a href="#cb615-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb615-60"><a href="#cb615-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="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="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">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>
@@ -11414,73 +11401,73 @@ item).</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="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>[tightLists, startNumber]{<span class="ex">markdown</span>}</span>
-<span id="cb614-3"><a href="#cb614-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb614-4"><a href="#cb614-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-5"><a href="#cb614-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
-<span id="cb614-6"><a href="#cb614-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb614-7"><a href="#cb614-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
-<span id="cb614-8"><a href="#cb614-8" aria-hidden="true" tabindex="-1"></a> olBeginTight = { (},</span>
-<span id="cb614-9"><a href="#cb614-9" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
-<span id="cb614-10"><a href="#cb614-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb614-11"><a href="#cb614-11" aria-hidden="true" tabindex="-1"></a> the first</span>
-<span id="cb614-12"><a href="#cb614-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb614-13"><a href="#cb614-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb614-14"><a href="#cb614-14" aria-hidden="true" tabindex="-1"></a> , the second</span>
-<span id="cb614-15"><a href="#cb614-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb614-16"><a href="#cb614-16" aria-hidden="true" tabindex="-1"></a> , and the third</span>
-<span id="cb614-17"><a href="#cb614-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb614-18"><a href="#cb614-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb614-19"><a href="#cb614-19" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb614-20"><a href="#cb614-20" aria-hidden="true" tabindex="-1"></a> olItemEnd = {},</span>
-<span id="cb614-21"><a href="#cb614-21" aria-hidden="true" tabindex="-1"></a> olEndTight = {).},</span>
-<span id="cb614-22"><a href="#cb614-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb614-23"><a href="#cb614-23" aria-hidden="true" tabindex="-1"></a>]</span>
-<span id="cb614-24"><a href="#cb614-24" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb614-25"><a href="#cb614-25" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-26"><a href="#cb614-26" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb614-27"><a href="#cb614-27" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb614-28"><a href="#cb614-28" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb614-29"><a href="#cb614-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb614-30"><a href="#cb614-30" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-31"><a href="#cb614-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
-<span id="cb614-32"><a href="#cb614-32" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb614-33"><a href="#cb614-33" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
-<span id="cb614-34"><a href="#cb614-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb614-35"><a href="#cb614-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="cb614-36"><a href="#cb614-36" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb614-37"><a href="#cb614-37" aria-hidden="true" tabindex="-1"></a> olBeginTight = {<span class="kw">\begin</span>{<span class="ex">enumerate</span>}},</span>
-<span id="cb614-38"><a href="#cb614-38" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
-<span id="cb614-39"><a href="#cb614-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span> This is the</span>
-<span id="cb614-40"><a href="#cb614-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb614-41"><a href="#cb614-41" aria-hidden="true" tabindex="-1"></a> first</span>
-<span id="cb614-42"><a href="#cb614-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb614-43"><a href="#cb614-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb614-44"><a href="#cb614-44" aria-hidden="true" tabindex="-1"></a> second</span>
-<span id="cb614-45"><a href="#cb614-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb614-46"><a href="#cb614-46" aria-hidden="true" tabindex="-1"></a> third</span>
-<span id="cb614-47"><a href="#cb614-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb614-48"><a href="#cb614-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb614-49"><a href="#cb614-49" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb614-50"><a href="#cb614-50" aria-hidden="true" tabindex="-1"></a> olItemEnd = {.},</span>
-<span id="cb614-51"><a href="#cb614-51" aria-hidden="true" tabindex="-1"></a> olEnd = {<span class="kw">\end</span>{<span class="ex">enumerate</span>}},</span>
-<span id="cb614-52"><a href="#cb614-52" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb614-53"><a href="#cb614-53" aria-hidden="true" tabindex="-1"></a>]</span>
-<span id="cb614-54"><a href="#cb614-54" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb614-55"><a href="#cb614-55" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-56"><a href="#cb614-56" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb614-57"><a href="#cb614-57" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-58"><a href="#cb614-58" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb614-59"><a href="#cb614-59" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-60"><a href="#cb614-60" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb614-61"><a href="#cb614-61" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb614-62"><a href="#cb614-62" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb614-63"><a href="#cb614-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="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>[tightLists, startNumber]{<span class="ex">markdown</span>}</span>
+<span id="cb617-3"><a href="#cb617-3" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb617-4"><a href="#cb617-4" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-5"><a href="#cb617-5" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb617-6"><a href="#cb617-6" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb617-7"><a href="#cb617-7" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {},</span>
+<span id="cb617-8"><a href="#cb617-8" aria-hidden="true" tabindex="-1"></a> olBeginTight = { (},</span>
+<span id="cb617-9"><a href="#cb617-9" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
+<span id="cb617-10"><a href="#cb617-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb617-11"><a href="#cb617-11" aria-hidden="true" tabindex="-1"></a> the first</span>
+<span id="cb617-12"><a href="#cb617-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb617-13"><a href="#cb617-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb617-14"><a href="#cb617-14" aria-hidden="true" tabindex="-1"></a> , the second</span>
+<span id="cb617-15"><a href="#cb617-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb617-16"><a href="#cb617-16" aria-hidden="true" tabindex="-1"></a> , and the third</span>
+<span id="cb617-17"><a href="#cb617-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb617-18"><a href="#cb617-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb617-19"><a href="#cb617-19" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb617-20"><a href="#cb617-20" aria-hidden="true" tabindex="-1"></a> olItemEnd = {},</span>
+<span id="cb617-21"><a href="#cb617-21" aria-hidden="true" tabindex="-1"></a> olEndTight = {).},</span>
+<span id="cb617-22"><a href="#cb617-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb617-23"><a href="#cb617-23" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb617-24"><a href="#cb617-24" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb617-25"><a href="#cb617-25" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-26"><a href="#cb617-26" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb617-27"><a href="#cb617-27" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb617-28"><a href="#cb617-28" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb617-29"><a href="#cb617-29" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb617-30"><a href="#cb617-30" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-31"><a href="#cb617-31" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb617-32"><a href="#cb617-32" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb617-33"><a href="#cb617-33" aria-hidden="true" tabindex="-1"></a> interblockSeparator = {<span class="co">%</span></span>
+<span id="cb617-34"><a href="#cb617-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb617-35"><a href="#cb617-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="cb617-36"><a href="#cb617-36" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb617-37"><a href="#cb617-37" aria-hidden="true" tabindex="-1"></a> olBeginTight = {<span class="kw">\begin</span>{<span class="ex">enumerate</span>}},</span>
+<span id="cb617-38"><a href="#cb617-38" aria-hidden="true" tabindex="-1"></a> olItemWithNumber = {<span class="co">%</span></span>
+<span id="cb617-39"><a href="#cb617-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\item</span> This is the</span>
+<span id="cb617-40"><a href="#cb617-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb617-41"><a href="#cb617-41" aria-hidden="true" tabindex="-1"></a> first</span>
+<span id="cb617-42"><a href="#cb617-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb617-43"><a href="#cb617-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb617-44"><a href="#cb617-44" aria-hidden="true" tabindex="-1"></a> second</span>
+<span id="cb617-45"><a href="#cb617-45" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb617-46"><a href="#cb617-46" aria-hidden="true" tabindex="-1"></a> third</span>
+<span id="cb617-47"><a href="#cb617-47" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb617-48"><a href="#cb617-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb617-49"><a href="#cb617-49" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb617-50"><a href="#cb617-50" aria-hidden="true" tabindex="-1"></a> olItemEnd = {.},</span>
+<span id="cb617-51"><a href="#cb617-51" aria-hidden="true" tabindex="-1"></a> olEnd = {<span class="kw">\end</span>{<span class="ex">enumerate</span>}},</span>
+<span id="cb617-52"><a href="#cb617-52" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb617-53"><a href="#cb617-53" aria-hidden="true" tabindex="-1"></a>]</span>
+<span id="cb617-54"><a href="#cb617-54" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb617-55"><a href="#cb617-55" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-56"><a href="#cb617-56" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb617-57"><a href="#cb617-57" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-58"><a href="#cb617-58" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb617-59"><a href="#cb617-59" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-60"><a href="#cb617-60" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb617-61"><a href="#cb617-61" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb617-62"><a href="#cb617-62" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb617-63"><a href="#cb617-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="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="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>
@@ -11497,74 +11484,74 @@ item).</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="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></span>
-<span id="cb616-3"><a href="#cb616-3" aria-hidden="true" tabindex="-1"></a> [</span>
-<span id="cb616-4"><a href="#cb616-4" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span>
-<span id="cb616-5"><a href="#cb616-5" aria-hidden="true" tabindex="-1"></a> startNumber = yes,</span>
-<span id="cb616-6"><a href="#cb616-6" aria-hidden="true" tabindex="-1"></a> ]</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">\def\markdownRendererInterblockSeparator</span>{}</span>
-<span id="cb616-10"><a href="#cb616-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
-<span id="cb616-11"><a href="#cb616-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb616-12"><a href="#cb616-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb616-13"><a href="#cb616-13" aria-hidden="true" tabindex="-1"></a> the first</span>
-<span id="cb616-14"><a href="#cb616-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb616-15"><a href="#cb616-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb616-16"><a href="#cb616-16" aria-hidden="true" tabindex="-1"></a> , the second</span>
-<span id="cb616-17"><a href="#cb616-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb616-18"><a href="#cb616-18" aria-hidden="true" tabindex="-1"></a> , and the third</span>
-<span id="cb616-19"><a href="#cb616-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb616-20"><a href="#cb616-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb616-21"><a href="#cb616-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb616-22"><a href="#cb616-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
-<span id="cb616-23"><a href="#cb616-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
-<span id="cb616-24"><a href="#cb616-24" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-25"><a href="#cb616-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb616-26"><a href="#cb616-26" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
-<span id="cb616-27"><a href="#cb616-27" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-28"><a href="#cb616-28" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb616-29"><a href="#cb616-29" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb616-30"><a href="#cb616-30" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb616-31"><a href="#cb616-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb616-32"><a href="#cb616-32" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-33"><a href="#cb616-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
-<span id="cb616-34"><a href="#cb616-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
-<span id="cb616-35"><a href="#cb616-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="cb616-36"><a href="#cb616-36" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb616-37"><a href="#cb616-37" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{<span class="fu">\startitemize</span>}</span>
-<span id="cb616-38"><a href="#cb616-38" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
-<span id="cb616-39"><a href="#cb616-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\sym</span>{#1.}</span>
-<span id="cb616-40"><a href="#cb616-40" aria-hidden="true" tabindex="-1"></a> This is the</span>
-<span id="cb616-41"><a href="#cb616-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
-<span id="cb616-42"><a href="#cb616-42" aria-hidden="true" tabindex="-1"></a> first</span>
-<span id="cb616-43"><a href="#cb616-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb616-44"><a href="#cb616-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
-<span id="cb616-45"><a href="#cb616-45" aria-hidden="true" tabindex="-1"></a> second</span>
-<span id="cb616-46"><a href="#cb616-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb616-47"><a href="#cb616-47" aria-hidden="true" tabindex="-1"></a> third</span>
-<span id="cb616-48"><a href="#cb616-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb616-49"><a href="#cb616-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb616-50"><a href="#cb616-50" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb616-51"><a href="#cb616-51" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
-<span id="cb616-52"><a href="#cb616-52" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{<span class="fu">\stopitemize</span>}</span>
-<span id="cb616-53"><a href="#cb616-53" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-54"><a href="#cb616-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb616-55"><a href="#cb616-55" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
-<span id="cb616-56"><a href="#cb616-56" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-57"><a href="#cb616-57" aria-hidden="true" tabindex="-1"></a>1. item</span>
-<span id="cb616-58"><a href="#cb616-58" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-59"><a href="#cb616-59" aria-hidden="true" tabindex="-1"></a>2. item</span>
-<span id="cb616-60"><a href="#cb616-60" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-61"><a href="#cb616-61" aria-hidden="true" tabindex="-1"></a>3. item</span>
-<span id="cb616-62"><a href="#cb616-62" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb616-63"><a href="#cb616-63" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb616-64"><a href="#cb616-64" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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">\usemodule</span>[t][markdown]</span>
+<span id="cb619-2"><a href="#cb619-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span></span>
+<span id="cb619-3"><a href="#cb619-3" aria-hidden="true" tabindex="-1"></a> [</span>
+<span id="cb619-4"><a href="#cb619-4" aria-hidden="true" tabindex="-1"></a> tightLists = yes,</span>
+<span id="cb619-5"><a href="#cb619-5" aria-hidden="true" tabindex="-1"></a> startNumber = yes,</span>
+<span id="cb619-6"><a href="#cb619-6" aria-hidden="true" tabindex="-1"></a> ]</span>
+<span id="cb619-7"><a href="#cb619-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb619-8"><a href="#cb619-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-9"><a href="#cb619-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{}</span>
+<span id="cb619-10"><a href="#cb619-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBeginTight</span>{ (}</span>
+<span id="cb619-11"><a href="#cb619-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb619-12"><a href="#cb619-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb619-13"><a href="#cb619-13" aria-hidden="true" tabindex="-1"></a> the first</span>
+<span id="cb619-14"><a href="#cb619-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb619-15"><a href="#cb619-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb619-16"><a href="#cb619-16" aria-hidden="true" tabindex="-1"></a> , the second</span>
+<span id="cb619-17"><a href="#cb619-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb619-18"><a href="#cb619-18" aria-hidden="true" tabindex="-1"></a> , and the third</span>
+<span id="cb619-19"><a href="#cb619-19" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb619-20"><a href="#cb619-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb619-21"><a href="#cb619-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb619-22"><a href="#cb619-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{}</span>
+<span id="cb619-23"><a href="#cb619-23" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEndTight</span>{).}</span>
+<span id="cb619-24"><a href="#cb619-24" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-25"><a href="#cb619-25" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb619-26"><a href="#cb619-26" aria-hidden="true" tabindex="-1"></a>This is a tight list</span>
+<span id="cb619-27"><a href="#cb619-27" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-28"><a href="#cb619-28" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb619-29"><a href="#cb619-29" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb619-30"><a href="#cb619-30" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb619-31"><a href="#cb619-31" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb619-32"><a href="#cb619-32" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-33"><a href="#cb619-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererInterblockSeparator</span>{<span class="co">%</span></span>
+<span id="cb619-34"><a href="#cb619-34" aria-hidden="true" tabindex="-1"></a> :<span class="fu">\par</span></span>
+<span id="cb619-35"><a href="#cb619-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="cb619-36"><a href="#cb619-36" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb619-37"><a href="#cb619-37" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlBegin</span>{<span class="fu">\startitemize</span>}</span>
+<span id="cb619-38"><a href="#cb619-38" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemWithNumber</span>#1{<span class="co">%</span></span>
+<span id="cb619-39"><a href="#cb619-39" aria-hidden="true" tabindex="-1"></a> <span class="fu">\sym</span>{#1.}</span>
+<span id="cb619-40"><a href="#cb619-40" aria-hidden="true" tabindex="-1"></a> This is the</span>
+<span id="cb619-41"><a href="#cb619-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=1<span class="fu">\relax</span></span>
+<span id="cb619-42"><a href="#cb619-42" aria-hidden="true" tabindex="-1"></a> first</span>
+<span id="cb619-43"><a href="#cb619-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb619-44"><a href="#cb619-44" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum</span> #1=2<span class="fu">\relax</span></span>
+<span id="cb619-45"><a href="#cb619-45" aria-hidden="true" tabindex="-1"></a> second</span>
+<span id="cb619-46"><a href="#cb619-46" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb619-47"><a href="#cb619-47" aria-hidden="true" tabindex="-1"></a> third</span>
+<span id="cb619-48"><a href="#cb619-48" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb619-49"><a href="#cb619-49" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb619-50"><a href="#cb619-50" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb619-51"><a href="#cb619-51" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlItemEnd</span>{.<span class="fu">\par</span>}</span>
+<span id="cb619-52"><a href="#cb619-52" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererOlEnd</span>{<span class="fu">\stopitemize</span>}</span>
+<span id="cb619-53"><a href="#cb619-53" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-54"><a href="#cb619-54" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb619-55"><a href="#cb619-55" aria-hidden="true" tabindex="-1"></a>This is a loose list</span>
+<span id="cb619-56"><a href="#cb619-56" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-57"><a href="#cb619-57" aria-hidden="true" tabindex="-1"></a>1. item</span>
+<span id="cb619-58"><a href="#cb619-58" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-59"><a href="#cb619-59" aria-hidden="true" tabindex="-1"></a>2. item</span>
+<span id="cb619-60"><a href="#cb619-60" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-61"><a href="#cb619-61" aria-hidden="true" tabindex="-1"></a>3. item</span>
+<span id="cb619-62"><a href="#cb619-62" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb619-63"><a href="#cb619-63" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb619-64"><a href="#cb619-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="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> <span class="at">--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">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>
@@ -11579,57 +11566,57 @@ item).</p>
</blockquote>
<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
+<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
+file containing the inline raw span contents and the raw attribute that
designates the format of the inline raw span. This macro will only be
-produced, when the <strong><code>rawAttribute</code></strong> option is
+produced, when the <code><strong>rawAttribute</strong></code> option is
enabled.</p>
-<p>The <code>\markdownRendererInputRawBlock</code> macro represents a
-raw block. The macro receives two arguments: the filename of a file
-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>
+<p>The <code>markdownRendererInputRawBlock</code> macro represents a raw
+block. The macro receives two arguments: the filename of a file
+containing the raw block and the raw attribute that designates the
+format of the raw block. This macro will only be produced, when the
+<code><strong>rawAttribute</strong></code> and
+<code><strong>fencedCode</strong></code> options are enabled.</p>
<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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb618-2"><a href="#cb618-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
-<span id="cb618-3"><a href="#cb618-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb618-4"><a href="#cb618-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb618-5"><a href="#cb618-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\cs</span>_new:Nn</span>
-<span id="cb618-6"><a href="#cb618-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\display</span>_raw_content:nn</span>
-<span id="cb618-7"><a href="#cb618-7" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb618-8"><a href="#cb618-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="cb618-9"><a href="#cb618-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnTF</span>
-<span id="cb618-10"><a href="#cb618-10" aria-hidden="true" tabindex="-1"></a> { #2 }</span>
-<span id="cb618-11"><a href="#cb618-11" aria-hidden="true" tabindex="-1"></a> { tex }</span>
-<span id="cb618-12"><a href="#cb618-12" aria-hidden="true" tabindex="-1"></a> { <span class="fu">\markdownEscape</span> { #1 } }</span>
-<span id="cb618-13"><a href="#cb618-13" aria-hidden="true" tabindex="-1"></a> <span class="co">% Otherwise, ignore the content.</span></span>
-<span id="cb618-14"><a href="#cb618-14" aria-hidden="true" tabindex="-1"></a> { }</span>
-<span id="cb618-15"><a href="#cb618-15" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb618-16"><a href="#cb618-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb618-17"><a href="#cb618-17" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb618-18"><a href="#cb618-18" aria-hidden="true" tabindex="-1"></a> rawInline = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } },</span>
-<span id="cb618-19"><a href="#cb618-19" aria-hidden="true" tabindex="-1"></a> rawBlock = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } }</span>
-<span id="cb618-20"><a href="#cb618-20" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb618-21"><a href="#cb618-21" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb618-22"><a href="#cb618-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb618-23"><a href="#cb618-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb618-24"><a href="#cb618-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb618-25"><a href="#cb618-25" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span>
-<span id="cb618-26"><a href="#cb618-26" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb618-27"><a href="#cb618-27" aria-hidden="true" tabindex="-1"></a>``` {=html}</span>
-<span id="cb618-28"><a href="#cb618-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="cb618-29"><a href="#cb618-29" aria-hidden="true" tabindex="-1"></a>```</span>
-<span id="cb618-30"><a href="#cb618-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb618-31"><a href="#cb618-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="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>[rawAttribute, fencedCode]{<span class="ex">markdown</span>}</span>
+<span id="cb621-3"><a href="#cb621-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb621-4"><a href="#cb621-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb621-5"><a href="#cb621-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\cs</span>_new:Nn</span>
+<span id="cb621-6"><a href="#cb621-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\display</span>_raw_content:nn</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="co">% If the raw attribute is TeX, execute the content as a TeX document.</span></span>
+<span id="cb621-9"><a href="#cb621-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">\str</span>_if_eq:nnTF</span>
+<span id="cb621-10"><a href="#cb621-10" aria-hidden="true" tabindex="-1"></a> { #2 }</span>
+<span id="cb621-11"><a href="#cb621-11" aria-hidden="true" tabindex="-1"></a> { tex }</span>
+<span id="cb621-12"><a href="#cb621-12" aria-hidden="true" tabindex="-1"></a> { <span class="fu">\markdownEscape</span> { #1 } }</span>
+<span id="cb621-13"><a href="#cb621-13" aria-hidden="true" tabindex="-1"></a> <span class="co">% Otherwise, ignore the content.</span></span>
+<span id="cb621-14"><a href="#cb621-14" aria-hidden="true" tabindex="-1"></a> { }</span>
+<span id="cb621-15"><a href="#cb621-15" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb621-16"><a href="#cb621-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb621-17"><a href="#cb621-17" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb621-18"><a href="#cb621-18" aria-hidden="true" tabindex="-1"></a> rawInline = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } },</span>
+<span id="cb621-19"><a href="#cb621-19" aria-hidden="true" tabindex="-1"></a> rawBlock = { <span class="fu">\display</span>_raw_content:nn { #1 } { #2 } }</span>
+<span id="cb621-20"><a href="#cb621-20" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb621-21"><a href="#cb621-21" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb621-22"><a href="#cb621-22" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb621-23"><a href="#cb621-23" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb621-24"><a href="#cb621-24" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb621-25"><a href="#cb621-25" aria-hidden="true" tabindex="-1"></a>`<span class="ss">$H_2 O$</span>`{=tex} is a liquid.</span>
+<span id="cb621-26"><a href="#cb621-26" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb621-27"><a href="#cb621-27" aria-hidden="true" tabindex="-1"></a>``` {=html}</span>
+<span id="cb621-28"><a href="#cb621-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="cb621-29"><a href="#cb621-29" aria-hidden="true" tabindex="-1"></a>```</span>
+<span id="cb621-30"><a href="#cb621-30" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb621-31"><a href="#cb621-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="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">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:</p>
<blockquote>
@@ -11637,13 +11624,13 @@ contain the following text:</p>
</blockquote>
<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
+<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.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
+<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.34" id="special-character-renderers"><span
@@ -11654,27 +11641,27 @@ class="tex">T<sub>e</sub>X</span> characters, including the active pipe
character (<code>|</code>) of Con<span
class="tex">T<sub>e</sub>X</span>t, in the input text:</p>
<ul>
-<li><code>\markdownRendererAmpersand</code> replaces the ampersand
+<li><code>markdownRendererAmpersand</code> replaces the ampersand
(<code>&amp;</code>).</li>
-<li><code>\markdownRendererBackslash</code> replaces the backslash
+<li><code>markdownRendererBackslash</code> replaces the backslash
(<code>\</code>).</li>
-<li><code>\markdownRendererCircumflex</code> replaces the circumflex
+<li><code>markdownRendererCircumflex</code> replaces the circumflex
(<code>^</code>).</li>
-<li><code>\markdownRendererDollarSign</code> replaces the dollar sign
+<li><code>markdownRendererDollarSign</code> replaces the dollar sign
(<code>$</code>).</li>
-<li><code>\markdownRendererHash</code> replaces the hash sign
+<li><code>markdownRendererHash</code> replaces the hash sign
(<code>#</code>).</li>
-<li><code>\markdownRendererLeftBrace</code> replaces the left brace
+<li><code>markdownRendererLeftBrace</code> replaces the left brace
(<code>{</code>).</li>
-<li><code>\markdownRendererPercentSign</code> replaces the percent sign
+<li><code>markdownRendererPercentSign</code> replaces the percent sign
(<code>%</code>).</li>
-<li><code>\markdownRendererPipe</code> replaces the pipe character
+<li><code>markdownRendererPipe</code> replaces the pipe character
(<code>|</code>).</li>
-<li><code>\markdownRendererRightBrace</code> replaces the right brace
+<li><code>markdownRendererRightBrace</code> replaces the right brace
(<code>}</code>).</li>
-<li><code>\markdownRendererTilde</code> replaces the tilde
+<li><code>markdownRendererTilde</code> replaces the tilde
(<code>~</code>).</li>
-<li><code>\markdownRendererUnderscore</code> replaces the underscore
+<li><code>markdownRendererUnderscore</code> replaces the underscore
(<code>_</code>).</li>
</ul>
<h5 class="unnumbered" id="plain-tex-example-40">Plain <span
@@ -11684,16 +11671,16 @@ class="tex">T<sub>e</sub>X</span> Example</h5>
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="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="fu">\input</span> markdown</span>
-<span id="cb620-2"><a href="#cb620-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span>
-<span id="cb620-3"><a href="#cb620-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb620-4"><a href="#cb620-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb620-5"><a href="#cb620-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb620-6"><a href="#cb620-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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">\markdownBegin</span></span>
+<span id="cb623-4"><a href="#cb623-4" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb623-5"><a href="#cb623-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb623-6"><a href="#cb623-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="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">luatex</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">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>
@@ -11707,22 +11694,22 @@ class="latex">L<sup>a</sup>T<sub>e</sub>X</span> Example</h5>
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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb622-2"><a href="#cb622-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb622-3"><a href="#cb622-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb622-4"><a href="#cb622-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb622-5"><a href="#cb622-5" aria-hidden="true" tabindex="-1"></a> tilde = ~,</span>
-<span id="cb622-6"><a href="#cb622-6" aria-hidden="true" tabindex="-1"></a> },</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="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb622-9"><a href="#cb622-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb622-10"><a href="#cb622-10" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb622-11"><a href="#cb622-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb622-12"><a href="#cb622-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb625-2"><a href="#cb625-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb625-3"><a href="#cb625-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb625-4"><a href="#cb625-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb625-5"><a href="#cb625-5" aria-hidden="true" tabindex="-1"></a> tilde = ~,</span>
+<span id="cb625-6"><a href="#cb625-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb625-7"><a href="#cb625-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb625-8"><a href="#cb625-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb625-9"><a href="#cb625-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb625-10"><a href="#cb625-10" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb625-11"><a href="#cb625-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb625-12"><a href="#cb625-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="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">lualatex</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">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>
@@ -11736,17 +11723,17 @@ class="tex">T<sub>e</sub>X</span>t Example</h5>
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="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">\usemodule</span>[t][markdown]</span>
-<span id="cb624-2"><a href="#cb624-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span>
-<span id="cb624-3"><a href="#cb624-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb624-4"><a href="#cb624-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb624-5"><a href="#cb624-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
-<span id="cb624-6"><a href="#cb624-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb624-7"><a href="#cb624-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb627-2"><a href="#cb627-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{~}</span>
+<span id="cb627-3"><a href="#cb627-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb627-4"><a href="#cb627-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb627-5"><a href="#cb627-5" aria-hidden="true" tabindex="-1"></a>Bartel~Leendert van~der~Waerden</span>
+<span id="cb627-6"><a href="#cb627-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb627-7"><a href="#cb627-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="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">context</span> <span class="at">--luatex</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">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>
@@ -11756,27 +11743,27 @@ non-breaking space:</p>
<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
+<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
+produced, when the <code><strong>strikeThrough</strong></code> option is
enabled.</p>
<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="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="fu">\input</span> markdown</span>
-<span id="cb626-2"><a href="#cb626-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
-<span id="cb626-3"><a href="#cb626-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soulutf8.sty</span>
-<span id="cb626-4"><a href="#cb626-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
-<span id="cb626-5"><a href="#cb626-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb626-6"><a href="#cb626-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb626-7"><a href="#cb626-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb626-8"><a href="#cb626-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb629-2"><a href="#cb629-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionStrikeThrough</span>{true}</span>
+<span id="cb629-3"><a href="#cb629-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> soul.sty</span>
+<span id="cb629-4"><a href="#cb629-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\st</span>{#1}}</span>
+<span id="cb629-5"><a href="#cb629-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</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">\markdownEnd</span></span>
+<span id="cb629-8"><a href="#cb629-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="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">luatex</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">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>
@@ -11786,23 +11773,23 @@ 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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb628-2"><a href="#cb628-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span>
-<span id="cb628-3"><a href="#cb628-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soulutf8</span>}</span>
-<span id="cb628-4"><a href="#cb628-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb628-5"><a href="#cb628-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb628-6"><a href="#cb628-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
-<span id="cb628-7"><a href="#cb628-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb628-8"><a href="#cb628-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb628-9"><a href="#cb628-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb628-10"><a href="#cb628-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb628-11"><a href="#cb628-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb628-12"><a href="#cb628-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb628-13"><a href="#cb628-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb631-2"><a href="#cb631-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[strikeThrough]{<span class="ex">markdown</span>}</span>
+<span id="cb631-3"><a href="#cb631-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">soul</span>}</span>
+<span id="cb631-4"><a href="#cb631-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb631-5"><a href="#cb631-5" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb631-6"><a href="#cb631-6" aria-hidden="true" tabindex="-1"></a> strikeThrough = {<span class="fu">\st</span>{#1}},</span>
+<span id="cb631-7"><a href="#cb631-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb631-8"><a href="#cb631-8" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb631-9"><a href="#cb631-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb631-10"><a href="#cb631-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb631-11"><a href="#cb631-11" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb631-12"><a href="#cb631-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb631-13"><a href="#cb631-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="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">lualatex</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">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>
@@ -11812,18 +11799,18 @@ 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="cb630"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb630-1"><a href="#cb630-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb630-2"><a href="#cb630-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
-<span id="cb630-3"><a href="#cb630-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
-<span id="cb630-4"><a href="#cb630-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb630-5"><a href="#cb630-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb630-6"><a href="#cb630-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
-<span id="cb630-7"><a href="#cb630-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb630-8"><a href="#cb630-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb633-2"><a href="#cb633-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[strikeThrough = yes]</span>
+<span id="cb633-3"><a href="#cb633-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererStrikeThrough</span>#1{<span class="fu">\overstrikes</span>{#1}}</span>
+<span id="cb633-4"><a href="#cb633-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb633-5"><a href="#cb633-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb633-6"><a href="#cb633-6" aria-hidden="true" tabindex="-1"></a>This is ~~a lunar roving vehicle~~ strike-through text.</span>
+<span id="cb633-7"><a href="#cb633-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb633-8"><a href="#cb633-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="cb631"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb631-1"><a href="#cb631-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</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">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>
@@ -11831,26 +11818,26 @@ contain the following text:</p>
</blockquote>
<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
+<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
+produced, when the <code><strong>subscripts</strong></code> option is
enabled.</p>
<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="cb632"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb632-1"><a href="#cb632-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb632-2"><a href="#cb632-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSubscripts</span>{true}</span>
-<span id="cb632-3"><a href="#cb632-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span>
-<span id="cb632-4"><a href="#cb632-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb632-5"><a href="#cb632-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb632-6"><a href="#cb632-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb632-7"><a href="#cb632-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb635-2"><a href="#cb635-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSubscripts</span>{true}</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">\markdownBegin</span></span>
+<span id="cb635-5"><a href="#cb635-5" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb635-6"><a href="#cb635-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb635-7"><a href="#cb635-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="cb633"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb633-1"><a href="#cb633-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -11860,22 +11847,22 @@ 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="cb634"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb634-1"><a href="#cb634-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb634-2"><a href="#cb634-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb634-3"><a href="#cb634-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb634-4"><a href="#cb634-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb634-5"><a href="#cb634-5" aria-hidden="true" tabindex="-1"></a> subscript = { (#1 moles) and },</span>
-<span id="cb634-6"><a href="#cb634-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb634-7"><a href="#cb634-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb634-8"><a href="#cb634-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb634-9"><a href="#cb634-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb634-10"><a href="#cb634-10" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb634-11"><a href="#cb634-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb634-12"><a href="#cb634-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb637-2"><a href="#cb637-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[subscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb637-3"><a href="#cb637-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb637-4"><a href="#cb637-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb637-5"><a href="#cb637-5" aria-hidden="true" tabindex="-1"></a> subscript = { (#1 moles) and },</span>
+<span id="cb637-6"><a href="#cb637-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb637-7"><a href="#cb637-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb637-8"><a href="#cb637-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb637-9"><a href="#cb637-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb637-10"><a href="#cb637-10" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb637-11"><a href="#cb637-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb637-12"><a href="#cb637-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="cb635"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb635-1"><a href="#cb635-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -11885,18 +11872,18 @@ 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="cb636"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb636-1"><a href="#cb636-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb636-2"><a href="#cb636-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
-<span id="cb636-3"><a href="#cb636-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span>
-<span id="cb636-4"><a href="#cb636-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb636-5"><a href="#cb636-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb636-6"><a href="#cb636-6" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
-<span id="cb636-7"><a href="#cb636-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb636-8"><a href="#cb636-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb639-2"><a href="#cb639-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[subscripts = yes]</span>
+<span id="cb639-3"><a href="#cb639-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSubscript</span>#1{ (#1 moles) and }</span>
+<span id="cb639-4"><a href="#cb639-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb639-5"><a href="#cb639-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb639-6"><a href="#cb639-6" aria-hidden="true" tabindex="-1"></a>H~2~O is a liquid.</span>
+<span id="cb639-7"><a href="#cb639-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb639-8"><a href="#cb639-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="cb637"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb637-1"><a href="#cb637-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</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">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>
@@ -11904,26 +11891,26 @@ contain the following text:</p>
</blockquote>
<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
+<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
+produced, when the <code><strong>superscripts</strong></code> option is
enabled.</p>
<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="cb638"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb638-1"><a href="#cb638-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb638-2"><a href="#cb638-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSuperscripts</span>{true}</span>
-<span id="cb638-3"><a href="#cb638-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span>
-<span id="cb638-4"><a href="#cb638-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb638-5"><a href="#cb638-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb638-6"><a href="#cb638-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb638-7"><a href="#cb638-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb641-2"><a href="#cb641-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionSuperscripts</span>{true}</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">\markdownBegin</span></span>
+<span id="cb641-5"><a href="#cb641-5" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb641-6"><a href="#cb641-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb641-7"><a href="#cb641-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="cb639"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb639-1"><a href="#cb639-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -11933,22 +11920,22 @@ 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="cb640"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb640-1"><a href="#cb640-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb640-2"><a href="#cb640-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[superscripts]{<span class="ex">markdown</span>}</span>
-<span id="cb640-3"><a href="#cb640-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb640-4"><a href="#cb640-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb640-5"><a href="#cb640-5" aria-hidden="true" tabindex="-1"></a> superscript = { taken to the power of #1},</span>
-<span id="cb640-6"><a href="#cb640-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb640-7"><a href="#cb640-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb640-8"><a href="#cb640-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb640-9"><a href="#cb640-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb640-10"><a href="#cb640-10" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb640-11"><a href="#cb640-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb640-12"><a href="#cb640-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="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>[superscripts]{<span class="ex">markdown</span>}</span>
+<span id="cb643-3"><a href="#cb643-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb643-4"><a href="#cb643-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb643-5"><a href="#cb643-5" aria-hidden="true" tabindex="-1"></a> superscript = { taken to the power of #1},</span>
+<span id="cb643-6"><a href="#cb643-6" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb643-7"><a href="#cb643-7" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb643-8"><a href="#cb643-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb643-9"><a href="#cb643-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb643-10"><a href="#cb643-10" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb643-11"><a href="#cb643-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb643-12"><a href="#cb643-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="cb641"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb641-1"><a href="#cb641-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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>
@@ -11958,18 +11945,18 @@ 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="cb642"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb642-1"><a href="#cb642-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb642-2"><a href="#cb642-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
-<span id="cb642-3"><a href="#cb642-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span>
-<span id="cb642-4"><a href="#cb642-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb642-5"><a href="#cb642-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb642-6"><a href="#cb642-6" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
-<span id="cb642-7"><a href="#cb642-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb642-8"><a href="#cb642-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb645-2"><a href="#cb645-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[superscripts = yes]</span>
+<span id="cb645-3"><a href="#cb645-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererSuperscript</span>#1{ taken to the power of #1}</span>
+<span id="cb645-4"><a href="#cb645-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb645-5"><a href="#cb645-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb645-6"><a href="#cb645-6" aria-hidden="true" tabindex="-1"></a>2^10^ is 1024.</span>
+<span id="cb645-7"><a href="#cb645-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb645-8"><a href="#cb645-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="cb643"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb643-1"><a href="#cb643-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -11979,67 +11966,67 @@ contain the following text:</p>
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
+<code><strong>tableCaptions</strong></code> and
+<code><strong>tableAttributes</strong></code> 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="cb644"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb644-1"><a href="#cb644-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb644-2"><a href="#cb644-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
-<span id="cb644-3"><a href="#cb644-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span>
-<span id="cb644-4"><a href="#cb644-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span>
-<span id="cb644-5"><a href="#cb644-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span>
-<span id="cb644-6"><a href="#cb644-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span>
-<span id="cb644-7"><a href="#cb644-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
-<span id="cb644-8"><a href="#cb644-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
-<span id="cb644-9"><a href="#cb644-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb644-10"><a href="#cb644-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb644-11"><a href="#cb644-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb644-12"><a href="#cb644-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span>
-<span id="cb644-13"><a href="#cb644-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
-<span id="cb644-14"><a href="#cb644-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb644-15"><a href="#cb644-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb644-16"><a href="#cb644-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span>
-<span id="cb644-17"><a href="#cb644-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
-<span id="cb644-18"><a href="#cb644-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb644-19"><a href="#cb644-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
-<span id="cb644-20"><a href="#cb644-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span>
-<span id="cb644-21"><a href="#cb644-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb644-22"><a href="#cb644-22" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb644-23"><a href="#cb644-23" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb644-24"><a href="#cb644-24" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb644-25"><a href="#cb644-25" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb644-26"><a href="#cb644-26" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb644-27"><a href="#cb644-27" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb644-28"><a href="#cb644-28" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb644-29"><a href="#cb644-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
-<span id="cb644-30"><a href="#cb644-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
-<span id="cb644-31"><a href="#cb644-31" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb644-32"><a href="#cb644-32" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb644-33"><a href="#cb644-33" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb644-34"><a href="#cb644-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb644-35"><a href="#cb644-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb644-36"><a href="#cb644-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb644-37"><a href="#cb644-37" aria-hidden="true" tabindex="-1"></a>See Table &lt;#example-table&gt;.</span>
-<span id="cb644-38"><a href="#cb644-38" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb644-39"><a href="#cb644-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb644-40"><a href="#cb644-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb644-41"><a href="#cb644-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb644-42"><a href="#cb644-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb644-43"><a href="#cb644-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb644-44"><a href="#cb644-44" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb644-45"><a href="#cb644-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span>
-<span id="cb644-46"><a href="#cb644-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb644-47"><a href="#cb644-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb647-2"><a href="#cb647-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[</span>
+<span id="cb647-3"><a href="#cb647-3" aria-hidden="true" tabindex="-1"></a> pipeTables,</span>
+<span id="cb647-4"><a href="#cb647-4" aria-hidden="true" tabindex="-1"></a> tableCaptions,</span>
+<span id="cb647-5"><a href="#cb647-5" aria-hidden="true" tabindex="-1"></a> tableAttributes,</span>
+<span id="cb647-6"><a href="#cb647-6" aria-hidden="true" tabindex="-1"></a> relativeReferences,</span>
+<span id="cb647-7"><a href="#cb647-7" aria-hidden="true" tabindex="-1"></a>]{<span class="ex">markdown</span>}</span>
+<span id="cb647-8"><a href="#cb647-8" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">expl3</span>}</span>
+<span id="cb647-9"><a href="#cb647-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb647-10"><a href="#cb647-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb647-11"><a href="#cb647-11" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb647-12"><a href="#cb647-12" aria-hidden="true" tabindex="-1"></a> tableAttributeContextBegin = {</span>
+<span id="cb647-13"><a href="#cb647-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_begin:</span>
+<span id="cb647-14"><a href="#cb647-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb647-15"><a href="#cb647-15" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb647-16"><a href="#cb647-16" aria-hidden="true" tabindex="-1"></a> attributeIdentifier = {</span>
+<span id="cb647-17"><a href="#cb647-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\markdownSetup</span>{</span>
+<span id="cb647-18"><a href="#cb647-18" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb647-19"><a href="#cb647-19" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb647-20"><a href="#cb647-20" aria-hidden="true" tabindex="-1"></a> <span class="kw">\label</span>{<span class="ex">##1</span>}</span>
+<span id="cb647-21"><a href="#cb647-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb647-22"><a href="#cb647-22" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb647-23"><a href="#cb647-23" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb647-24"><a href="#cb647-24" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb647-25"><a href="#cb647-25" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb647-26"><a href="#cb647-26" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb647-27"><a href="#cb647-27" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb647-28"><a href="#cb647-28" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb647-29"><a href="#cb647-29" aria-hidden="true" tabindex="-1"></a> tableAttributeContextEnd = {</span>
+<span id="cb647-30"><a href="#cb647-30" aria-hidden="true" tabindex="-1"></a> <span class="fu">\group</span>_end:</span>
+<span id="cb647-31"><a href="#cb647-31" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb647-32"><a href="#cb647-32" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb647-33"><a href="#cb647-33" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb647-34"><a href="#cb647-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb647-35"><a href="#cb647-35" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb647-36"><a href="#cb647-36" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb647-37"><a href="#cb647-37" aria-hidden="true" tabindex="-1"></a>See Table &lt;#example-table&gt;.</span>
+<span id="cb647-38"><a href="#cb647-38" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb647-39"><a href="#cb647-39" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb647-40"><a href="#cb647-40" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb647-41"><a href="#cb647-41" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb647-42"><a href="#cb647-42" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb647-43"><a href="#cb647-43" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb647-44"><a href="#cb647-44" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb647-45"><a href="#cb647-45" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax. {#example-table}</span>
+<span id="cb647-46"><a href="#cb647-46" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb647-47"><a href="#cb647-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="cb645"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb645-1"><a href="#cb645-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -12078,9 +12065,9 @@ contain the following text:</p>
</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
+<p>The <code>markdownRendererTable</code> macro represents a table. This
+macro will only be produced, when the
+<code><strong>pipeTables</strong></code> option is enabled. The macro
receives the parameters
<code>{</code>⟨<em>caption</em>⟩<code>}{</code>⟨<em>number of
rows</em>⟩<code>}{</code>⟨<em>number of columns</em>⟩<code>}</code>
@@ -12102,114 +12089,115 @@ one of the following:</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="cb646"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb646-1"><a href="#cb646-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb646-2"><a href="#cb646-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
-<span id="cb646-3"><a href="#cb646-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\rowCounter</span></span>
-<span id="cb646-4"><a href="#cb646-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\columnCounter</span></span>
-<span id="cb646-5"><a href="#cb646-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
-<span id="cb646-6"><a href="#cb646-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processRow</span>#1{<span class="co">%</span></span>
-<span id="cb646-7"><a href="#cb646-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\columnCounter</span>=1<span class="co">%</span></span>
-<span id="cb646-8"><a href="#cb646-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
-<span id="cb646-9"><a href="#cb646-9" aria-hidden="true" tabindex="-1"></a> As for the alignment,</span>
-<span id="cb646-10"><a href="#cb646-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb646-11"><a href="#cb646-11" aria-hidden="true" tabindex="-1"></a> In row <span class="fu">\the\rowCounter</span>,</span>
-<span id="cb646-12"><a href="#cb646-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb646-13"><a href="#cb646-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processColumn</span>#1</span>
-<span id="cb646-14"><a href="#cb646-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\rowCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb646-15"><a href="#cb646-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>&gt;<span class="fu">\rowTotal\relax</span></span>
-<span id="cb646-16"><a href="#cb646-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
-<span id="cb646-17"><a href="#cb646-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processRow</span>}<span class="co">%</span></span>
-<span id="cb646-18"><a href="#cb646-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processColumn</span>#1{<span class="co">%</span></span>
-<span id="cb646-19"><a href="#cb646-19" aria-hidden="true" tabindex="-1"></a> column number <span class="fu">\the\columnCounter</span>{}</span>
-<span id="cb646-20"><a href="#cb646-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
-<span id="cb646-21"><a href="#cb646-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1d{}has default alignment<span class="fu">\fi</span></span>
-<span id="cb646-22"><a href="#cb646-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1l{}is left-aligned<span class="fu">\fi</span></span>
-<span id="cb646-23"><a href="#cb646-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1c{}is centered<span class="fu">\fi</span></span>
-<span id="cb646-24"><a href="#cb646-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1r{}is right-aligned<span class="fu">\fi</span></span>
-<span id="cb646-25"><a href="#cb646-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
-<span id="cb646-26"><a href="#cb646-26" aria-hidden="true" tabindex="-1"></a> says <span class="fu">\emph</span>{#1}<span class="co">%</span></span>
-<span id="cb646-27"><a href="#cb646-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
-<span id="cb646-28"><a href="#cb646-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\columnCounter</span> by 1<span class="fu">\relax</span></span>
-<span id="cb646-29"><a href="#cb646-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="cb646-30"><a href="#cb646-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="cb646-31"><a href="#cb646-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>&gt;<span class="fu">\columnTotal\relax</span></span>
-<span id="cb646-32"><a href="#cb646-32" aria-hidden="true" tabindex="-1"></a> .<span class="fu">\expandafter\@gobble</span></span>
-<span id="cb646-33"><a href="#cb646-33" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processColumn</span>}<span class="co">%</span></span>
-<span id="cb646-34"><a href="#cb646-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
-<span id="cb646-35"><a href="#cb646-35" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb646-36"><a href="#cb646-36" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb646-37"><a href="#cb646-37" aria-hidden="true" tabindex="-1"></a> table = {<span class="co">%</span></span>
-<span id="cb646-38"><a href="#cb646-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="cb646-39"><a href="#cb646-39" aria-hidden="true" tabindex="-1"></a> and #2 rows long.</span>
-<span id="cb646-40"><a href="#cb646-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\rowCounter</span>=0<span class="co">%</span></span>
-<span id="cb646-41"><a href="#cb646-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\rowTotal</span>{#2}<span class="co">%</span></span>
-<span id="cb646-42"><a href="#cb646-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\columnTotal</span>{#3}<span class="co">%</span></span>
-<span id="cb646-43"><a href="#cb646-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processRow</span></span>
-<span id="cb646-44"><a href="#cb646-44" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb646-45"><a href="#cb646-45" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb646-46"><a href="#cb646-46" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb646-47"><a href="#cb646-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb646-48"><a href="#cb646-48" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb646-49"><a href="#cb646-49" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
-<span id="cb646-50"><a href="#cb646-50" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
-<span id="cb646-51"><a href="#cb646-51" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
-<span id="cb646-52"><a href="#cb646-52" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
-<span id="cb646-53"><a href="#cb646-53" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
-<span id="cb646-54"><a href="#cb646-54" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb646-55"><a href="#cb646-55" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax</span>
-<span id="cb646-56"><a href="#cb646-56" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb646-57"><a href="#cb646-57" 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>[pipeTables, tableCaptions]{<span class="ex">markdown</span>}</span>
+<span id="cb649-3"><a href="#cb649-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\rowCounter</span></span>
+<span id="cb649-4"><a href="#cb649-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\newcount\columnCounter</span></span>
+<span id="cb649-5"><a href="#cb649-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatletter</span></span>
+<span id="cb649-6"><a href="#cb649-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processRow</span>#1{<span class="co">%</span></span>
+<span id="cb649-7"><a href="#cb649-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">\columnCounter</span>=1<span class="co">%</span></span>
+<span id="cb649-8"><a href="#cb649-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
+<span id="cb649-9"><a href="#cb649-9" aria-hidden="true" tabindex="-1"></a> As for the alignment,</span>
+<span id="cb649-10"><a href="#cb649-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb649-11"><a href="#cb649-11" aria-hidden="true" tabindex="-1"></a> In row <span class="fu">\the\rowCounter</span>,</span>
+<span id="cb649-12"><a href="#cb649-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb649-13"><a href="#cb649-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processColumn</span>#1</span>
+<span id="cb649-14"><a href="#cb649-14" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\rowCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb649-15"><a href="#cb649-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>&gt;<span class="fu">\rowTotal\relax</span></span>
+<span id="cb649-16"><a href="#cb649-16" aria-hidden="true" tabindex="-1"></a> <span class="fu">\expandafter\@gobble</span></span>
+<span id="cb649-17"><a href="#cb649-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processRow</span>}<span class="co">%</span></span>
+<span id="cb649-18"><a href="#cb649-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\processColumn</span>#1{<span class="co">%</span></span>
+<span id="cb649-19"><a href="#cb649-19" aria-hidden="true" tabindex="-1"></a> column number <span class="fu">\the\columnCounter</span>{}</span>
+<span id="cb649-20"><a href="#cb649-20" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\rowCounter</span>=0<span class="fu">\relax</span></span>
+<span id="cb649-21"><a href="#cb649-21" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1d{}has default alignment<span class="fu">\fi</span></span>
+<span id="cb649-22"><a href="#cb649-22" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1l{}is left-aligned<span class="fu">\fi</span></span>
+<span id="cb649-23"><a href="#cb649-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1c{}is centered<span class="fu">\fi</span></span>
+<span id="cb649-24"><a href="#cb649-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\if</span>#1r{}is right-aligned<span class="fu">\fi</span></span>
+<span id="cb649-25"><a href="#cb649-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\else</span></span>
+<span id="cb649-26"><a href="#cb649-26" aria-hidden="true" tabindex="-1"></a> says <span class="fu">\emph</span>{#1}<span class="co">%</span></span>
+<span id="cb649-27"><a href="#cb649-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi</span></span>
+<span id="cb649-28"><a href="#cb649-28" aria-hidden="true" tabindex="-1"></a> <span class="fu">\advance\columnCounter</span> by 1<span class="fu">\relax</span></span>
+<span id="cb649-29"><a href="#cb649-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="cb649-30"><a href="#cb649-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="cb649-31"><a href="#cb649-31" aria-hidden="true" tabindex="-1"></a> <span class="fu">\ifnum\columnCounter</span>&gt;<span class="fu">\columnTotal\relax</span></span>
+<span id="cb649-32"><a href="#cb649-32" aria-hidden="true" tabindex="-1"></a> .<span class="fu">\expandafter\@gobble</span></span>
+<span id="cb649-33"><a href="#cb649-33" aria-hidden="true" tabindex="-1"></a> <span class="fu">\fi\processColumn</span>}<span class="co">%</span></span>
+<span id="cb649-34"><a href="#cb649-34" aria-hidden="true" tabindex="-1"></a><span class="fu">\makeatother</span></span>
+<span id="cb649-35"><a href="#cb649-35" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb649-36"><a href="#cb649-36" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb649-37"><a href="#cb649-37" aria-hidden="true" tabindex="-1"></a> table = {<span class="co">%</span></span>
+<span id="cb649-38"><a href="#cb649-38" aria-hidden="true" tabindex="-1"></a> This is a table with caption <span class="fu">\emph</span>{#1} that is #3 columns wide</span>
+<span id="cb649-39"><a href="#cb649-39" aria-hidden="true" tabindex="-1"></a> and #2 rows long.</span>
+<span id="cb649-40"><a href="#cb649-40" aria-hidden="true" tabindex="-1"></a> <span class="fu">\rowCounter</span>=0<span class="co">%</span></span>
+<span id="cb649-41"><a href="#cb649-41" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\rowTotal</span>{#2}<span class="co">%</span></span>
+<span id="cb649-42"><a href="#cb649-42" aria-hidden="true" tabindex="-1"></a> <span class="fu">\def\columnTotal</span>{#3}<span class="co">%</span></span>
+<span id="cb649-43"><a href="#cb649-43" aria-hidden="true" tabindex="-1"></a> <span class="fu">\processRow</span></span>
+<span id="cb649-44"><a href="#cb649-44" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb649-45"><a href="#cb649-45" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb649-46"><a href="#cb649-46" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb649-47"><a href="#cb649-47" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb649-48"><a href="#cb649-48" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb649-49"><a href="#cb649-49" aria-hidden="true" tabindex="-1"></a>| Right | Left | Default | Center |</span>
+<span id="cb649-50"><a href="#cb649-50" aria-hidden="true" tabindex="-1"></a>|------:|:-----|---------|:------:|</span>
+<span id="cb649-51"><a href="#cb649-51" aria-hidden="true" tabindex="-1"></a>| 12 | 12 | 12 | 12 |</span>
+<span id="cb649-52"><a href="#cb649-52" aria-hidden="true" tabindex="-1"></a>| 123 | 123 | 123 | 123 |</span>
+<span id="cb649-53"><a href="#cb649-53" aria-hidden="true" tabindex="-1"></a>| 1 | 1 | 1 | 1 |</span>
+<span id="cb649-54"><a href="#cb649-54" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb649-55"><a href="#cb649-55" aria-hidden="true" tabindex="-1"></a> : Demonstration of pipe table syntax</span>
+<span id="cb649-56"><a href="#cb649-56" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb649-57"><a href="#cb649-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="cb647"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb647-1"><a href="#cb647-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>
<p>This is a table with caption <em>Demonstration of pipe table
-syntax</em> that is 4 colums wide and 4 rows long. As for the alignment,
-column number 1 is right-aligned, column number 2 is left-aligned,
-column number 3 has default alignment, and column number 4 is centered.
-In row 1, column number 1 says <em>Right</em>, column number 2 says
-<em>Left</em>, column number 3 says <em>Default</em>, and column number
-4 says <em>Center</em>. In row 2, column number 1 says <em>12</em>,
-column number 2 says <em>12</em>, column number 3 says <em>12</em>, and
-column number 4 says <em>12</em>. In row 3, column number 1 says
-<em>123</em>, column number 2 says <em>123</em>, column number 3 says
-<em>123</em>, and column number 4 says <em>123</em>. In row 4, column
-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>
+syntax</em> that is 4 columns wide and 4 rows long. As for the
+alignment, column number 1 is right-aligned, column number 2 is
+left-aligned, column number 3 has default alignment, and column number 4
+is centered. In row 1, column number 1 says <em>Right</em>, column
+number 2 says <em>Left</em>, column number 3 says <em>Default</em>, and
+column number 4 says <em>Center</em>. In row 2, column number 1 says
+<em>12</em>, column number 2 says <em>12</em>, column number 3 says
+<em>12</em>, and column number 4 says <em>12</em>. In row 3, column
+number 1 says <em>123</em>, column number 2 says <em>123</em>, column
+number 3 says <em>123</em>, and column number 4 says <em>123</em>. In
+row 4, column 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.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
+<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 <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
+be produced, when the <code><strong>texMathDollars</strong></code>,
+<code><strong>texMathSingleBackslash</strong></code>, or
+<code><strong>texMathDoubleBackslash</strong></code> option are
enabled.</p>
<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="cb648"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb648-1"><a href="#cb648-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb648-2"><a href="#cb648-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</span>
-<span id="cb648-3"><a href="#cb648-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="cb648-4"><a href="#cb648-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="ss">$$#1</span><span class="sc">\nonumber</span><span class="ss">$$</span>}</span>
-<span id="cb648-5"><a href="#cb648-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb648-6"><a href="#cb648-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb648-7"><a href="#cb648-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb648-8"><a href="#cb648-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="cb648-9"><a href="#cb648-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb648-10"><a href="#cb648-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb651-2"><a href="#cb651-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionTexMathDollars</span>{true}</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>
+<span id="cb651-4"><a href="#cb651-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="ss">$$#1</span><span class="sc">\nonumber</span><span class="ss">$$</span>}</span>
+<span id="cb651-5"><a href="#cb651-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb651-6"><a href="#cb651-6" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb651-7"><a href="#cb651-7" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb651-8"><a href="#cb651-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="cb651-9"><a href="#cb651-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb651-10"><a href="#cb651-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="cb649"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb649-1"><a href="#cb649-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -12222,22 +12210,22 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="cb650"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb650-1"><a href="#cb650-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb650-2"><a href="#cb650-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
-<span id="cb650-3"><a href="#cb650-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">amsmath</span>}</span>
-<span id="cb650-4"><a href="#cb650-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="cb650-5"><a href="#cb650-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="cb650-6"><a href="#cb650-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb650-7"><a href="#cb650-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb650-8"><a href="#cb650-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="cb650-9"><a href="#cb650-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb650-10"><a href="#cb650-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="cb650-11"><a href="#cb650-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb650-12"><a href="#cb650-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb653-2"><a href="#cb653-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[texMathDollars]{<span class="ex">markdown</span>}</span>
+<span id="cb653-3"><a href="#cb653-3" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">amsmath</span>}</span>
+<span id="cb653-4"><a href="#cb653-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</span><span class="kw">\end</span>{<span class="ex">math</span>}}</span>
+<span id="cb653-5"><a href="#cb653-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererDisplayMath</span>#1{<span class="kw">\begin</span>{<span class="ex">equation</span>}<span class="ss">#1</span><span class="kw">\end</span>{<span class="ex">equation</span>}}</span>
+<span id="cb653-6"><a href="#cb653-6" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb653-7"><a href="#cb653-7" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb653-8"><a href="#cb653-8" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb653-9"><a href="#cb653-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb653-10"><a href="#cb653-10" 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="cb653-11"><a href="#cb653-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb653-12"><a href="#cb653-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="cb651"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb651-1"><a href="#cb651-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -12250,21 +12238,21 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
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="cb652"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb652-1"><a href="#cb652-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb652-2"><a href="#cb652-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
-<span id="cb652-3"><a href="#cb652-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="cb652-4"><a href="#cb652-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="cb652-5"><a href="#cb652-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb652-6"><a href="#cb652-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb652-7"><a href="#cb652-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
-<span id="cb652-8"><a href="#cb652-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb652-9"><a href="#cb652-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="cb652-10"><a href="#cb652-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb652-11"><a href="#cb652-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb655-2"><a href="#cb655-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[texMathDollars = yes]</span>
+<span id="cb655-3"><a href="#cb655-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="cb655-4"><a href="#cb655-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="cb655-5"><a href="#cb655-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb655-6"><a href="#cb655-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb655-7"><a href="#cb655-7" aria-hidden="true" tabindex="-1"></a><span class="ss">$E=mc^2$</span></span>
+<span id="cb655-8"><a href="#cb655-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb655-9"><a href="#cb655-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="cb655-10"><a href="#cb655-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb655-11"><a href="#cb655-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="cb653"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb653-1"><a href="#cb653-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</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">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>
@@ -12276,26 +12264,26 @@ class="math display"><em>f̂</em>(<em>ξ</em>) = ∫<sub>−∞</sub><sup>
<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
+<p>The <code>markdownRendererThematicBreak</code> macro represents a
thematic break. The macro receives no arguments.</p>
<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="cb654"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb654-1"><a href="#cb654-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb654-2"><a href="#cb654-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\vfil\break</span>}</span>
-<span id="cb654-3"><a href="#cb654-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb654-4"><a href="#cb654-4" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
-<span id="cb654-5"><a href="#cb654-5" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb654-6"><a href="#cb654-6" aria-hidden="true" tabindex="-1"></a>***</span>
-<span id="cb654-7"><a href="#cb654-7" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb654-8"><a href="#cb654-8" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
-<span id="cb654-9"><a href="#cb654-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb654-10"><a href="#cb654-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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">\vfil\break</span>}</span>
+<span id="cb657-3"><a href="#cb657-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb657-4"><a href="#cb657-4" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
+<span id="cb657-5"><a href="#cb657-5" aria-hidden="true" tabindex="-1"></a></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>This is the second page.</span>
+<span id="cb657-9"><a href="#cb657-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb657-10"><a href="#cb657-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="cb655"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb655-1"><a href="#cb655-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -12307,26 +12295,26 @@ 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="cb656"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb656-1"><a href="#cb656-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb656-2"><a href="#cb656-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb656-3"><a href="#cb656-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb656-4"><a href="#cb656-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb656-5"><a href="#cb656-5" aria-hidden="true" tabindex="-1"></a> thematicBreak = <span class="fu">\newpage</span>,</span>
-<span id="cb656-6"><a href="#cb656-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb656-7"><a href="#cb656-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb656-8"><a href="#cb656-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb656-9"><a href="#cb656-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb656-10"><a href="#cb656-10" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
-<span id="cb656-11"><a href="#cb656-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb656-12"><a href="#cb656-12" aria-hidden="true" tabindex="-1"></a>***</span>
-<span id="cb656-13"><a href="#cb656-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb656-14"><a href="#cb656-14" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
-<span id="cb656-15"><a href="#cb656-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb656-16"><a href="#cb656-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="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>{<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> thematicBreak = <span class="fu">\newpage</span>,</span>
+<span id="cb659-6"><a href="#cb659-6" aria-hidden="true" tabindex="-1"></a> },</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 class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb659-9"><a href="#cb659-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb659-10"><a href="#cb659-10" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
+<span id="cb659-11"><a href="#cb659-11" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb659-12"><a href="#cb659-12" aria-hidden="true" tabindex="-1"></a>***</span>
+<span id="cb659-13"><a href="#cb659-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb659-14"><a href="#cb659-14" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
+<span id="cb659-15"><a href="#cb659-15" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb659-16"><a href="#cb659-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="cb657"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb657-1"><a href="#cb657-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>
@@ -12338,21 +12326,21 @@ 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="cb658"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb658-1"><a href="#cb658-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb658-2"><a href="#cb658-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererThematicBreak</span>{<span class="fu">\page</span>[yes]}</span>
-<span id="cb658-3"><a href="#cb658-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb658-4"><a href="#cb658-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb658-5"><a href="#cb658-5" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
-<span id="cb658-6"><a href="#cb658-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb658-7"><a href="#cb658-7" aria-hidden="true" tabindex="-1"></a>***</span>
-<span id="cb658-8"><a href="#cb658-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb658-9"><a href="#cb658-9" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
-<span id="cb658-10"><a href="#cb658-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb658-11"><a href="#cb658-11" 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">\def\markdownRendererThematicBreak</span>{<span class="fu">\page</span>[yes]}</span>
+<span id="cb661-3"><a href="#cb661-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb661-4"><a href="#cb661-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb661-5"><a href="#cb661-5" aria-hidden="true" tabindex="-1"></a>This is the first page.</span>
+<span id="cb661-6"><a href="#cb661-6" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb661-7"><a href="#cb661-7" aria-hidden="true" tabindex="-1"></a>***</span>
+<span id="cb661-8"><a href="#cb661-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb661-9"><a href="#cb661-9" aria-hidden="true" tabindex="-1"></a>This is the second page.</span>
+<span id="cb661-10"><a href="#cb661-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb661-11"><a href="#cb661-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="cb659"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb659-1"><a href="#cb659-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</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>
@@ -12362,11 +12350,11 @@ contain the following text:</p>
</blockquote>
<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
+<p>The macros named <code>markdownRendererTickedBox</code>,
+<code>markdownRendererHalfTickedBox</code>, and
+<code>markdownRendererUntickedBox</code> represent ticked and unticked
boxes, respectively. These macros will either be produced, when the
-<strong><code>taskLists</code></strong> option is enabled, or when the
+<code><strong>taskLists</strong></code> option is enabled, or 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>
@@ -12374,24 +12362,24 @@ respectively.</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="cb660"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb660-1"><a href="#cb660-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb660-2"><a href="#cb660-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span>
-<span id="cb660-3"><a href="#cb660-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb660-4"><a href="#cb660-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb660-5"><a href="#cb660-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
-<span id="cb660-6"><a href="#cb660-6" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
-<span id="cb660-7"><a href="#cb660-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb660-8"><a href="#cb660-8" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb660-9"><a href="#cb660-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb660-10"><a href="#cb660-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb660-11"><a href="#cb660-11" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb660-12"><a href="#cb660-12" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
-<span id="cb660-13"><a href="#cb660-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb660-14"><a href="#cb660-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb663-2"><a href="#cb663-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[taskLists]{<span class="ex">markdown</span>}</span>
+<span id="cb663-3"><a href="#cb663-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb663-4"><a href="#cb663-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb663-5"><a href="#cb663-5" aria-hidden="true" tabindex="-1"></a> untickedBox = No,</span>
+<span id="cb663-6"><a href="#cb663-6" aria-hidden="true" tabindex="-1"></a> tickedBox = Yes,</span>
+<span id="cb663-7"><a href="#cb663-7" aria-hidden="true" tabindex="-1"></a> },</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><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb663-10"><a href="#cb663-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb663-11"><a href="#cb663-11" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb663-12"><a href="#cb663-12" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
+<span id="cb663-13"><a href="#cb663-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb663-14"><a href="#cb663-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="cb661"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb661-1"><a href="#cb661-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -12404,20 +12392,20 @@ 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="cb662"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb662-1"><a href="#cb662-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb662-2"><a href="#cb662-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
-<span id="cb662-3"><a href="#cb662-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
-<span id="cb662-4"><a href="#cb662-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
-<span id="cb662-5"><a href="#cb662-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb662-6"><a href="#cb662-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb662-7"><a href="#cb662-7" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
-<span id="cb662-8"><a href="#cb662-8" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
-<span id="cb662-9"><a href="#cb662-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb662-10"><a href="#cb662-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb665-2"><a href="#cb665-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[taskLists = yes]</span>
+<span id="cb665-3"><a href="#cb665-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererUntickedBox</span>{No}</span>
+<span id="cb665-4"><a href="#cb665-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTickedBox</span>{Yes}</span>
+<span id="cb665-5"><a href="#cb665-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb665-6"><a href="#cb665-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb665-7"><a href="#cb665-7" aria-hidden="true" tabindex="-1"></a>- [ ] you can&#39;t.</span>
+<span id="cb665-8"><a href="#cb665-8" aria-hidden="true" tabindex="-1"></a>- [x] I can!</span>
+<span id="cb665-9"><a href="#cb665-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb665-10"><a href="#cb665-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="cb663"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb663-1"><a href="#cb663-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -12426,62 +12414,103 @@ contain the following text:</p>
<li>Yes I can!</li>
</ul>
</blockquote>
-<h4 data-number="2.3.1.43" id="yamlmetadatarenderers"><span
-class="header-section-number">2.3.1.43</span> YAML Metadata
+<h4 data-number="2.3.1.43" id="warning-and-error-renderers"><span
+class="header-section-number">2.3.1.43</span> Warning and Error
Renderers</h4>
-<p>The <code>\markdownRendererJekyllDataBegin</code> macro represents
-the beginning of a <abbr>yaml</abbr> document. This macro will only be
-produced when the <strong><code>jekyllData</code></strong> option is
+<p>The <code>markdownRendererWarning</code> and
+<code>markdownRendererError</code> macros represent warnings and errors
+produced by the markdown parser. Both macros receive four
+parameters:</p>
+<ol type="1">
+<li>The fully escaped text of the warning or error that can be directly
+typeset</li>
+<li>The raw text of the warning or error that can be used outside
+typesetting for e.g. logging the warning or error.</li>
+<li>The fully escaped text with more details about the warning or error
+that can be directly typeset. Can be empty, unlike the first two
+parameters.</li>
+<li>The raw text with more details about the warning or error that can
+be used outside typesetting for e.g. logging the warning or error. Can
+be empty, unlike the first two parameters.</li>
+</ol>
+<h4 data-number="2.3.1.44" id="yamlmetadatarenderers"><span
+class="header-section-number">2.3.1.44</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
+produced when the <code><strong>jekyllData</strong></code> option is
enabled. The macro receives no arguments.</p>
-<p>The <code>\markdownRendererJekyllDataEnd</code> macro represents the
+<p>The <code>markdownRendererJekyllDataEnd</code> macro represents the
end of a <abbr>yaml</abbr> document. This macro will only be produced
-when the <strong><code>jekyllData</code></strong> option is enabled. The
+when the <code><strong>jekyllData</strong></code> option is enabled. The
macro receives no arguments.</p>
-<p>The <code>\markdownRendererJekyllDataMappingBegin</code> macro
+<p>The <code>markdownRendererJekyllDataMappingBegin</code> macro
represents the beginning of a mapping in a <abbr>yaml</abbr> document.
This macro will only be produced when the
-<strong><code>jekyllData</code></strong> option is enabled. The macro
+<code><strong>jekyllData</strong></code> option is enabled. The macro
receives two arguments: the scalar key in the parent structure, cast to
a string following <abbr>yaml</abbr> serialization rules, and the number
of items in the mapping.</p>
-<p>The <code>\markdownRendererJekyllDataMappingEnd</code> macro
+<p>The <code>markdownRendererJekyllDataMappingEnd</code> macro
represents the end of a mapping in a <abbr>yaml</abbr> document. This
macro will only be produced when the
-<strong><code>jekyllData</code></strong> option is enabled. The macro
+<code><strong>jekyllData</strong></code> option is enabled. The macro
receives no arguments.</p>
-<p>The <code>\markdownRendererJekyllDataSequenceBegin</code> macro
+<p>The <code>markdownRendererJekyllDataSequenceBegin</code> macro
represents the beginning of a sequence in a <abbr>yaml</abbr> document.
This macro will only be produced when the
-<strong><code>jekyllData</code></strong> option is enabled. The macro
+<code><strong>jekyllData</strong></code> option is enabled. The macro
receives two arguments: the scalar key in the parent structure, cast to
a string following <abbr>yaml</abbr> serialization rules, and the number
of items in the sequence.</p>
-<p>The <code>\markdownRendererJekyllDataSequenceEnd</code> macro
+<p>The <code>markdownRendererJekyllDataSequenceEnd</code> macro
represents the end of a sequence in a <abbr>yaml</abbr> document. This
macro will only be produced when the
-<strong><code>jekyllData</code></strong> option is enabled. The macro
+<code><strong>jekyllData</strong></code> option is enabled. The macro
receives no arguments.</p>
-<p>The <code>\markdownRendererJekyllDataBoolean</code> macro represents
-a boolean scalar value in a <abbr>yaml</abbr> document. This macro will
-only be produced when the <strong><code>jekyllData</code></strong>
+<p>The <code>markdownRendererJekyllDataBoolean</code> macro represents a
+boolean scalar value in a <abbr>yaml</abbr> document. This macro will
+only be produced when the <code><strong>jekyllData</strong></code>
option is enabled. The macro receives two arguments: the scalar key in
the parent structure, and the scalar value, both cast to a string
following <abbr>yaml</abbr> serialization rules.</p>
-<p>The <code>\markdownRendererJekyllDataNumber</code> macro represents a
+<p>The <code>markdownRendererJekyllDataNumber</code> macro represents a
numeric scalar value in a <abbr>yaml</abbr> document. This macro will
-only be produced when the <strong><code>jekyllData</code></strong>
+only be produced when the <code><strong>jekyllData</strong></code>
option is enabled. The macro receives two arguments: the scalar key in
the parent structure, and the scalar value, both cast to a string
following <abbr>yaml</abbr> serialization rules.</p>
-<p>The <code>\markdownRendererJekyllDataString</code> macro represents a
-string scalar value in a <abbr>yaml</abbr> document. This macro will
-only be produced when the <strong><code>jekyllData</code></strong>
-option is enabled. The macro receives two arguments: the scalar key in
-the parent structure, cast to a string following <abbr>yaml</abbr>
-serialization rules, and the scalar value.</p>
-<p>The <code>\markdownRendererJekyllDataEmpty</code> macro represents an
+<p>The <code>markdownRendererJekyllDataTypographicString</code> and
+<code>markdownRendererJekyllDataProgrammaticString</code> macros
+represent string scalar values in a <abbr>yaml</abbr> document. This
+macro will only be produced when the
+<code><strong>jekyllData</strong></code> option is enabled. The macro
+receives two arguments: the scalar key in the parent structure, cast to
+a string following <abbr>yaml</abbr> serialization rules, and the scalar
+value.</p>
+<p>For each string scalar value, both macros are produced. Whereas
+<code>markdownRendererJekyllDataTypographicString</code> receives the
+scalar value after all markdown markup and special <span
+class="tex">T<sub>e</sub>X</span> characters in the string have been
+replaced by <span class="tex">T<sub>e</sub>X</span> macros,
+<code>markdownRendererJekyllDataProgrammaticString</code> receives the
+raw scalar value. Therefore, whereas the
+<code>markdownRendererJekyllDataTypographicString</code> macro is more
+appropriate for texts that are supposed to be typeset with <span
+class="tex">T<sub>e</sub>X</span>, such as document titles, author
+names, or exam questions, the
+<code>markdownRendererJekyllDataProgrammaticString</code> macro is more
+appropriate for identifiers and other programmatic text that won’t be
+typeset by <span class="tex">T<sub>e</sub>X</span>.</p>
+<p>Before Markdown 3.7.0, the
+<code>markdownRendererJekyllDataTypographicString</code> macro was named
+<code>markdownRendererJekyllDataString</code> and the
+<code>markdownRendererJekyllDataProgrammaticString</code> macro was not
+produced. The <code>markdownRendererJekyllDataString</code> has been
+deprecated and will be removed in Markdown 4.0.0.</p>
+<p>The <code>markdownRendererJekyllDataEmpty</code> macro represents an
empty scalar value in a <abbr>yaml</abbr> document. This macro will only
-be produced when the <strong><code>jekyllData</code></strong> option is
+be produced when the <code><strong>jekyllData</strong></code> 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>
@@ -12489,23 +12518,23 @@ rules.</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="cb664"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb664-1"><a href="#cb664-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb664-2"><a href="#cb664-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
-<span id="cb664-3"><a href="#cb664-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="cb664-4"><a href="#cb664-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="cb664-5"><a href="#cb664-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb664-6"><a href="#cb664-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb664-7"><a href="#cb664-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb664-8"><a href="#cb664-8" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb664-9"><a href="#cb664-9" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb664-10"><a href="#cb664-10" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb664-11"><a href="#cb664-11" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb664-12"><a href="#cb664-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb664-13"><a href="#cb664-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> markdown</span>
+<span id="cb667-2"><a href="#cb667-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
+<span id="cb667-3"><a href="#cb667-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataTypographicString</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">\markdownBegin</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>name: Jane Doe</span>
+<span id="cb667-10"><a href="#cb667-10" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb667-11"><a href="#cb667-11" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb667-12"><a href="#cb667-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb667-13"><a href="#cb667-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="cb665"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb665-1"><a href="#cb665-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -12515,29 +12544,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="cb666"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb666-1"><a href="#cb666-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb666-2"><a href="#cb666-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb666-3"><a href="#cb666-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb666-4"><a href="#cb666-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb666-5"><a href="#cb666-5" aria-hidden="true" tabindex="-1"></a> jekyllDataString = {<span class="fu">\gdef\name</span>{#2}},</span>
-<span id="cb666-6"><a href="#cb666-6" aria-hidden="true" tabindex="-1"></a> jekyllDataNumber = {<span class="fu">\gdef\age</span>{#2}},</span>
-<span id="cb666-7"><a href="#cb666-7" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
-<span id="cb666-8"><a href="#cb666-8" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb666-9"><a href="#cb666-9" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb666-10"><a href="#cb666-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb666-11"><a href="#cb666-11" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb666-12"><a href="#cb666-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb666-13"><a href="#cb666-13" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb666-14"><a href="#cb666-14" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb666-15"><a href="#cb666-15" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb666-16"><a href="#cb666-16" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb666-17"><a href="#cb666-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb666-18"><a href="#cb666-18" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb666-19"><a href="#cb666-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb669-2"><a href="#cb669-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb669-3"><a href="#cb669-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb669-4"><a href="#cb669-4" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb669-5"><a href="#cb669-5" aria-hidden="true" tabindex="-1"></a> jekyllDataTypographicString = {<span class="fu">\gdef\name</span>{#2}},</span>
+<span id="cb669-6"><a href="#cb669-6" aria-hidden="true" tabindex="-1"></a> jekyllDataNumber = {<span class="fu">\gdef\age</span>{#2}},</span>
+<span id="cb669-7"><a href="#cb669-7" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</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>
+<span id="cb669-10"><a href="#cb669-10" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</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="kw">\begin</span>{<span class="ex">markdown</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>name: Jane Doe</span>
+<span id="cb669-15"><a href="#cb669-15" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb669-16"><a href="#cb669-16" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb669-17"><a href="#cb669-17" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb669-18"><a href="#cb669-18" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb669-19"><a href="#cb669-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="cb667"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb667-1"><a href="#cb667-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</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">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>
@@ -12547,26 +12576,26 @@ 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="cb668"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb668-1"><a href="#cb668-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb668-2"><a href="#cb668-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
-<span id="cb668-3"><a href="#cb668-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="cb668-4"><a href="#cb668-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="cb668-5"><a href="#cb668-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb668-6"><a href="#cb668-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb668-7"><a href="#cb668-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb668-8"><a href="#cb668-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb668-9"><a href="#cb668-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb668-10"><a href="#cb668-10" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb668-11"><a href="#cb668-11" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb668-12"><a href="#cb668-12" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb668-13"><a href="#cb668-13" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb668-14"><a href="#cb668-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb668-15"><a href="#cb668-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb668-16"><a href="#cb668-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb671-2"><a href="#cb671-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
+<span id="cb671-3"><a href="#cb671-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataTypographicString</span>#1#2{<span class="fu">\gdef\name</span>{#2}}</span>
+<span id="cb671-4"><a href="#cb671-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="cb671-5"><a href="#cb671-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb671-6"><a href="#cb671-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb671-7"><a href="#cb671-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb671-8"><a href="#cb671-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb671-9"><a href="#cb671-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</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>name: Jane Doe</span>
+<span id="cb671-12"><a href="#cb671-12" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb671-13"><a href="#cb671-13" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb671-14"><a href="#cb671-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb671-15"><a href="#cb671-15" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb671-16"><a href="#cb671-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="cb669"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb669-1"><a href="#cb669-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -12582,25 +12611,25 @@ class="tex">T<sub>e</sub>X</span> macros, further referred to as
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="cb670"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb670-1"><a href="#cb670-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb670-2"><a href="#cb670-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span>
-<span id="cb670-3"><a href="#cb670-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span>
-<span id="cb670-4"><a href="#cb670-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb670-5"><a href="#cb670-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb670-6"><a href="#cb670-6" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb670-7"><a href="#cb670-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb670-8"><a href="#cb670-8" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb670-9"><a href="#cb670-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
-<span id="cb670-10"><a href="#cb670-10" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
-<span id="cb670-11"><a href="#cb670-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb670-12"><a href="#cb670-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb670-13"><a href="#cb670-13" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb670-14"><a href="#cb670-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb670-15"><a href="#cb670-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</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">\input</span> 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">\markdownBegin</span></span>
+<span id="cb673-6"><a href="#cb673-6" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb673-7"><a href="#cb673-7" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb673-8"><a href="#cb673-8" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb673-9"><a href="#cb673-9" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
+<span id="cb673-10"><a href="#cb673-10" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
+<span id="cb673-11"><a href="#cb673-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb673-12"><a href="#cb673-12" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
+<span id="cb673-13"><a href="#cb673-13" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb673-14"><a href="#cb673-14" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb673-15"><a href="#cb673-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="cb671"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb671-1"><a href="#cb671-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</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">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>
@@ -12611,30 +12640,30 @@ 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="cb672"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb672-1"><a href="#cb672-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb672-2"><a href="#cb672-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
-<span id="cb672-3"><a href="#cb672-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb672-4"><a href="#cb672-4" aria-hidden="true" tabindex="-1"></a> rendererPrototypes = {</span>
-<span id="cb672-5"><a href="#cb672-5" aria-hidden="true" tabindex="-1"></a> tilde = {Packages can specify token renderer prototypes.},</span>
-<span id="cb672-6"><a href="#cb672-6" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb672-7"><a href="#cb672-7" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb672-8"><a href="#cb672-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb672-9"><a href="#cb672-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb672-10"><a href="#cb672-10" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb672-11"><a href="#cb672-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb672-12"><a href="#cb672-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb672-13"><a href="#cb672-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
-<span id="cb672-14"><a href="#cb672-14" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb672-15"><a href="#cb672-15" aria-hidden="true" tabindex="-1"></a> tilde = {User-defined token renderers take precedence.},</span>
-<span id="cb672-16"><a href="#cb672-16" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb672-17"><a href="#cb672-17" aria-hidden="true" tabindex="-1"></a>]</span>
-<span id="cb672-18"><a href="#cb672-18" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb672-19"><a href="#cb672-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb672-20"><a href="#cb672-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="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="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb675-2"><a href="#cb675-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb675-3"><a href="#cb675-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb675-4"><a href="#cb675-4" aria-hidden="true" tabindex="-1"></a> rendererPrototypes = {</span>
+<span id="cb675-5"><a href="#cb675-5" aria-hidden="true" tabindex="-1"></a> tilde = {Packages can specify token renderer prototypes.},</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>}</span>
+<span id="cb675-8"><a href="#cb675-8" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb675-9"><a href="#cb675-9" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb675-10"><a href="#cb675-10" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb675-11"><a href="#cb675-11" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb675-12"><a href="#cb675-12" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb675-13"><a href="#cb675-13" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}[</span>
+<span id="cb675-14"><a href="#cb675-14" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb675-15"><a href="#cb675-15" aria-hidden="true" tabindex="-1"></a> tilde = {User-defined token renderers take precedence.},</span>
+<span id="cb675-16"><a href="#cb675-16" aria-hidden="true" tabindex="-1"></a> },</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>
+<span id="cb675-19"><a href="#cb675-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb675-20"><a href="#cb675-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="cb673"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb673-1"><a href="#cb673-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -12645,26 +12674,26 @@ 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="cb674"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb674-1"><a href="#cb674-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb674-2"><a href="#cb674-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span>
-<span id="cb674-3"><a href="#cb674-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span>
-<span id="cb674-4"><a href="#cb674-4" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb674-5"><a href="#cb674-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb674-6"><a href="#cb674-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb674-7"><a href="#cb674-7" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb674-8"><a href="#cb674-8" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb674-9"><a href="#cb674-9" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb674-10"><a href="#cb674-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
-<span id="cb674-11"><a href="#cb674-11" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
-<span id="cb674-12"><a href="#cb674-12" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb674-13"><a href="#cb674-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb674-14"><a href="#cb674-14" aria-hidden="true" tabindex="-1"></a>~</span>
-<span id="cb674-15"><a href="#cb674-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb674-16"><a href="#cb674-16" aria-hidden="true" tabindex="-1"></a><span class="fu">\stoptext</span></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="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb677-2"><a href="#cb677-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTildePrototype</span>{<span class="co">%</span></span>
+<span id="cb677-3"><a href="#cb677-3" aria-hidden="true" tabindex="-1"></a> Packages can specify token renderer prototypes.<span class="co">%</span></span>
+<span id="cb677-4"><a href="#cb677-4" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb677-5"><a href="#cb677-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb677-6"><a href="#cb677-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></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><span class="fu">\stopmarkdown</span></span>
+<span id="cb677-9"><a href="#cb677-9" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb677-10"><a href="#cb677-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererTilde</span>{<span class="co">%</span></span>
+<span id="cb677-11"><a href="#cb677-11" aria-hidden="true" tabindex="-1"></a> User-defined token renderers take precedence.<span class="co">%</span></span>
+<span id="cb677-12"><a href="#cb677-12" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb677-13"><a href="#cb677-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb677-14"><a href="#cb677-14" aria-hidden="true" tabindex="-1"></a>~</span>
+<span id="cb677-15"><a href="#cb677-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb677-16"><a href="#cb677-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="cb675"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb675-1"><a href="#cb675-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -12674,37 +12703,37 @@ contain the following text:</p>
<h4 data-number="2.3.2.1" id="expl3yamlmetadata"><span
class="header-section-number">2.3.2.1</span> YAML Metadata Renderer
Prototypes</h4>
-<p>By default, the renderer prototypes for YAML metadata provide a
-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>
+<p>For simple <abbr>YAML</abbr> metadata, a simple high-level interface
+is provided that can be programmed by setting the expl3 key–values <span
+class="citation" data-cites="latex25">[@latex25]</span> for the module
+<code>markdown/jekyllData</code>.</p>
<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="cb676"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb676-1"><a href="#cb676-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\input</span> markdown</span>
-<span id="cb676-2"><a href="#cb676-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</span>
-<span id="cb676-3"><a href="#cb676-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb676-4"><a href="#cb676-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb676-5"><a href="#cb676-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb676-6"><a href="#cb676-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb676-7"><a href="#cb676-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb676-8"><a href="#cb676-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
-<span id="cb676-9"><a href="#cb676-9" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb676-10"><a href="#cb676-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb676-11"><a href="#cb676-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb676-12"><a href="#cb676-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb676-13"><a href="#cb676-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownBegin</span></span>
-<span id="cb676-14"><a href="#cb676-14" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb676-15"><a href="#cb676-15" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb676-16"><a href="#cb676-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb676-17"><a href="#cb676-17" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb676-18"><a href="#cb676-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
-<span id="cb676-19"><a href="#cb676-19" aria-hidden="true" tabindex="-1"></a><span class="fu">\bye</span></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">\input</span> markdown</span>
+<span id="cb679-2"><a href="#cb679-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownOptionJekyllData</span>{true}</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">\markdownBegin</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>name: Jane Doe</span>
+<span id="cb679-16"><a href="#cb679-16" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb679-17"><a href="#cb679-17" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb679-18"><a href="#cb679-18" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownEnd</span></span>
+<span id="cb679-19"><a href="#cb679-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="cb677"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb677-1"><a href="#cb677-1" aria-hidden="true" tabindex="-1"></a><span class="ex">luatex</span> document.tex</span></code></pre></div>
+<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">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>
@@ -12714,31 +12743,31 @@ 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="cb678"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb678-1"><a href="#cb678-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
-<span id="cb678-2"><a href="#cb678-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
-<span id="cb678-3"><a href="#cb678-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
-<span id="cb678-4"><a href="#cb678-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
-<span id="cb678-5"><a href="#cb678-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
-<span id="cb678-6"><a href="#cb678-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
-<span id="cb678-7"><a href="#cb678-7" aria-hidden="true" tabindex="-1"></a> },</span>
-<span id="cb678-8"><a href="#cb678-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
-<span id="cb678-9"><a href="#cb678-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
-<span id="cb678-10"><a href="#cb678-10" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb678-11"><a href="#cb678-11" aria-hidden="true" tabindex="-1"></a>}</span>
-<span id="cb678-12"><a href="#cb678-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
-<span id="cb678-13"><a href="#cb678-13" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb678-14"><a href="#cb678-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
-<span id="cb678-15"><a href="#cb678-15" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb678-16"><a href="#cb678-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb678-17"><a href="#cb678-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb678-18"><a href="#cb678-18" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb678-19"><a href="#cb678-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
-<span id="cb678-20"><a href="#cb678-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb678-21"><a href="#cb678-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="cb679"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb679-1"><a href="#cb679-1" aria-hidden="true" tabindex="-1"></a><span class="ex">lualatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb681"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb681-1"><a href="#cb681-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb681-2"><a href="#cb681-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>[jekyllData]{<span class="ex">markdown</span>}</span>
+<span id="cb681-3"><a href="#cb681-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetup</span>{</span>
+<span id="cb681-4"><a href="#cb681-4" aria-hidden="true" tabindex="-1"></a> jekyllDataRenderers = {</span>
+<span id="cb681-5"><a href="#cb681-5" aria-hidden="true" tabindex="-1"></a> name = {<span class="fu">\gdef\name</span>{#1}},</span>
+<span id="cb681-6"><a href="#cb681-6" aria-hidden="true" tabindex="-1"></a> code = {<span class="fu">\gdef\age</span>{#1}},</span>
+<span id="cb681-7"><a href="#cb681-7" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb681-8"><a href="#cb681-8" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb681-9"><a href="#cb681-9" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = {<span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.},</span>
+<span id="cb681-10"><a href="#cb681-10" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb681-11"><a href="#cb681-11" aria-hidden="true" tabindex="-1"></a>}</span>
+<span id="cb681-12"><a href="#cb681-12" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb681-13"><a href="#cb681-13" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb681-14"><a href="#cb681-14" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">markdown</span>}</span>
+<span id="cb681-15"><a href="#cb681-15" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb681-16"><a href="#cb681-16" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb681-17"><a href="#cb681-17" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb681-18"><a href="#cb681-18" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb681-19"><a href="#cb681-19" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">markdown</span>}</span>
+<span id="cb681-20"><a href="#cb681-20" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb681-21"><a href="#cb681-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="cb682"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb682-1"><a href="#cb682-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>
@@ -12748,38 +12777,99 @@ 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="cb680"><pre
-class="sourceCode tex"><code class="sourceCode latex"><span id="cb680-1"><a href="#cb680-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
-<span id="cb680-2"><a href="#cb680-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
-<span id="cb680-3"><a href="#cb680-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
-<span id="cb680-4"><a href="#cb680-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
-<span id="cb680-5"><a href="#cb680-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
-<span id="cb680-6"><a href="#cb680-6" aria-hidden="true" tabindex="-1"></a> {</span>
-<span id="cb680-7"><a href="#cb680-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
-<span id="cb680-8"><a href="#cb680-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
-<span id="cb680-9"><a href="#cb680-9" aria-hidden="true" tabindex="-1"></a> }</span>
-<span id="cb680-10"><a href="#cb680-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
-<span id="cb680-11"><a href="#cb680-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
-<span id="cb680-12"><a href="#cb680-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
-<span id="cb680-13"><a href="#cb680-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
-<span id="cb680-14"><a href="#cb680-14" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb680-15"><a href="#cb680-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
-<span id="cb680-16"><a href="#cb680-16" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb680-17"><a href="#cb680-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
-<span id="cb680-18"><a href="#cb680-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
-<span id="cb680-19"><a href="#cb680-19" aria-hidden="true" tabindex="-1"></a>---</span>
-<span id="cb680-20"><a href="#cb680-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
-<span id="cb680-21"><a href="#cb680-21" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb680-22"><a href="#cb680-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="cb681"><pre
-class="sourceCode sh"><code class="sourceCode bash"><span id="cb681-1"><a href="#cb681-1" aria-hidden="true" tabindex="-1"></a><span class="ex">context</span> <span class="at">--luatex</span> document.tex</span></code></pre></div>
+<div class="sourceCode" id="cb683"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb683-1"><a href="#cb683-1" aria-hidden="true" tabindex="-1"></a><span class="fu">\usemodule</span>[t][markdown]</span>
+<span id="cb683-2"><a href="#cb683-2" aria-hidden="true" tabindex="-1"></a><span class="fu">\setupmarkdown</span>[jekyllData = yes]</span>
+<span id="cb683-3"><a href="#cb683-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb683-4"><a href="#cb683-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb683-5"><a href="#cb683-5" aria-hidden="true" tabindex="-1"></a> { markdown/jekyllData }</span>
+<span id="cb683-6"><a href="#cb683-6" aria-hidden="true" tabindex="-1"></a> {</span>
+<span id="cb683-7"><a href="#cb683-7" aria-hidden="true" tabindex="-1"></a> name .code:n = { <span class="fu">\gdef\name</span>{#1} },</span>
+<span id="cb683-8"><a href="#cb683-8" aria-hidden="true" tabindex="-1"></a> age .code:n = { <span class="fu">\gdef\age</span>{#1} },</span>
+<span id="cb683-9"><a href="#cb683-9" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb683-10"><a href="#cb683-10" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb683-11"><a href="#cb683-11" aria-hidden="true" tabindex="-1"></a><span class="fu">\def\markdownRendererJekyllDataEnd</span>{<span class="co">%</span></span>
+<span id="cb683-12"><a href="#cb683-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\name</span>{} is <span class="fu">\age</span>{} years old.}</span>
+<span id="cb683-13"><a href="#cb683-13" aria-hidden="true" tabindex="-1"></a><span class="fu">\starttext</span></span>
+<span id="cb683-14"><a href="#cb683-14" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb683-15"><a href="#cb683-15" aria-hidden="true" tabindex="-1"></a><span class="fu">\startmarkdown</span></span>
+<span id="cb683-16"><a href="#cb683-16" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb683-17"><a href="#cb683-17" aria-hidden="true" tabindex="-1"></a>name: Jane Doe</span>
+<span id="cb683-18"><a href="#cb683-18" aria-hidden="true" tabindex="-1"></a>age: 99</span>
+<span id="cb683-19"><a href="#cb683-19" aria-hidden="true" tabindex="-1"></a>---</span>
+<span id="cb683-20"><a href="#cb683-20" aria-hidden="true" tabindex="-1"></a><span class="fu">\stopmarkdown</span></span>
+<span id="cb683-21"><a href="#cb683-21" aria-hidden="true" tabindex="-1"></a></span>
+<span id="cb683-22"><a href="#cb683-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="cb684"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb684-1"><a href="#cb684-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>
-<aside id="footnotes" class="footnotes footnotes-end-of-document"
+<h5 class="unnumbered" id="latex-example-102"><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="cb685"><pre
+class="sourceCode tex"><code class="sourceCode latex"><span id="cb685-1"><a href="#cb685-1" aria-hidden="true" tabindex="-1"></a><span class="bu">\documentclass</span>{<span class="ex">article</span>}</span>
+<span id="cb685-2"><a href="#cb685-2" aria-hidden="true" tabindex="-1"></a><span class="bu">\usepackage</span>{<span class="ex">markdown</span>}</span>
+<span id="cb685-3"><a href="#cb685-3" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb685-4"><a href="#cb685-4" aria-hidden="true" tabindex="-1"></a><span class="fu">\str</span>_new:N <span class="fu">\g</span>_markdown_example_title_str</span>
+<span id="cb685-5"><a href="#cb685-5" aria-hidden="true" tabindex="-1"></a><span class="fu">\seq</span>_new:N <span class="fu">\g</span>_markdown_example_authors_seq</span>
+<span id="cb685-6"><a href="#cb685-6" aria-hidden="true" tabindex="-1"></a><span class="fu">\keys</span>_define:nn</span>
+<span id="cb685-7"><a href="#cb685-7" aria-hidden="true" tabindex="-1"></a> { markdown / example / module }</span>
+<span id="cb685-8"><a href="#cb685-8" aria-hidden="true" tabindex="-1"></a> { <span class="co">% Define a key--value that processes YAML metadata.</span></span>
+<span id="cb685-9"><a href="#cb685-9" aria-hidden="true" tabindex="-1"></a> title / programmaticString .str_gset:N = <span class="fu">\g</span>_markdown_example_title_str, <span class="co">% Store the raw title in a variable.</span></span>
+<span id="cb685-10"><a href="#cb685-10" aria-hidden="true" tabindex="-1"></a> title .code:n = { <span class="fu">\title</span> { #1 } }, <span class="co">% Set the title. This is the same as writing `title / typographicString`.</span></span>
+<span id="cb685-11"><a href="#cb685-11" aria-hidden="true" tabindex="-1"></a> authors / unknown .code:n = { <span class="co">% Store a variable-length list of authors in an array variable.</span></span>
+<span id="cb685-12"><a href="#cb685-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">\seq</span>_put_right:Nn</span>
+<span id="cb685-13"><a href="#cb685-13" aria-hidden="true" tabindex="-1"></a> <span class="fu">\g</span>_markdown_example_authors_seq</span>
+<span id="cb685-14"><a href="#cb685-14" aria-hidden="true" tabindex="-1"></a> { #1 }</span>
+<span id="cb685-15"><a href="#cb685-15" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb685-16"><a href="#cb685-16" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb685-17"><a href="#cb685-17" aria-hidden="true" tabindex="-1"></a><span class="fu">\markdownSetupSnippet</span></span>
+<span id="cb685-18"><a href="#cb685-18" aria-hidden="true" tabindex="-1"></a> { metadata }</span>
+<span id="cb685-19"><a href="#cb685-19" aria-hidden="true" tabindex="-1"></a> { <span class="co">% Define a snippet that routes YAML metadata to the above key key–value.</span></span>
+<span id="cb685-20"><a href="#cb685-20" aria-hidden="true" tabindex="-1"></a> jekyllDataKeyValue = markdown / example / module,</span>
+<span id="cb685-21"><a href="#cb685-21" aria-hidden="true" tabindex="-1"></a> renderers = {</span>
+<span id="cb685-22"><a href="#cb685-22" aria-hidden="true" tabindex="-1"></a> jekyllDataEnd = { <span class="co">% At the end of the YAML metadata, ...</span></span>
+<span id="cb685-23"><a href="#cb685-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">\clist</span>_set_from_seq:NN <span class="co">% ... set the list of authors and</span></span>
+<span id="cb685-24"><a href="#cb685-24" aria-hidden="true" tabindex="-1"></a> <span class="fu">\l</span>_tmpa_clist</span>
+<span id="cb685-25"><a href="#cb685-25" aria-hidden="true" tabindex="-1"></a> <span class="fu">\g</span>_markdown_example_authors_seq</span>
+<span id="cb685-26"><a href="#cb685-26" aria-hidden="true" tabindex="-1"></a> <span class="fu">\exp</span>_args:Nx</span>
+<span id="cb685-27"><a href="#cb685-27" aria-hidden="true" tabindex="-1"></a> <span class="fu">\author</span></span>
+<span id="cb685-28"><a href="#cb685-28" aria-hidden="true" tabindex="-1"></a> { <span class="fu">\clist</span>_use:Nn <span class="fu">\l</span>_tmpa_clist { ,~ } }</span>
+<span id="cb685-29"><a href="#cb685-29" aria-hidden="true" tabindex="-1"></a> <span class="fu">\AtBeginDocument</span> { <span class="fu">\maketitle</span> } <span class="co">% ... typeset the title page.</span></span>
+<span id="cb685-30"><a href="#cb685-30" aria-hidden="true" tabindex="-1"></a> },</span>
+<span id="cb685-31"><a href="#cb685-31" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb685-32"><a href="#cb685-32" aria-hidden="true" tabindex="-1"></a> }</span>
+<span id="cb685-33"><a href="#cb685-33" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb685-34"><a href="#cb685-34" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">yaml</span>}[snippet=metadata]</span>
+<span id="cb685-35"><a href="#cb685-35" aria-hidden="true" tabindex="-1"></a>title: Some title that includes _markup_</span>
+<span id="cb685-36"><a href="#cb685-36" aria-hidden="true" tabindex="-1"></a>authors: [Jane Doe, John Moe]</span>
+<span id="cb685-37"><a href="#cb685-37" aria-hidden="true" tabindex="-1"></a><span class="kw">\end</span>{<span class="ex">yaml</span>}</span>
+<span id="cb685-38"><a href="#cb685-38" aria-hidden="true" tabindex="-1"></a><span class="kw">\begin</span>{<span class="ex">document</span>}</span>
+<span id="cb685-39"><a href="#cb685-39" aria-hidden="true" tabindex="-1"></a>The raw title of the document is:</span>
+<span id="cb685-40"><a href="#cb685-40" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOn</span></span>
+<span id="cb685-41"><a href="#cb685-41" aria-hidden="true" tabindex="-1"></a><span class="fu">\str</span>_use:N <span class="fu">\g</span>_markdown_example_title_str</span>
+<span id="cb685-42"><a href="#cb685-42" aria-hidden="true" tabindex="-1"></a><span class="fu">\ExplSyntaxOff</span></span>
+<span id="cb685-43"><a href="#cb685-43" 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="cb686"><pre
+class="sourceCode sh"><code class="sourceCode bash"><span id="cb686-1"><a href="#cb686-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>
+<h3 id="some-title-that-includes-markup">Some title that includes
+<em>markup</em></h3>
+<h5 id="jane-doe-john-moe">Jane Doe, John Moe</h5>
+<h5 id="current-date"><em>⟨Current date⟩</em></h5>
+<p>The raw title of the document is: Some title that includes
+_markup_</p>
+</blockquote>
+<section id="footnotes" class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
@@ -12794,6 +12884,6 @@ class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<code>contentBlocksLanguageMap</code> Lua option.<a href="#fnref3"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
-</aside>
+</section>
</body>
</html>
diff --git a/macros/generic/markdown/markdown.ins b/macros/generic/markdown/markdown.ins
index 8e777f4217..f1f3be8483 100644
--- a/macros/generic/markdown/markdown.ins
+++ b/macros/generic/markdown/markdown.ins
@@ -2,19 +2,20 @@
\generate{
\usepreamble\luapreamble
\usepostamble\luapostamble
- \file{markdown.lua}{\from{markdown.dtx}{lua}}
+ \file{markdown.lua}{\from{markdown.dtx}{lua-loader}}
+ \file{markdown-parser.lua}{\from{markdown.dtx}{lua}}
\file{markdown-cli.lua}{\from{markdown.dtx}{lua-cli}}
+ \file{markdown2tex.lua}{\from{markdown.dtx}{lua-cli}}
+ \file{markdown-unicode-data-generator.lua}{\from{markdown.dtx}{lua-unicode-data-generator}}
+ \file{markdown-unicode-data.lua}{\from{markdown.dtx}{lua-unicode-data}}
\usepreamble\texpreamble
\usepostamble\texpostamble
\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}{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{t-markdownthemewitiko_markdown_defaults.tex}{\from{markdown.dtx}{themes-witiko-markdown-defaults-ctx}}
\file{markdownthemewitiko_markdown_techdoc.sty}{\from{markdown.dtx}{themes-witiko-markdown-techdoc}}
\usepreamble\empty
\usepostamble\empty
@@ -25,5 +26,6 @@
\file{markdown.css}{\from{markdown.dtx}{manual-css}}
\file{markdown-figure-block-diagram.tex}{\from{markdown.dtx}{techdoc-block-diagram}}
\file{markdown.bib}{\from{markdown.dtx}{techdoc-bibliography}}
+ \file{DEPENDS-raw.txt}{\from{markdown.dtx}{depends}}
}
\endbatchfile
diff --git a/macros/generic/markdown/markdown.pdf b/macros/generic/markdown/markdown.pdf
index 40adf14658..e2c439b0ce 100644
--- a/macros/generic/markdown/markdown.pdf
+++ b/macros/generic/markdown/markdown.pdf
Binary files differ