%% %% This is file `t-markdown.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% markdown.dtx (with options: `context') %% %% Copyright (C) 2016-2022 Vít Novotný %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% %% http://www.latex-project.org/lppl.txt %% %% This work has the LPPL maintenance status `maintained'. %% The Current Maintainer of this work is Vít 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. %% \writestatus{loading}{ConTeXt User Module / markdown}% \startmodule[markdown] \unprotect \def\markdownInfo#1{\writestatus{markdown}{#1.}}% \def\markdownWarning#1{\writestatus{markdown\space warn}{#1.}}% \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\_\do\%\do\~}% \input markdown/markdown \let\startmarkdown\relax \let\stopmarkdown\relax \let\inputmarkdown\relax \ExplSyntaxOn \cs_new:Nn \__markdown_setup:n { \keys_set:nn { markdown/context-options } { #1 } } \long\def\setupmarkdown[#1] { \__markdown_setup:n { #1 } } \ExplSyntaxOff \ExplSyntaxOn \cs_new:Nn \__markdown_context_define_option_commands_and_keyvals: { \seq_map_inline:Nn \g__markdown_option_layers_seq { \seq_map_inline:cn { g__markdown_ ##1 _options_seq } { \__markdown_with_various_cases:nn { ####1 } { \__markdown_context_define_option_keyval:nnn { ##1 } { ####1 } { ########1 } } } } } \cs_new:Nn \__markdown_caseless:N { \regex_replace_all:nnN { ([a-z])([A-Z]) } { \1 \c { str_lowercase:n } \cB\{ \2 \cE\} } #1 \tl_set:Nx #1 { #1 } } \seq_gput_right:Nn \g__markdown_cases_seq { __markdown_caseless:N } \cs_new:Nn \__markdown_context_define_option_keyval:nnn { \prop_get:cnN { g__markdown_ #1 _option_types_prop } { #2 } \l_tmpa_tl \keys_define:nn { markdown/context-options } { #3 .code:n = { \tl_set:Nx \l_tmpa_tl { \str_case:nnF { ##1 } { { yes } { true } { no } { false } } { ##1 } } \__markdown_set_option_value:nV { #2 } \l_tmpa_tl }, } \str_if_eq:VVT \l_tmpa_tl \c__markdown_option_type_boolean_tl { \keys_define:nn { markdown/context-options } { #3 .default:n = { true }, } } } \cs_generate_variant:Nn \__markdown_set_option_value:nn { nV } \__markdown_context_define_option_commands_and_keyvals: \ExplSyntaxOff \def\markdownMakeOther{% \count0=128\relax \loop \catcode\count0=11\relax \advance\count0 by 1\relax \ifnum\count0<256\repeat \catcode`|=12}% \long\def\inputmarkdown{% \dosingleempty \doinputmarkdown}% \long\def\doinputmarkdown[#1]#2{% \begingroup \iffirstargument \setupmarkdown{#1}% \fi \markdownInput{#2}% \endgroup}% \ifx\startluacode\undefined % MkII \begingroup \catcode`\|=0% \catcode`\\=12% |gdef|startmarkdown{% |markdownReadAndConvert{\stopmarkdown}% {|stopmarkdown}}% |gdef|stopmarkdown{% |markdownEnd}% |endgroup \else % MkIV \startluacode document.markdown_buffering = false local function preserve_trailing_spaces(line) if document.markdown_buffering then line = line:gsub("[ \t][ \t]$", "\t\t") end return line end resolvers.installinputlinehandler(preserve_trailing_spaces) \stopluacode \begingroup \catcode`\|=0% \catcode`\\=12% |gdef|startmarkdown{% |ctxlua{document.markdown_buffering = true}% |markdownReadAndConvert{\stopmarkdown}% {|stopmarkdown}}% |gdef|stopmarkdown{% |ctxlua{document.markdown_buffering = false}% |markdownEnd}% |endgroup \fi \def\markdownRendererLineBreakPrototype{\blank}% \def\markdownRendererLeftBracePrototype{\textbraceleft}% \def\markdownRendererRightBracePrototype{\textbraceright}% \def\markdownRendererDollarSignPrototype{\textdollar}% \def\markdownRendererPercentSignPrototype{\percent}% \def\markdownRendererUnderscorePrototype{\textunderscore}% \def\markdownRendererCircumflexPrototype{\textcircumflex}% \def\markdownRendererBackslashPrototype{\textbackslash}% \def\markdownRendererTildePrototype{\textasciitilde}% \def\markdownRendererPipePrototype{\char`|}% \def\markdownRendererLinkPrototype#1#2#3#4{% \useURL[#1][#3][][#4]#1\footnote[#1]{\ifx\empty#4\empty\else#4: \fi\tt<\hyphenatedurl{#3}>}}% \usemodule[database] \defineseparatedlist [MarkdownConTeXtCSV] [separator={,}, before=\bTABLE,after=\eTABLE, first=\bTR,last=\eTR, left=\bTD,right=\eTD] \def\markdownConTeXtCSV{csv} \def\markdownRendererContentBlockPrototype#1#2#3#4{% \def\markdownConTeXtCSV@arg{#1}% \ifx\markdownConTeXtCSV@arg\markdownConTeXtCSV \placetable[][tab:#1]{#4}{% \processseparatedfile[MarkdownConTeXtCSV][#3]}% \else \markdownInput{#3}% \fi}% \def\markdownRendererImagePrototype#1#2#3#4{% \placefigure[][]{#4}{\externalfigure[#3]}}% \def\markdownRendererUlBeginPrototype{\startitemize}% \def\markdownRendererUlBeginTightPrototype{\startitemize[packed]}% \def\markdownRendererUlItemPrototype{\item}% \def\markdownRendererUlEndPrototype{\stopitemize}% \def\markdownRendererUlEndTightPrototype{\stopitemize}% \def\markdownRendererOlBeginPrototype{\startitemize[n]}% \def\markdownRendererOlBeginTightPrototype{\startitemize[packed,n]}% \def\markdownRendererOlItemPrototype{\item}% \def\markdownRendererOlItemWithNumberPrototype#1{\sym{#1.}}% \def\markdownRendererOlEndPrototype{\stopitemize}% \def\markdownRendererOlEndTightPrototype{\stopitemize}% \definedescription [MarkdownConTeXtDlItemPrototype] [location=hanging, margin=standard, headstyle=bold]% \definestartstop [MarkdownConTeXtDlPrototype] [before=\blank, after=\blank]% \definestartstop [MarkdownConTeXtDlTightPrototype] [before=\blank\startpacked, after=\stoppacked\blank]% \def\markdownRendererDlBeginPrototype{% \startMarkdownConTeXtDlPrototype}% \def\markdownRendererDlBeginTightPrototype{% \startMarkdownConTeXtDlTightPrototype}% \def\markdownRendererDlItemPrototype#1{% \startMarkdownConTeXtDlItemPrototype{#1}}% \def\markdownRendererDlItemEndPrototype{% \stopMarkdownConTeXtDlItemPrototype}% \def\markdownRendererDlEndPrototype{% \stopMarkdownConTeXtDlPrototype}% \def\markdownRendererDlEndTightPrototype{% \stopMarkdownConTeXtDlTightPrototype}% \def\markdownRendererEmphasisPrototype#1{{\em#1}}% \def\markdownRendererStrongEmphasisPrototype#1{{\bf#1}}% \def\markdownRendererBlockQuoteBeginPrototype{\startquotation}% \def\markdownRendererBlockQuoteEndPrototype{\stopquotation}% \def\markdownRendererInputVerbatimPrototype#1{\typefile{#1}}% \def\markdownRendererInputFencedCodePrototype#1#2{% \ifx\relax#2\relax \typefile{#1}% \else \typefile[#2][]{#1}% \fi}% \def\markdownRendererHeadingOnePrototype#1{\chapter{#1}}% \def\markdownRendererHeadingTwoPrototype#1{\section{#1}}% \def\markdownRendererHeadingThreePrototype#1{\subsection{#1}}% \def\markdownRendererHeadingFourPrototype#1{\subsubsection{#1}}% \def\markdownRendererHeadingFivePrototype#1{\subsubsubsection{#1}}% \def\markdownRendererHeadingSixPrototype#1{\subsubsubsubsection{#1}}% \def\markdownRendererThematicBreakPrototype{% \blackrule[height=1pt, width=\hsize]}% \def\markdownRendererNotePrototype#1{\footnote{#1}}% \def\markdownRendererTickedBoxPrototype{$\boxtimes$} \def\markdownRendererHalfTickedBoxPrototype{$\boxdot$} \def\markdownRendererUntickedBoxPrototype{$\square$} \def\markdownRendererStrikeThroughPrototype#1{\overstrikes{#1}} \def\markdownRendererSuperscriptPrototype#1{\high{#1}} \def\markdownRendererSubscriptPrototype#1{\low{#1}} \newcount\markdownConTeXtRowCounter \newcount\markdownConTeXtRowTotal \newcount\markdownConTeXtColumnCounter \newcount\markdownConTeXtColumnTotal \newtoks\markdownConTeXtTable \newtoks\markdownConTeXtTableFloat \def\markdownRendererTablePrototype#1#2#3{% \markdownConTeXtTable={}% \ifx\empty#1\empty \markdownConTeXtTableFloat={% \the\markdownConTeXtTable}% \else \markdownConTeXtTableFloat={% \placetable{#1}{\the\markdownConTeXtTable}}% \fi \begingroup \setupTABLE[r][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off] \setupTABLE[c][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off] \setupTABLE[r][1][topframe=on, bottomframe=on] \setupTABLE[r][#1][bottomframe=on] \markdownConTeXtRowCounter=0% \markdownConTeXtRowTotal=#2% \markdownConTeXtColumnTotal=#3% \markdownConTeXtRenderTableRow} \def\markdownConTeXtRenderTableRow#1{% \markdownConTeXtColumnCounter=0% \ifnum\markdownConTeXtRowCounter=0\relax \markdownConTeXtReadAlignments#1% \markdownConTeXtTable={\bTABLE}% \else \markdownConTeXtTable=\expandafter{% \the\markdownConTeXtTable\bTR}% \markdownConTeXtRenderTableCell#1% \markdownConTeXtTable=\expandafter{% \the\markdownConTeXtTable\eTR}% \fi \advance\markdownConTeXtRowCounter by 1\relax \ifnum\markdownConTeXtRowCounter>\markdownConTeXtRowTotal\relax \markdownConTeXtTable=\expandafter{% \the\markdownConTeXtTable\eTABLE}% \the\markdownConTeXtTableFloat \endgroup \expandafter\gobbleoneargument \fi\markdownConTeXtRenderTableRow} \def\markdownConTeXtReadAlignments#1{% \advance\markdownConTeXtColumnCounter by 1\relax \if#1d% \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=right] \fi\if#1l% \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=right] \fi\if#1c% \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=middle] \fi\if#1r% \setupTABLE[c][\the\markdownConTeXtColumnCounter][align=left] \fi \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else \expandafter\gobbleoneargument \fi\markdownConTeXtReadAlignments} \def\markdownConTeXtRenderTableCell#1{% \advance\markdownConTeXtColumnCounter by 1\relax \markdownConTeXtTable=\expandafter{% \the\markdownConTeXtTable\bTD#1\eTD}% \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else \expandafter\gobbleoneargument \fi\markdownConTeXtRenderTableCell} \ExplSyntaxOn \cs_gset:Npn \markdownRendererInputRawInlinePrototype#1#2 { \str_case:nn { #2 } { { tex } { \markdownEscape{#1} } { context } { \markdownEscape{#1} } { md } { \markdownInput{#1} } } } \cs_gset_eq:NN \markdownRendererInputRawBlockPrototype \markdownRendererInputRawInlinePrototype \ExplSyntaxOff \stopmodule\protect \endinput %% %% End of file `t-markdown.tex'.