%% %% This is file `markdown.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% markdown.dtx (with options: `tex') %% %% Copyright (C) 2016-2021 Vít Novotný %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in %% %% http://www.latex-project.org/lppl.txt %% %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% The Current Maintainer of this work is Vít Novotný. %% %% Send bug reports, requests for additions and questions %% either to the GitHub issue tracker at %% %% https://github.com/Witiko/markdown/issues %% %% or to the e-mail address . %% %% MODIFICATION ADVICE: %% %% If you want to customize this file, it is best to make a copy of %% the source file(s) from which it was produced. Use a different %% name for your copy(ies) and modify the copy(ies); this will ensure %% that your modifications do not get overwritten when you install a %% new release of the standard system. You should also ensure that %% your modified source file does not generate any modified file with %% the same name as a standard file. %% %% You will also need to produce your own, suitably named, .ins file to %% control the generation of files from your source file; this file %% should contain your own preambles for the files it generates, not %% those in the standard .ins files. %% %% The names of the source files used are shown above. %% \ifx\ExplSyntaxOn\undefined \input expl3-generic\relax \fi \ExplSyntaxOn \seq_new:N \g__markdown_lua_options_seq \prop_new:N \g__markdown_lua_option_types_prop \prop_new:N \g__markdown_default_lua_options_prop \seq_put_right:Nn \g__markdown_lua_options_seq { cacheDir } \prop_put:Nnn \g__markdown_lua_option_types_prop { cacheDir } { string } \prop_put:Nnn \g__markdown_default_lua_options_prop { cacheDir } { . } \seq_put_right:Nn \g__markdown_lua_options_seq { frozenCacheFileName } \prop_put:Nnn \g__markdown_lua_option_types_prop { frozenCacheFileName } { string } \prop_put:Nnn \g__markdown_default_lua_options_prop { frozenCacheFileName } { frozenCache.tex } \seq_put_right:Nn \g__markdown_lua_options_seq { blankBeforeBlockquote } \prop_put:Nnn \g__markdown_lua_option_types_prop { blankBeforeBlockquote } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { blankBeforeBlockquote } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { blankBeforeCodeFence } \prop_put:Nnn \g__markdown_lua_option_types_prop { blankBeforeCodeFence } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { blankBeforeCodeFence } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { blankBeforeHeading } \prop_put:Nnn \g__markdown_lua_option_types_prop { blankBeforeHeading } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { blankBeforeHeading } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { breakableBlockquotes } \prop_put:Nnn \g__markdown_lua_option_types_prop { breakableBlockquotes } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { breakableBlockquotes } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { citationNbsps } \prop_put:Nnn \g__markdown_lua_option_types_prop { citationNbsps } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { citationNbsps } { true } \seq_put_right:Nn \g__markdown_lua_options_seq { citations } \prop_put:Nnn \g__markdown_lua_option_types_prop { citations } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { citations } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { codeSpans } \prop_put:Nnn \g__markdown_lua_option_types_prop { codeSpans } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { codeSpans } { true } \seq_put_right:Nn \g__markdown_lua_options_seq { contentBlocks } \prop_put:Nnn \g__markdown_lua_option_types_prop { contentBlocks } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { contentBlocks } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { contentBlocksLanguageMap } \prop_put:Nnn \g__markdown_lua_option_types_prop { contentBlocksLanguageMap } { string } \prop_put:Nnn \g__markdown_default_lua_options_prop { contentBlocksLanguageMap } { markdown-languages.json } \seq_put_right:Nn \g__markdown_lua_options_seq { definitionLists } \prop_put:Nnn \g__markdown_lua_option_types_prop { definitionLists } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { definitionLists } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { eagerCache } \prop_put:Nnn \g__markdown_lua_option_types_prop { eagerCache } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { eagerCache } { true } \seq_put_right:Nn \g__markdown_lua_options_seq { expectJekyllData } \prop_put:Nnn \g__markdown_lua_option_types_prop { expectJekyllData } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { expectJekyllData } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { fencedCode } \prop_put:Nnn \g__markdown_lua_option_types_prop { fencedCode } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { fencedCode } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { finalizeCache } \prop_put:Nnn \g__markdown_lua_option_types_prop { finalizeCache } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { finalizeCache } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { footnotes } \prop_put:Nnn \g__markdown_lua_option_types_prop { footnotes } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { footnotes } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { frozenCacheCounter } \prop_put:Nnn \g__markdown_lua_option_types_prop { frozenCacheCounter } { counter } \prop_put:Nnn \g__markdown_default_lua_options_prop { frozenCacheCounter } { 0 } \seq_put_right:Nn \g__markdown_lua_options_seq { hardLineBreaks } \prop_put:Nnn \g__markdown_lua_option_types_prop { hardLineBreaks } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { hardLineBreaks } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { hashEnumerators } \prop_put:Nnn \g__markdown_lua_option_types_prop { hashEnumerators } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { hashEnumerators } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { headerAttributes } \prop_put:Nnn \g__markdown_lua_option_types_prop { headerAttributes } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { headerAttributes } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { html } \prop_put:Nnn \g__markdown_lua_option_types_prop { html } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { html } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { hybrid } \prop_put:Nnn \g__markdown_lua_option_types_prop { hybrid } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { hybrid } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { inlineFootnotes } \prop_put:Nnn \g__markdown_lua_option_types_prop { inlineFootnotes } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { inlineFootnotes } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { jekyllData } \prop_put:Nnn \g__markdown_lua_option_types_prop { jekyllData } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { jekyllData } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { pipeTables } \prop_put:Nnn \g__markdown_lua_option_types_prop { pipeTables } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { pipeTables } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { preserveTabs } \prop_put:Nnn \g__markdown_lua_option_types_prop { preserveTabs } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { preserveTabs } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { relativeReferences } \prop_put:Nnn \g__markdown_lua_option_types_prop { relativeReferences } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { relativeReferences } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { shiftHeadings } \prop_put:Nnn \g__markdown_lua_option_types_prop { shiftHeadings } { number } \prop_put:Nnn \g__markdown_default_lua_options_prop { shiftHeadings } { 0 } \seq_put_right:Nn \g__markdown_lua_options_seq { slice } \prop_put:Nnn \g__markdown_lua_option_types_prop { slice } { string } \prop_put:Nnn \g__markdown_default_lua_options_prop { slice } { ^~$ } \seq_put_right:Nn \g__markdown_lua_options_seq { smartEllipses } \prop_put:Nnn \g__markdown_lua_option_types_prop { smartEllipses } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { smartEllipses } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { startNumber } \prop_put:Nnn \g__markdown_lua_option_types_prop { startNumber } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { startNumber } { true } \seq_put_right:Nn \g__markdown_lua_options_seq { stripIndent } \prop_put:Nnn \g__markdown_lua_option_types_prop { stripIndent } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { stripIndent } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { tableCaptions } \prop_put:Nnn \g__markdown_lua_option_types_prop { tableCaptions } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { tableCaptions } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { taskLists } \prop_put:Nnn \g__markdown_lua_option_types_prop { taskLists } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { taskLists } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { texComments } \prop_put:Nnn \g__markdown_lua_option_types_prop { texComments } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { texComments } { false } \seq_put_right:Nn \g__markdown_lua_options_seq { tightLists } \prop_put:Nnn \g__markdown_lua_option_types_prop { tightLists } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { tightLists } { true } \seq_put_right:Nn \g__markdown_lua_options_seq { underscores } \prop_put:Nnn \g__markdown_lua_option_types_prop { underscores } { boolean } \prop_put:Nnn \g__markdown_default_lua_options_prop { underscores } { true } \ExplSyntaxOff \def\markdownLastModified{2022/05/17}% \def\markdownVersion{2.15.1-0-g4b33c77}% \let\markdownBegin\relax \let\markdownEnd\relax \let\markdownInput\relax \let\markdownOptionFinalizeCache\undefined \def\markdownOptionHelperScriptFileName{\jobname.markdown.lua}% \def\markdownOptionInputTempFileName{\jobname.markdown.in}% \def\markdownOptionOutputTempFileName{\jobname.markdown.out}% \def\markdownOptionErrorTempFileName{\jobname.markdown.err}% \def\markdownOptionOutputDir{.}% \def\markdownOptionCacheDir{\markdownOptionOutputDir/_markdown_\jobname}% \def\markdownOptionFrozenCacheFileName{\markdownOptionCacheDir/frozenCache.tex} \let\markdownOptionBlankBeforeBlockquote\undefined \let\markdownOptionBlankBeforeCodeFence\undefined \let\markdownOptionBlankBeforeHeading\undefined \let\markdownOptionBreakableBlockquotes\undefined \let\markdownOptionCitations\undefined \let\markdownOptionCitationNbsps\undefined \let\markdownOptionContentBlocks\undefined \let\markdownOptionContentBlocksLanguageMap\undefined \let\markdownOptionDefinitionLists\undefined \let\markdownOptionEagerCache\undefined \let\markdownOptionFootnotes\undefined \let\markdownOptionFencedCode\undefined \let\markdownOptionHardLineBreaks\undefined \let\markdownOptionHashEnumerators\undefined \let\markdownOptionHeaderAttributes\undefined \let\markdownOptionHtml\undefined \let\markdownOptionHybrid\undefined \let\markdownOptionInlineFootnotes\undefined \let\markdownOptionJekyllData\undefined \let\markdownOptionPipeTables\undefined \let\markdownOptionPreserveTabs\undefined \let\markdownOptionRelativeReferences\undefined \let\markdownOptionShiftHeadings\undefined \let\markdownOptionSlice\undefined \let\markdownOptionSmartEllipses\undefined \let\markdownOptionStartNumber\undefined \let\markdownOptionStripIndent\undefined \let\markdownOptionTableCaptions\undefined \let\markdownOptionTaskLists\undefined \let\markdownOptionTexComments\undefined \let\markdownOptionTightLists\undefined \def\markdownOptionStripPercentSigns{false}% \ExplSyntaxOn \seq_new:N \g__markdown_renderers_seq \prop_new:N \g__markdown_renderer_arities_prop \ExplSyntaxOff \def\markdownRendererTickedBox{% \markdownRendererTickedBoxPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { tickedBox } \prop_put:Nnn \g__markdown_renderer_arities_prop { tickedBox } { 0 } \ExplSyntaxOff \def\markdownRendererHalfTickedBox{% \markdownRendererHalfTickedBoxPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { halfTickedBox } \prop_put:Nnn \g__markdown_renderer_arities_prop { halfTickedBox } { 0 } \ExplSyntaxOff \def\markdownRendererUntickedBox{% \markdownRendererUntickedBoxPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { untickedBox } \prop_put:Nnn \g__markdown_renderer_arities_prop { untickedBox } { 0 } \ExplSyntaxOff \def\markdownRendererDocumentBegin{% \markdownRendererDocumentBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { documentBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { documentBegin } { 0 } \ExplSyntaxOff \def\markdownRendererDocumentEnd{% \markdownRendererDocumentEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { documentEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { documentEnd } { 0 } \ExplSyntaxOff \def\markdownRendererInterblockSeparator{% \markdownRendererInterblockSeparatorPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { interblockSeparator } \prop_put:Nnn \g__markdown_renderer_arities_prop { interblockSeparator } { 0 } \ExplSyntaxOff \def\markdownRendererLineBreak{% \markdownRendererLineBreakPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { lineBreak } \prop_put:Nnn \g__markdown_renderer_arities_prop { lineBreak } { 0 } \ExplSyntaxOff \def\markdownRendererEllipsis{% \markdownRendererEllipsisPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ellipsis } \prop_put:Nnn \g__markdown_renderer_arities_prop { ellipsis } { 0 } \ExplSyntaxOff \def\markdownRendererNbsp{% \markdownRendererNbspPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { nbsp } \prop_put:Nnn \g__markdown_renderer_arities_prop { nbsp } { 0 } \ExplSyntaxOff \def\markdownRendererLeftBrace{% \markdownRendererLeftBracePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { leftBrace } \prop_put:Nnn \g__markdown_renderer_arities_prop { leftBrace } { 0 } \ExplSyntaxOff \def\markdownRendererRightBrace{% \markdownRendererRightBracePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { rightBrace } \prop_put:Nnn \g__markdown_renderer_arities_prop { rightBrace } { 0 } \ExplSyntaxOff \def\markdownRendererDollarSign{% \markdownRendererDollarSignPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dollarSign } \prop_put:Nnn \g__markdown_renderer_arities_prop { dollarSign } { 0 } \ExplSyntaxOff \def\markdownRendererPercentSign{% \markdownRendererPercentSignPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { percentSign } \prop_put:Nnn \g__markdown_renderer_arities_prop { percentSign } { 0 } \ExplSyntaxOff \def\markdownRendererAmpersand{% \markdownRendererAmpersandPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ampersand } \prop_put:Nnn \g__markdown_renderer_arities_prop { ampersand } { 0 } \ExplSyntaxOff \def\markdownRendererUnderscore{% \markdownRendererUnderscorePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { underscore } \prop_put:Nnn \g__markdown_renderer_arities_prop { underscore } { 0 } \ExplSyntaxOff \def\markdownRendererHash{% \markdownRendererHashPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { hash } \prop_put:Nnn \g__markdown_renderer_arities_prop { hash } { 0 } \ExplSyntaxOff \def\markdownRendererCircumflex{% \markdownRendererCircumflexPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { circumflex } \prop_put:Nnn \g__markdown_renderer_arities_prop { circumflex } { 0 } \ExplSyntaxOff \def\markdownRendererBackslash{% \markdownRendererBackslashPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { backslash } \prop_put:Nnn \g__markdown_renderer_arities_prop { backslash } { 0 } \ExplSyntaxOff \def\markdownRendererTilde{% \markdownRendererTildePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { tilde } \prop_put:Nnn \g__markdown_renderer_arities_prop { tilde } { 0 } \ExplSyntaxOff \def\markdownRendererPipe{% \markdownRendererPipePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { pipe } \prop_put:Nnn \g__markdown_renderer_arities_prop { pipe } { 0 } \ExplSyntaxOff \def\markdownRendererCodeSpan{% \markdownRendererCodeSpanPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { codeSpan } \prop_put:Nnn \g__markdown_renderer_arities_prop { codeSpan } { 1 } \ExplSyntaxOff \def\markdownRendererLink{% \markdownRendererLinkPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { link } \prop_put:Nnn \g__markdown_renderer_arities_prop { link } { 4 } \ExplSyntaxOff \def\markdownRendererImage{% \markdownRendererImagePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { image } \prop_put:Nnn \g__markdown_renderer_arities_prop { image } { 4 } \ExplSyntaxOff \def\markdownRendererContentBlock{% \markdownRendererContentBlockPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { contentBlock } \prop_put:Nnn \g__markdown_renderer_arities_prop { contentBlock } { 4 } \ExplSyntaxOff \def\markdownRendererContentBlockOnlineImage{% \markdownRendererContentBlockOnlineImagePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { contentBlockOnlineImage } \prop_put:Nnn \g__markdown_renderer_arities_prop { contentBlockOnlineImage } { 4 } \ExplSyntaxOff \def\markdownRendererContentBlockCode{% \markdownRendererContentBlockCodePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { contentBlockCode } \prop_put:Nnn \g__markdown_renderer_arities_prop { contentBlockCode } { 5 } \ExplSyntaxOff \def\markdownRendererUlBegin{% \markdownRendererUlBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ulBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { ulBegin } { 0 } \ExplSyntaxOff \def\markdownRendererUlBeginTight{% \markdownRendererUlBeginTightPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ulBeginTight } \prop_put:Nnn \g__markdown_renderer_arities_prop { ulBeginTight } { 0 } \ExplSyntaxOff \def\markdownRendererUlItem{% \markdownRendererUlItemPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ulItem } \prop_put:Nnn \g__markdown_renderer_arities_prop { ulItem } { 0 } \ExplSyntaxOff \def\markdownRendererUlItemEnd{% \markdownRendererUlItemEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ulItemEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { ulItemEnd } { 0 } \ExplSyntaxOff \def\markdownRendererUlEnd{% \markdownRendererUlEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ulEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { ulEnd } { 0 } \ExplSyntaxOff \def\markdownRendererUlEndTight{% \markdownRendererUlEndTightPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { ulEndTight } \prop_put:Nnn \g__markdown_renderer_arities_prop { ulEndTight } { 0 } \ExplSyntaxOff \def\markdownRendererOlBegin{% \markdownRendererOlBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { olBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { olBegin } { 0 } \ExplSyntaxOff \def\markdownRendererOlBeginTight{% \markdownRendererOlBeginTightPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { olBeginTight } \prop_put:Nnn \g__markdown_renderer_arities_prop { olBeginTight } { 0 } \ExplSyntaxOff \def\markdownRendererOlItem{% \markdownRendererOlItemPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { olItem } \prop_put:Nnn \g__markdown_renderer_arities_prop { olItem } { 0 } \ExplSyntaxOff \def\markdownRendererOlItemEnd{% \markdownRendererOlItemEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { olItemEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { olItemEnd } { 0 } \ExplSyntaxOff \def\markdownRendererOlItemWithNumber{% \markdownRendererOlItemWithNumberPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { olItemWithNumber } \prop_put:Nnn \g__markdown_renderer_arities_prop { olItemWithNumber } { 1 } \ExplSyntaxOff \def\markdownRendererOlEnd{% \markdownRendererOlEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { olEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { olEnd } { 0 } \ExplSyntaxOff \def\markdownRendererOlEndTight{% \markdownRendererOlEndTightPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { olEndTight } \prop_put:Nnn \g__markdown_renderer_arities_prop { olEndTight } { 0 } \ExplSyntaxOff \def\markdownRendererDlBegin{% \markdownRendererDlBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlBegin } { 0 } \ExplSyntaxOff \def\markdownRendererDlBeginTight{% \markdownRendererDlBeginTightPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlBeginTight } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlBeginTight } { 0 } \ExplSyntaxOff \def\markdownRendererDlItem{% \markdownRendererDlItemPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlItem } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlItem } { 1 } \ExplSyntaxOff \def\markdownRendererDlItemEnd{% \markdownRendererDlItemEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlItemEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlItemEnd } { 0 } \ExplSyntaxOff \def\markdownRendererDlDefinitionBegin{% \markdownRendererDlDefinitionBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlDefinitionBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlDefinitionBegin } { 0 } \ExplSyntaxOff \def\markdownRendererDlDefinitionEnd{% \markdownRendererDlDefinitionEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlDefinitionEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlDefinitionEnd } { 0 } \ExplSyntaxOff \def\markdownRendererDlEnd{% \markdownRendererDlEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlEnd } { 0 } \ExplSyntaxOff \def\markdownRendererDlEndTight{% \markdownRendererDlEndTightPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { dlEndTight } \prop_put:Nnn \g__markdown_renderer_arities_prop { dlEndTight } { 0 } \ExplSyntaxOff \def\markdownRendererEmphasis{% \markdownRendererEmphasisPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { emphasis } \prop_put:Nnn \g__markdown_renderer_arities_prop { emphasis } { 1 } \ExplSyntaxOff \def\markdownRendererStrongEmphasis{% \markdownRendererStrongEmphasisPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { strongEmphasis } \prop_put:Nnn \g__markdown_renderer_arities_prop { strongEmphasis } { 1 } \ExplSyntaxOff \def\markdownRendererBlockQuoteBegin{% \markdownRendererBlockQuoteBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { blockQuoteBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { blockQuoteBegin } { 0 } \ExplSyntaxOff \def\markdownRendererBlockQuoteEnd{% \markdownRendererBlockQuoteEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { blockQuoteEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { blockQuoteEnd } { 0 } \ExplSyntaxOff \def\markdownRendererInputVerbatim{% \markdownRendererInputVerbatimPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { inputVerbatim } \prop_put:Nnn \g__markdown_renderer_arities_prop { inputVerbatim } { 1 } \ExplSyntaxOff \def\markdownRendererInputFencedCode{% \markdownRendererInputFencedCodePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { inputFencedCode } \prop_put:Nnn \g__markdown_renderer_arities_prop { inputFencedCode } { 2 } \ExplSyntaxOff \def\markdownRendererJekyllDataBegin{% \markdownRendererJekyllDataBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataBegin } { 0 } \ExplSyntaxOff \def\markdownRendererJekyllDataEnd{% \markdownRendererJekyllDataEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataEnd } { 0 } \ExplSyntaxOff \def\markdownRendererJekyllDataMappingBegin{% \markdownRendererJekyllDataMappingBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataMappingBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataMappingBegin } { 2 } \ExplSyntaxOff \def\markdownRendererJekyllDataMappingEnd{% \markdownRendererJekyllDataMappingEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataMappingEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataMappingEnd } { 0 } \ExplSyntaxOff \def\markdownRendererJekyllDataSequenceBegin{% \markdownRendererJekyllDataSequenceBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataSequenceBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataSequenceBegin } { 2 } \ExplSyntaxOff \def\markdownRendererJekyllDataSequenceEnd{% \markdownRendererJekyllDataSequenceEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataSequenceEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataSequenceEnd } { 0 } \ExplSyntaxOff \def\markdownRendererJekyllDataBoolean{% \markdownRendererJekyllDataBooleanPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataBoolean } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataBoolean } { 2 } \ExplSyntaxOff \def\markdownRendererJekyllDataNumber{% \markdownRendererJekyllDataNumberPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataNumber } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataNumber } { 2 } \ExplSyntaxOff \def\markdownRendererJekyllDataString{% \markdownRendererJekyllDataStringPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataString } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataString } { 2 } \ExplSyntaxOff \def\markdownRendererJekyllDataEmpty{% \markdownRendererJekyllDataEmptyPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { jekyllDataEmpty } \prop_put:Nnn \g__markdown_renderer_arities_prop { jekyllDataEmpty } { 1 } \ExplSyntaxOff \def\markdownRendererHeadingOne{% \markdownRendererHeadingOnePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headingOne } \prop_put:Nnn \g__markdown_renderer_arities_prop { headingOne } { 1 } \ExplSyntaxOff \def\markdownRendererHeadingTwo{% \markdownRendererHeadingTwoPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headingTwo } \prop_put:Nnn \g__markdown_renderer_arities_prop { headingTwo } { 1 } \ExplSyntaxOff \def\markdownRendererHeadingThree{% \markdownRendererHeadingThreePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headingThree } \prop_put:Nnn \g__markdown_renderer_arities_prop { headingThree } { 1 } \ExplSyntaxOff \def\markdownRendererHeadingFour{% \markdownRendererHeadingFourPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headingFour } \prop_put:Nnn \g__markdown_renderer_arities_prop { headingFour } { 1 } \ExplSyntaxOff \def\markdownRendererHeadingFive{% \markdownRendererHeadingFivePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headingFive } \prop_put:Nnn \g__markdown_renderer_arities_prop { headingFive } { 1 } \ExplSyntaxOff \def\markdownRendererHeadingSix{% \markdownRendererHeadingSixPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headingSix } \prop_put:Nnn \g__markdown_renderer_arities_prop { headingSix } { 1 } \ExplSyntaxOff \def\markdownRendererHorizontalRule{% \markdownRendererHorizontalRulePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { horizontalRule } \prop_put:Nnn \g__markdown_renderer_arities_prop { horizontalRule } { 0 } \ExplSyntaxOff \def\markdownRendererFootnote{% \markdownRendererFootnotePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { footnote } \prop_put:Nnn \g__markdown_renderer_arities_prop { footnote } { 1 } \ExplSyntaxOff \def\markdownRendererCite{% \markdownRendererCitePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { cite } \prop_put:Nnn \g__markdown_renderer_arities_prop { cite } { 1 } \ExplSyntaxOff \def\markdownRendererTextCite{% \markdownRendererTextCitePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { textCite } \prop_put:Nnn \g__markdown_renderer_arities_prop { textCite } { 1 } \ExplSyntaxOff \def\markdownRendererTable{% \markdownRendererTablePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { table } \prop_put:Nnn \g__markdown_renderer_arities_prop { table } { 3 } \ExplSyntaxOff \def\markdownRendererInlineHtmlComment{% \markdownRendererInlineHtmlCommentPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { inlineHtmlComment } \prop_put:Nnn \g__markdown_renderer_arities_prop { inlineHtmlComment } { 1 } \ExplSyntaxOff \def\markdownRendererBlockHtmlCommentBegin{% \markdownRendererBlockHtmlCommentBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { blockHtmlCommentBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { blockHtmlCommentBegin } { 0 } \ExplSyntaxOff \def\markdownRendererBlockHtmlCommentEnd{% \markdownRendererBlockHtmlCommentEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { blockHtmlCommentEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { blockHtmlCommentEnd } { 0 } \ExplSyntaxOff \def\markdownRendererInlineHtmlTag{% \markdownRendererInlineHtmlTagPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { inlineHtmlTag } \prop_put:Nnn \g__markdown_renderer_arities_prop { inlineHtmlTag } { 1 } \ExplSyntaxOff \def\markdownRendererInputBlockHtmlElement{% \markdownRendererInputBlockHtmlElementPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { inputBlockHtmlElement } \prop_put:Nnn \g__markdown_renderer_arities_prop { inputBlockHtmlElement } { 1 } \ExplSyntaxOff \def\markdownRendererAttributeIdentifier{% \markdownRendererAttributeIdentifierPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { attributeIdentifier } \prop_put:Nnn \g__markdown_renderer_arities_prop { attributeIdentifier } { 1 } \ExplSyntaxOff \def\markdownRendererAttributeClassName{% \markdownRendererAttributeClassNamePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { attributeClassName } \prop_put:Nnn \g__markdown_renderer_arities_prop { attributeClassName } { 1 } \ExplSyntaxOff \def\markdownRendererAttributeKeyValue{% \markdownRendererAttributeKeyValuePrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { attributeKeyValue } \prop_put:Nnn \g__markdown_renderer_arities_prop { attributeKeyValue } { 2 } \ExplSyntaxOff \def\markdownRendererHeaderAttributeContextBegin{% \markdownRendererHeaderAttributeContextBeginPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headerAttributeContextBegin } \prop_put:Nnn \g__markdown_renderer_arities_prop { headerAttributeContextBegin } { 0 } \ExplSyntaxOff \def\markdownRendererHeaderAttributeContextEnd{% \markdownRendererHeaderAttributeContextEndPrototype}% \ExplSyntaxOn \seq_put_right:Nn \g__markdown_renderers_seq { headerAttributeContextEnd } \prop_put:Nnn \g__markdown_renderer_arities_prop { headerAttributeContextEnd } { 0 } \ExplSyntaxOff \ExplSyntaxOn \keys_define:nn { markdown/jekyllData } { } \ExplSyntaxOff \def\markdownRendererAttributeIdentifierPrototype#1{}% \def\markdownRendererAttributeClassNamePrototype#1{}% \def\markdownRendererAttributeKeyValuePrototype#1#2{}% \def\markdownRendererDocumentBeginPrototype{}% \def\markdownRendererDocumentEndPrototype{}% \def\markdownRendererInterblockSeparatorPrototype{}% \def\markdownRendererLineBreakPrototype{}% \def\markdownRendererEllipsisPrototype{}% \def\markdownRendererHeaderAttributeContextBeginPrototype{}% \def\markdownRendererHeaderAttributeContextEndPrototype{}% \def\markdownRendererNbspPrototype{}% \def\markdownRendererLeftBracePrototype{}% \def\markdownRendererRightBracePrototype{}% \def\markdownRendererDollarSignPrototype{}% \def\markdownRendererPercentSignPrototype{}% \def\markdownRendererAmpersandPrototype{}% \def\markdownRendererUnderscorePrototype{}% \def\markdownRendererHashPrototype{}% \def\markdownRendererCircumflexPrototype{}% \def\markdownRendererBackslashPrototype{}% \def\markdownRendererTildePrototype{}% \def\markdownRendererPipePrototype{}% \def\markdownRendererCodeSpanPrototype#1{}% \def\markdownRendererLinkPrototype#1#2#3#4{}% \def\markdownRendererImagePrototype#1#2#3#4{}% \def\markdownRendererContentBlockPrototype#1#2#3#4{}% \def\markdownRendererContentBlockOnlineImagePrototype#1#2#3#4{}% \def\markdownRendererContentBlockCodePrototype#1#2#3#4#5{}% \def\markdownRendererUlBeginPrototype{}% \def\markdownRendererUlBeginTightPrototype{}% \def\markdownRendererUlItemPrototype{}% \def\markdownRendererUlItemEndPrototype{}% \def\markdownRendererUlEndPrototype{}% \def\markdownRendererUlEndTightPrototype{}% \def\markdownRendererOlBeginPrototype{}% \def\markdownRendererOlBeginTightPrototype{}% \def\markdownRendererOlItemPrototype{}% \def\markdownRendererOlItemWithNumberPrototype#1{}% \def\markdownRendererOlItemEndPrototype{}% \def\markdownRendererOlEndPrototype{}% \def\markdownRendererOlEndTightPrototype{}% \def\markdownRendererDlBeginPrototype{}% \def\markdownRendererDlBeginTightPrototype{}% \def\markdownRendererDlItemPrototype#1{}% \def\markdownRendererDlItemEndPrototype{}% \def\markdownRendererDlDefinitionBeginPrototype{}% \def\markdownRendererDlDefinitionEndPrototype{}% \def\markdownRendererDlEndPrototype{}% \def\markdownRendererDlEndTightPrototype{}% \def\markdownRendererEmphasisPrototype#1{}% \def\markdownRendererStrongEmphasisPrototype#1{}% \def\markdownRendererBlockQuoteBeginPrototype{}% \def\markdownRendererBlockQuoteEndPrototype{}% \def\markdownRendererInputVerbatimPrototype#1{}% \def\markdownRendererInputFencedCodePrototype#1#2{}% \def\markdownRendererJekyllDataBeginPrototype{}% \def\markdownRendererJekyllDataEndPrototype{}% \def\markdownRendererHeadingOnePrototype#1{}% \def\markdownRendererHeadingTwoPrototype#1{}% \def\markdownRendererHeadingThreePrototype#1{}% \def\markdownRendererHeadingFourPrototype#1{}% \def\markdownRendererHeadingFivePrototype#1{}% \def\markdownRendererHeadingSixPrototype#1{}% \def\markdownRendererHorizontalRulePrototype{}% \def\markdownRendererFootnotePrototype#1{}% \def\markdownRendererCitePrototype#1{}% \def\markdownRendererTextCitePrototype#1{}% \def\markdownRendererTablePrototype#1#2#3{}% \def\markdownRendererInlineHtmlCommentPrototype#1{}% \let\markdownRendererBlockHtmlCommentBeginPrototype=\iffalse \let\markdownRendererBlockHtmlCommentBegin=\iffalse \let\markdownRendererBlockHtmlCommentEndPrototype=\fi \let\markdownRendererBlockHtmlCommentEnd=\fi \def\markdownRendererInlineHtmlTagPrototype#1{}% \def\markdownRendererInputBlockHtmlElementPrototype#1{}% \def\markdownRendererTickedBoxPrototype{}% \def\markdownRendererHalfTickedBoxPrototype{}% \def\markdownRendererUntickedBoxPrototype{}% \let\markdownMakeOther\relax \let\markdownReadAndConvert\relax \begingroup \catcode`\|=0\catcode`\\=12% |gdef|markdownBegin{% |markdownReadAndConvert{\markdownEnd}% {|markdownEnd}}% |endgroup \ifx\markdownMode\undefined \ifx\directlua\undefined \def\markdownMode{0}% \else \def\markdownMode{2}% \fi \fi \def\markdownLuaRegisterIBCallback#1{\relax}% \def\markdownLuaUnregisterIBCallback#1{\relax}% \ifx\markdownInfo\undefined \def\markdownInfo#1{% \immediate\write-1{(l.\the\inputlineno) markdown.tex info: #1.}}% \fi \ifx\markdownWarning\undefined \def\markdownWarning#1{% \immediate\write16{(l.\the\inputlineno) markdown.tex warning: #1}}% \fi \ifx\markdownError\undefined \def\markdownError#1#2{% \errhelp{#2.}% \errmessage{(l.\the\inputlineno) markdown.tex error: #1}}% \fi \newcount\markdownFrozenCacheCounter \def\markdownRendererInterblockSeparatorPrototype{\par}% \def\markdownRendererLineBreakPrototype{\hfil\break}% \let\markdownRendererEllipsisPrototype\dots \def\markdownRendererNbspPrototype{~}% \def\markdownRendererLeftBracePrototype{\char`\{}% \def\markdownRendererRightBracePrototype{\char`\}}% \def\markdownRendererDollarSignPrototype{\char`$}% \def\markdownRendererPercentSignPrototype{\char`\%}% \def\markdownRendererAmpersandPrototype{\&}% \def\markdownRendererUnderscorePrototype{\char`_}% \def\markdownRendererHashPrototype{\char`\#}% \def\markdownRendererCircumflexPrototype{\char`^}% \def\markdownRendererBackslashPrototype{\char`\\}% \def\markdownRendererTildePrototype{\char`~}% \def\markdownRendererPipePrototype{|}% \def\markdownRendererCodeSpanPrototype#1{{\tt#1}}% \def\markdownRendererLinkPrototype#1#2#3#4{#2}% \def\markdownRendererContentBlockPrototype#1#2#3#4{% \markdownInput{#3}}% \def\markdownRendererContentBlockOnlineImagePrototype{% \markdownRendererImage}% \def\markdownRendererContentBlockCodePrototype#1#2#3#4#5{% \markdownRendererInputFencedCode{#3}{#2}}% \def\markdownRendererImagePrototype#1#2#3#4{#2}% \def\markdownRendererUlBeginPrototype{}% \def\markdownRendererUlBeginTightPrototype{}% \def\markdownRendererUlItemPrototype{}% \def\markdownRendererUlItemEndPrototype{}% \def\markdownRendererUlEndPrototype{}% \def\markdownRendererUlEndTightPrototype{}% \def\markdownRendererOlBeginPrototype{}% \def\markdownRendererOlBeginTightPrototype{}% \def\markdownRendererOlItemPrototype{}% \def\markdownRendererOlItemWithNumberPrototype#1{}% \def\markdownRendererOlItemEndPrototype{}% \def\markdownRendererOlEndPrototype{}% \def\markdownRendererOlEndTightPrototype{}% \def\markdownRendererDlBeginPrototype{}% \def\markdownRendererDlBeginTightPrototype{}% \def\markdownRendererDlItemPrototype#1{#1}% \def\markdownRendererDlItemEndPrototype{}% \def\markdownRendererDlDefinitionBeginPrototype{}% \def\markdownRendererDlDefinitionEndPrototype{\par}% \def\markdownRendererDlEndPrototype{}% \def\markdownRendererDlEndTightPrototype{}% \def\markdownRendererEmphasisPrototype#1{{\it#1}}% \def\markdownRendererStrongEmphasisPrototype#1{{\bf#1}}% \def\markdownRendererBlockQuoteBeginPrototype{\par\begingroup\it}% \def\markdownRendererBlockQuoteEndPrototype{\endgroup\par}% \def\markdownRendererInputVerbatimPrototype#1{% \par{\tt\input#1\relax{}}\par}% \def\markdownRendererInputFencedCodePrototype#1#2{% \markdownRendererInputVerbatimPrototype{#1}}% \def\markdownRendererHeadingOnePrototype#1{#1}% \def\markdownRendererHeadingTwoPrototype#1{#1}% \def\markdownRendererHeadingThreePrototype#1{#1}% \def\markdownRendererHeadingFourPrototype#1{#1}% \def\markdownRendererHeadingFivePrototype#1{#1}% \def\markdownRendererHeadingSixPrototype#1{#1}% \def\markdownRendererHorizontalRulePrototype{}% \def\markdownRendererFootnotePrototype#1{#1}% \def\markdownRendererCitePrototype#1{}% \def\markdownRendererTextCitePrototype#1{}% \def\markdownRendererTickedBoxPrototype{[X]}% \def\markdownRendererHalfTickedBoxPrototype{[/]}% \def\markdownRendererUntickedBoxPrototype{[ ]}% \ExplSyntaxOn \seq_new:N \g__markdown_jekyll_data_datatypes_seq \tl_const:Nn \c__markdown_jekyll_data_sequence_tl { sequence } \tl_const:Nn \c__markdown_jekyll_data_mapping_tl { mapping } \tl_const:Nn \c__markdown_jekyll_data_scalar_tl { scalar } \seq_new:N \g__markdown_jekyll_data_wildcard_absolute_address_seq \cs_new:Nn \markdown_jekyll_data_push_address_segment:n { \seq_if_empty:NF \g__markdown_jekyll_data_datatypes_seq { \seq_get_right:NN \g__markdown_jekyll_data_datatypes_seq \l_tmpa_tl \tl_if_eq:NNTF \l_tmpa_tl \c__markdown_jekyll_data_sequence_tl { \seq_put_right:Nn \g__markdown_jekyll_data_wildcard_absolute_address_seq { * } } { \seq_put_right:Nn \g__markdown_jekyll_data_wildcard_absolute_address_seq { #1 } } } } \tl_new:N \g__markdown_jekyll_data_wildcard_absolute_address_tl \tl_new:N \g__markdown_jekyll_data_wildcard_relative_address_tl \cs_new:Nn \markdown_jekyll_data_concatenate_address:NN { \seq_pop_left:NN #1 \l_tmpa_tl \tl_set:Nx #2 { / \seq_use:Nn #1 { / } } \seq_put_left:NV #1 \l_tmpa_tl } \cs_new:Nn \markdown_jekyll_data_update_address_tls: { \markdown_jekyll_data_concatenate_address:NN \g__markdown_jekyll_data_wildcard_absolute_address_seq \g__markdown_jekyll_data_wildcard_absolute_address_tl \seq_get_right:NN \g__markdown_jekyll_data_wildcard_absolute_address_seq \g__markdown_jekyll_data_wildcard_relative_address_tl } \cs_new:Nn \markdown_jekyll_data_push:nN { \markdown_jekyll_data_push_address_segment:n { #1 } \seq_put_right:NV \g__markdown_jekyll_data_datatypes_seq #2 \markdown_jekyll_data_update_address_tls: } \cs_new:Nn \markdown_jekyll_data_pop: { \seq_pop_right:NN \g__markdown_jekyll_data_wildcard_absolute_address_seq \l_tmpa_tl \seq_pop_right:NN \g__markdown_jekyll_data_datatypes_seq \l_tmpa_tl \markdown_jekyll_data_update_address_tls: } \cs_new:Nn \markdown_jekyll_data_set_keyval:nn { \keys_set_known:nn { markdown/jekyllData } { { #1 } = { #2 } } } \cs_generate_variant:Nn \markdown_jekyll_data_set_keyval:nn { Vn } \cs_new:Nn \markdown_jekyll_data_set_keyvals:nn { \markdown_jekyll_data_push:nN { #1 } \c__markdown_jekyll_data_scalar_tl \markdown_jekyll_data_set_keyval:Vn \g__markdown_jekyll_data_wildcard_absolute_address_tl { #2 } \markdown_jekyll_data_set_keyval:Vn \g__markdown_jekyll_data_wildcard_relative_address_tl { #2 } \markdown_jekyll_data_pop: } \def\markdownRendererJekyllDataSequenceBeginPrototype#1#2{ \markdown_jekyll_data_push:nN { #1 } \c__markdown_jekyll_data_sequence_tl } \def\markdownRendererJekyllDataMappingBeginPrototype#1#2{ \markdown_jekyll_data_push:nN { #1 } \c__markdown_jekyll_data_mapping_tl } \def\markdownRendererJekyllDataSequenceEndPrototype{ \markdown_jekyll_data_pop: } \def\markdownRendererJekyllDataMappingEndPrototype{ \markdown_jekyll_data_pop: } \def\markdownRendererJekyllDataBooleanPrototype#1#2{ \markdown_jekyll_data_set_keyvals:nn { #1 } { #2 } } \def\markdownRendererJekyllDataEmptyPrototype#1{} \def\markdownRendererJekyllDataNumberPrototype#1#2{ \markdown_jekyll_data_set_keyvals:nn { #1 } { #2 } } \def\markdownRendererJekyllDataStringPrototype#1#2{ \markdown_jekyll_data_set_keyvals:nn { #1 } { #2 } } \ExplSyntaxOff \ExplSyntaxOn \tl_new:N \g__markdown_formatted_lua_options_tl \tl_const:Nn \c__markdown_lua_option_type_boolean { boolean } \tl_const:Nn \c__markdown_lua_option_type_counter { counter } \tl_const:Nn \c__markdown_lua_option_type_number { number } \tl_const:Nn \c__markdown_lua_option_type_string { string } \cs_new:Nn \__markdown_format_lua_options: { \tl_gclear:N \g__markdown_formatted_lua_options_tl \seq_map_function:NN \g__markdown_lua_options_seq \__markdown_format_lua_option:n } \cs_new:Nn \__markdown_format_lua_option:n { \__markdown_typecheck_lua_option:n { #1 } \tl_set:Nn \l_tmpb_tl { \str_upper_case:n { #1 } } \tl_set:Nx \l_tmpa_tl { markdownOption \tl_head:f { \l_tmpb_tl } \tl_tail:n { #1 } } \prop_get:NnN \g__markdown_lua_option_types_prop { #1 } \l_tmpb_tl \cs_if_free:cTF { \l_tmpa_tl } { } { \tl_case:NnF \l_tmpb_tl { \c__markdown_lua_option_type_string { \tl_gput_right:Nx \g__markdown_formatted_lua_options_tl { #1~=~" \cs:w \l_tmpa_tl \cs_end: ",~ } } \c__markdown_lua_option_type_counter { \tl_gput_right:Nx \g__markdown_formatted_lua_options_tl { #1~=~ \the \cs:w \l_tmpa_tl \cs_end: ,~ } } } { \tl_gput_right:Nx \g__markdown_formatted_lua_options_tl { #1~=~ \cs:w \l_tmpa_tl \cs_end: ,~ } } } } \msg_new:nnn { markdown } { undefined-lua-option } { Lua~option~#1~is~undefined. } \msg_new:nnn { markdown } { failed-typecheck-for-boolean-lua-option } { Lua~option~#1~has~value~#2,~ but~a~boolean~(true~or~false)~was~expected. } \cs_new:Nn \__markdown_typecheck_lua_option:n { \tl_set:Nn \l_tmpb_tl { \str_upper_case:n { #1 } } \tl_set:Nx \l_tmpa_tl { markdownOption \tl_head:f { \l_tmpb_tl } \tl_tail:n { #1 } } \prop_get:NnNTF \g__markdown_lua_option_types_prop { #1 } \l_tmpb_tl { \cs_if_free:cTF { \l_tmpa_tl } { } { \tl_case:Nn \l_tmpb_tl { \c__markdown_lua_option_type_boolean { \tl_case:cnF { \l_tmpa_tl } { \c__markdown_lua_option_value_true { } \c__markdown_lua_option_value_false { } } { \msg_error:nnxx { markdown } { failed-typecheck-for-boolean-lua-option } { #1 } { \l_tmpa_tl } } } } } } { \msg_error:nnn { markdown } { undefined-lua-option } { #1 } } } \let\markdownPrepareLuaOptions=\__markdown_format_lua_options: \def\markdownLuaOptions{{ \g__markdown_formatted_lua_options_tl }} \ExplSyntaxOff \def\markdownPrepare{% local lfs = require("lfs") local cacheDir = "\markdownOptionCacheDir" if not lfs.isdir(cacheDir) then assert(lfs.mkdir(cacheDir)) end local md = require("markdown") local convert = md.new(\markdownLuaOptions) }% \ExplSyntaxOn \tl_const:Nn \c__markdown_lua_option_value_true { true } \tl_const:Nn \c__markdown_lua_option_value_false { false } \cs_new:Nn \__markdown_if_option:nTF { \tl_set:Nn \l_tmpb_tl { \str_upper_case:n { #1 } } \tl_set:Nx \l_tmpa_tl { markdownOption \tl_head:f { \l_tmpb_tl } \tl_tail:n { #1 } } \cs_if_free:cTF { \l_tmpa_tl } { \prop_get:NnN \g__markdown_default_lua_options_prop { #1 } \l_tmpb_tl } { \tl_set:Nf \l_tmpb_tl { \cs:w \l_tmpa_tl \cs_end: } } \tl_if_eq:NNTF \l_tmpb_tl \c__markdown_lua_option_value_true { #2 } { #3 } } \let\markdownIfOption=\__markdown_if_option:nTF \ExplSyntaxOff \csname newread\endcsname\markdownInputFileStream \csname newwrite\endcsname\markdownOutputFileStream \begingroup \catcode`\^^I=12% \gdef\markdownReadAndConvertTab{^^I}% \endgroup \begingroup \catcode`\^^M=13% \catcode`\^^I=13% \catcode`|=0% \catcode`\\=12% |catcode`@=14% |catcode`|%=12@ |gdef|markdownReadAndConvert#1#2{@ |begingroup@ |markdownIfOption{frozenCache}{}{@ |immediate|openout|markdownOutputFileStream@ |markdownOptionInputTempFileName|relax@ |markdownInfo{Buffering markdown input into the temporary @ input file "|markdownOptionInputTempFileName" and scanning @ for the closing token sequence "#1"}@ }@ |def|do##1{|catcode`##1=12}|dospecials@ |catcode`| =12@ |markdownMakeOther@ |def|markdownReadAndConvertStripPercentSign##1{@ |markdownIfOption{stripPercentSigns}{@ |if##1%@ |expandafter|expandafter|expandafter@ |markdownReadAndConvertProcessLine@ |else@ |expandafter|expandafter|expandafter@ |markdownReadAndConvertProcessLine@ |expandafter|expandafter|expandafter##1@ |fi@ }{@ |expandafter@ |markdownReadAndConvertProcessLine@ |expandafter##1@ }@ }@ |def|markdownReadAndConvertProcessLine##1#1##2#1##3|relax{@ |ifx|relax##3|relax@ |markdownIfOption{frozenCache}{}{@ |immediate|write|markdownOutputFileStream{##1}@ }@ |else@ |def^^M{@ |markdownInfo{The ending token sequence was found}@ |markdownIfOption{frozenCache}{}{@ |immediate|closeout|markdownOutputFileStream@ }@ |endgroup@ |markdownInput{@ |markdownOptionOutputDir@ /|markdownOptionInputTempFileName@ }@ #2}@ |fi@ ^^M}@ |catcode`|^^I=13@ |def^^I{|markdownReadAndConvertTab}@ |catcode`|^^M=13@ |def^^M##1^^M{@ |def^^M####1^^M{@ |markdownReadAndConvertStripPercentSign####1#1#1|relax}@ ^^M}@ ^^M}@ |endgroup \ifnum\markdownMode<2\relax \ifnum\markdownMode=0\relax \markdownInfo{Using mode 0: Shell escape via write18}% \else \markdownInfo{Using mode 1: Shell escape via os.execute}% \fi \ifx\pdfshellescape\undefined \ifx\shellescape\undefined \ifnum\markdownMode=0\relax \def\markdownExecuteShellEscape{1}% \else \def\markdownExecuteShellEscape{% \directlua{tex.sprint(status.shell_escape or "1")}}% \fi \else \let\markdownExecuteShellEscape\shellescape \fi \else \let\markdownExecuteShellEscape\pdfshellescape \fi \ifnum\markdownMode=0\relax \def\markdownExecuteDirect#1{\immediate\write18{#1}}% \else \def\markdownExecuteDirect#1{% \directlua{os.execute("\luaescapestring{#1}")}}% \fi \def\markdownExecute#1{% \ifnum\markdownExecuteShellEscape=1\relax \markdownExecuteDirect{#1}% \else \markdownError{I can not access the shell}{Either run the TeX compiler with the --shell-escape or the --enable-write18 flag, or set shell_escape=t in the texmf.cnf file}% \fi}% \begingroup \catcode`|=0% \catcode`\\=12% |gdef|markdownLuaExecute#1{% |immediate|openout|markdownOutputFileStream=% |markdownOptionHelperScriptFileName |markdownInfo{Writing a helper Lua script to the file "|markdownOptionHelperScriptFileName"}% |immediate|write|markdownOutputFileStream{% local ran_ok, error = pcall(function() local ran_ok, kpse = pcall(require, "kpse") if ran_ok then kpse.set_program_name("luatex") end #1 end) if not ran_ok then local file = io.open("% |markdownOptionOutputDir /|markdownOptionErrorTempFileName", "w") if file then file:write(error .. "\n") file:close() end print('\\markdownError{An error was encountered while executing Lua code}{For further clues, examine the file "|markdownOptionOutputDir /|markdownOptionErrorTempFileName"}') end}% |immediate|closeout|markdownOutputFileStream |markdownInfo{Executing a helper Lua script from the file "|markdownOptionHelperScriptFileName" and storing the result in the file "|markdownOptionOutputTempFileName"}% |markdownExecute{texlua "|markdownOptionOutputDir /|markdownOptionHelperScriptFileName" > % "|markdownOptionOutputDir /|markdownOptionOutputTempFileName"}% |input|markdownOptionOutputTempFileName|relax}% |endgroup \else \markdownInfo{Using mode 2: Direct Lua access}% \begingroup \catcode`|=0% \catcode`\\=12% |gdef|markdownLuaExecute#1{% |directlua{% local function print(input) local output = {} for line in input:gmatch("[^\r\n]+") do table.insert(output, line) end tex.print(output) end #1 }% }% |endgroup \fi \begingroup \catcode`|=0% \catcode`\\=12% |gdef|markdownInput#1{% |begingroup |catcode`|%=12 |markdownIfOption{frozenCache}{% |ifnum|markdownFrozenCacheCounter=0|relax |markdownInfo{Reading frozen cache from "|markdownOptionFrozenCacheFileName"}% |input|markdownOptionFrozenCacheFileName|relax |fi |markdownInfo{Including markdown document number "|the|markdownFrozenCacheCounter" from frozen cache}% |csname markdownFrozenCache|the|markdownFrozenCacheCounter|endcsname |global|advance|markdownFrozenCacheCounter by 1|relax }{% |markdownInfo{Including markdown document "#1"}% |openin|markdownInputFileStream#1 |closein|markdownInputFileStream |markdownPrepareLuaOptions |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:gsub("\r\n?", "\n") .. "\n"))}% |markdownIfOption{finalizeCache}{% |global|advance|markdownFrozenCacheCounter by 1|relax }% }% |endgroup }% |endgroup \endinput %% %% End of file `markdown.tex'.