This repository has been archived on 2022-05-18. You can view files and clone it, but cannot push or open issues or pull requests.
thesis/markdown.tex
Matej Focko 585b609c4e
feat: add latest version of the thesis
Signed-off-by: Matej Focko <mfocko@redhat.com>
2022-01-23 17:02:17 +01:00

631 lines
23 KiB
TeX

%%
%% This is file `markdown.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% markdown.dtx (with options: `tex')
%%
%% Copyright (C) 2016-2020 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 <witiko@mail.muni.cz>.
%%
%% MODIFICATION ADVICE:
%%
%% If you want to customize this file, it is best to make a copy of
%% the source file(s) from which it was produced. Use a different
%% name for your copy(ies) and modify the copy(ies); this will ensure
%% that your modifications do not get overwritten when you install a
%% new release of the standard system. You should also ensure that
%% your modified source file does not generate any modified file with
%% the same name as a standard file.
%%
%% You will also need to produce your own, suitably named, .ins file to
%% control the generation of files from your source file; this file
%% should contain your own preambles for the files it generates, not
%% those in the standard .ins files.
%%
%% The names of the source files used are shown above.
%%
\def\markdownLastModified{2020/09/14}%
\def\markdownVersion{2.9.0}%
\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\markdownOptionFootnotes\undefined
\let\markdownOptionFencedCode\undefined
\let\markdownOptionHashEnumerators\undefined
\let\markdownOptionHeaderAttributes\undefined
\let\markdownOptionHtml\undefined
\let\markdownOptionHybrid\undefined
\let\markdownOptionInlineFootnotes\undefined
\let\markdownOptionPipeTables\undefined
\let\markdownOptionPreserveTabs\undefined
\let\markdownOptionShiftHeadings\undefined
\let\markdownOptionSlice\undefined
\let\markdownOptionSmartEllipses\undefined
\let\markdownOptionStartNumber\undefined
\let\markdownOptionTableCaptions\undefined
\let\markdownOptionTightLists\undefined
\def\markdownOptionStripPercentSigns{false}%
\def\markdownRendererInterblockSeparator{%
\markdownRendererInterblockSeparatorPrototype}%
\def\markdownRendererLineBreak{%
\markdownRendererLineBreakPrototype}%
\def\markdownRendererEllipsis{%
\markdownRendererEllipsisPrototype}%
\def\markdownRendererNbsp{%
\markdownRendererNbspPrototype}%
\def\markdownRendererLeftBrace{%
\markdownRendererLeftBracePrototype}%
\def\markdownRendererRightBrace{%
\markdownRendererRightBracePrototype}%
\def\markdownRendererDollarSign{%
\markdownRendererDollarSignPrototype}%
\def\markdownRendererPercentSign{%
\markdownRendererPercentSignPrototype}%
\def\markdownRendererAmpersand{%
\markdownRendererAmpersandPrototype}%
\def\markdownRendererUnderscore{%
\markdownRendererUnderscorePrototype}%
\def\markdownRendererHash{%
\markdownRendererHashPrototype}%
\def\markdownRendererCircumflex{%
\markdownRendererCircumflexPrototype}%
\def\markdownRendererBackslash{%
\markdownRendererBackslashPrototype}%
\def\markdownRendererTilde{%
\markdownRendererTildePrototype}%
\def\markdownRendererPipe{%
\markdownRendererPipePrototype}%
\def\markdownRendererCodeSpan{%
\markdownRendererCodeSpanPrototype}%
\def\markdownRendererLink{%
\markdownRendererLinkPrototype}%
\def\markdownRendererImage{%
\markdownRendererImagePrototype}%
\def\markdownRendererContentBlock{%
\markdownRendererContentBlockPrototype}%
\def\markdownRendererContentBlockOnlineImage{%
\markdownRendererContentBlockOnlineImagePrototype}%
\def\markdownRendererContentBlockCode{%
\markdownRendererContentBlockCodePrototype}%
\def\markdownRendererUlBegin{%
\markdownRendererUlBeginPrototype}%
\def\markdownRendererUlBeginTight{%
\markdownRendererUlBeginTightPrototype}%
\def\markdownRendererUlItem{%
\markdownRendererUlItemPrototype}%
\def\markdownRendererUlItemEnd{%
\markdownRendererUlItemEndPrototype}%
\def\markdownRendererUlEnd{%
\markdownRendererUlEndPrototype}%
\def\markdownRendererUlEndTight{%
\markdownRendererUlEndTightPrototype}%
\def\markdownRendererOlBegin{%
\markdownRendererOlBeginPrototype}%
\def\markdownRendererOlBeginTight{%
\markdownRendererOlBeginTightPrototype}%
\def\markdownRendererOlItem{%
\markdownRendererOlItemPrototype}%
\def\markdownRendererOlItemEnd{%
\markdownRendererOlItemEndPrototype}%
\def\markdownRendererOlItemWithNumber{%
\markdownRendererOlItemWithNumberPrototype}%
\def\markdownRendererOlEnd{%
\markdownRendererOlEndPrototype}%
\def\markdownRendererOlEndTight{%
\markdownRendererOlEndTightPrototype}%
\def\markdownRendererDlBegin{%
\markdownRendererDlBeginPrototype}%
\def\markdownRendererDlBeginTight{%
\markdownRendererDlBeginTightPrototype}%
\def\markdownRendererDlItem{%
\markdownRendererDlItemPrototype}%
\def\markdownRendererDlItemEnd{%
\markdownRendererDlItemEndPrototype}%
\def\markdownRendererDlDefinitionBegin{%
\markdownRendererDlDefinitionBeginPrototype}%
\def\markdownRendererDlDefinitionEnd{%
\markdownRendererDlDefinitionEndPrototype}%
\def\markdownRendererDlEnd{%
\markdownRendererDlEndPrototype}%
\def\markdownRendererDlEndTight{%
\markdownRendererDlEndTightPrototype}%
\def\markdownRendererEmphasis{%
\markdownRendererEmphasisPrototype}%
\def\markdownRendererStrongEmphasis{%
\markdownRendererStrongEmphasisPrototype}%
\def\markdownRendererBlockQuoteBegin{%
\markdownRendererBlockQuoteBeginPrototype}%
\def\markdownRendererBlockQuoteEnd{%
\markdownRendererBlockQuoteEndPrototype}%
\def\markdownRendererInputVerbatim{%
\markdownRendererInputVerbatimPrototype}%
\def\markdownRendererInputFencedCode{%
\markdownRendererInputFencedCodePrototype}%
\def\markdownRendererHeadingOne{%
\markdownRendererHeadingOnePrototype}%
\def\markdownRendererHeadingTwo{%
\markdownRendererHeadingTwoPrototype}%
\def\markdownRendererHeadingThree{%
\markdownRendererHeadingThreePrototype}%
\def\markdownRendererHeadingFour{%
\markdownRendererHeadingFourPrototype}%
\def\markdownRendererHeadingFive{%
\markdownRendererHeadingFivePrototype}%
\def\markdownRendererHeadingSix{%
\markdownRendererHeadingSixPrototype}%
\def\markdownRendererHorizontalRule{%
\markdownRendererHorizontalRulePrototype}%
\def\markdownRendererFootnote{%
\markdownRendererFootnotePrototype}%
\def\markdownRendererCite{%
\markdownRendererCitePrototype}%
\def\markdownRendererTextCite{%
\markdownRendererTextCitePrototype}%
\def\markdownRendererTable{%
\markdownRendererTablePrototype}%
\def\markdownRendererInterblockSeparatorPrototype{}%
\def\markdownRendererLineBreakPrototype{}%
\def\markdownRendererEllipsisPrototype{}%
\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\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\markdownInfo#1{}%
\def\markdownWarning#1{}%
\def\markdownError#1#2{}%
\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}%
\def\markdownInfo#1{%
\immediate\write-1{(l.\the\inputlineno) markdown.tex info: #1.}}%
\def\markdownWarning#1{%
\immediate\write16{(l.\the\inputlineno) markdown.tex warning: #1}}%
\def\markdownError#1#2{%
\errhelp{#2.}%
\errmessage{(l.\the\inputlineno) markdown.tex error: #1}}%
\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\markdownLuaOptions{{%
\ifx\markdownOptionBlankBeforeBlockquote\undefined\else
blankBeforeBlockquote = \markdownOptionBlankBeforeBlockquote,
\fi
\ifx\markdownOptionBlankBeforeCodeFence\undefined\else
blankBeforeCodeFence = \markdownOptionBlankBeforeCodeFence,
\fi
\ifx\markdownOptionBlankBeforeHeading\undefined\else
blankBeforeHeading = \markdownOptionBlankBeforeHeading,
\fi
\ifx\markdownOptionBreakableBlockquotes\undefined\else
breakableBlockquotes = \markdownOptionBreakableBlockquotes,
\fi
cacheDir = "\markdownOptionCacheDir",
\ifx\markdownOptionCitations\undefined\else
citations = \markdownOptionCitations,
\fi
\ifx\markdownOptionCitationNbsps\undefined\else
citationNbsps = \markdownOptionCitationNbsps,
\fi
\ifx\markdownOptionCodeSpans\undefined\else
codeSpans = \markdownOptionCodeSpans,
\fi
\ifx\markdownOptionContentBlocks\undefined\else
contentBlocks = \markdownOptionContentBlocks,
\fi
\ifx\markdownOptionContentBlocksLanguageMap\undefined\else
contentBlocksLanguageMap =
"\markdownOptionContentBlocksLanguageMap",
\fi
\ifx\markdownOptionDefinitionLists\undefined\else
definitionLists = \markdownOptionDefinitionLists,
\fi
\ifx\markdownOptionFinalizeCache\undefined\else
finalizeCache = \markdownOptionFinalizeCache,
\fi
frozenCacheFileName = "\markdownOptionFrozenCacheFileName",
frozenCacheCounter = \the\markdownFrozenCacheCounter,
\ifx\markdownOptionFootnotes\undefined\else
footnotes = \markdownOptionFootnotes,
\fi
\ifx\markdownOptionFencedCode\undefined\else
fencedCode = \markdownOptionFencedCode,
\fi
\ifx\markdownOptionHashEnumerators\undefined\else
hashEnumerators = \markdownOptionHashEnumerators,
\fi
\ifx\markdownOptionHeaderAttributes\undefined\else
headerAttributes = \markdownOptionHeaderAttributes,
\fi
\ifx\markdownOptionHtml\undefined\else
html = \markdownOptionHtml,
\fi
\ifx\markdownOptionHybrid\undefined\else
hybrid = \markdownOptionHybrid,
\fi
\ifx\markdownOptionInlineFootnotes\undefined\else
inlineFootnotes = \markdownOptionInlineFootnotes,
\fi
\ifx\markdownOptionPipeTables\undefined\else
pipeTables = \markdownOptionPipeTables,
\fi
\ifx\markdownOptionPreserveTabs\undefined\else
preserveTabs = \markdownOptionPreserveTabs,
\fi
\ifx\markdownOptionShiftHeadings\undefined\else
shiftHeadings = "\markdownOptionShiftHeadings",
\fi
\ifx\markdownOptionSlice\undefined\else
slice = "\markdownOptionSlice",
\fi
\ifx\markdownOptionSmartEllipses\undefined\else
smartEllipses = \markdownOptionSmartEllipses,
\fi
\ifx\markdownOptionStartNumber\undefined\else
startNumber = \markdownOptionStartNumber,
\fi
\ifx\markdownOptionTableCaptions\undefined\else
tableCaptions = \markdownOptionTableCaptions,
\fi
\ifx\markdownOptionTightLists\undefined\else
tightLists = \markdownOptionTightLists,
\fi
\ifx\markdownOptionUnderscores\undefined\else
underscores = \markdownOptionUnderscores,
\fi}
}%
\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)
}%
\def\markdownIfOption#1#2#3{%
\begingroup
\def\next{true}%
\expandafter\ifx\csname markdownOption#1\endcsname\next
\endgroup#2\else\endgroup#3\fi}%
\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 kpse = require("kpse")
kpse.set_program_name("luatex")
#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}%
\def\markdownLuaExecute#1{\directlua{local print = tex.print #1}}%
\fi
\begingroup
\catcode`|=0%
\catcode`\\=12%
|gdef|markdownInput#1{%
|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
|advance|markdownFrozenCacheCounter by 1|relax
}{%
|markdownInfo{Including markdown document "#1"}%
|openin|markdownInputFileStream#1
|closein|markdownInputFileStream
|markdownLuaExecute{%
|markdownPrepare
local file = assert(io.open("#1", "r"))
local input = assert(file:read("*a"))
assert(file:close())
print(convert(input:gsub("\r\n?", "\n") .. "\n"))}%
|markdownIfOption{FinalizeCache}{%
|advance|markdownFrozenCacheCounter by 1|relax
}%
}%
}%
|endgroup
\endinput
%%
%% End of file `markdown.tex'.