summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/context/third/markdown/t-markdown.tex41
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex31
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdown.sty17
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown.lua46
4 files changed, 110 insertions, 25 deletions
diff --git a/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex b/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
index dfacdc95285..f92f89dda62 100644
--- a/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
+++ b/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
@@ -62,14 +62,39 @@
\advance\count0 by 1\relax
\ifnum\count0<256\repeat
\catcode`|=12}%
-\begingroup
- \catcode`\|=0%
- \catcode`\\=12%
- |gdef|startmarkdown{%
- |markdownReadAndConvert{\stopmarkdown}%
- {|stopmarkdown}}%
- |gdef|stopmarkdown{|markdownEnd}%
-|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}%
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 5e87d94a0e3..a9568c2ad7b 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdown.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex
@@ -45,8 +45,8 @@
%%
%% The names of the source files used are shown above.
%%
-\def\markdownLastModified{2021/09/26}%
-\def\markdownVersion{2.11.0-0-g4505824}%
+\def\markdownLastModified{2021/12/30}%
+\def\markdownVersion{2.12.0-1-g976f074}%
\let\markdownBegin\relax
\let\markdownEnd\relax
\let\markdownInput\relax
@@ -67,8 +67,10 @@
\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
@@ -199,6 +201,8 @@
\markdownRendererJekyllDataMappingEndPrototype}%
\def\markdownRendererJekyllDataSequenceBegin{%
\markdownRendererJekyllDataSequenceBeginPrototype}%
+\def\markdownRendererJekyllDataSequenceEnd{%
+ \markdownRendererJekyllDataSequenceEndPrototype}%
\def\markdownRendererJekyllDataBoolean{%
\markdownRendererJekyllDataBooleanPrototype}%
\def\markdownRendererJekyllDataNumber{%
@@ -434,6 +438,9 @@
\ifx\markdownOptionDefinitionLists\undefined\else
definitionLists = \markdownOptionDefinitionLists,
\fi
+\ifx\markdownOptionEagerCache\undefined\else
+ eagerCache = \markdownOptionEagerCache,
+\fi
\ifx\markdownOptionFinalizeCache\undefined\else
finalizeCache = \markdownOptionFinalizeCache,
\fi
@@ -445,6 +452,9 @@
\ifx\markdownOptionFencedCode\undefined\else
fencedCode = \markdownOptionFencedCode,
\fi
+\ifx\markdownOptionHardLineBreaks\undefined\else
+ hardLineBreaks = \markdownOptionHardLineBreaks,
+\fi
\ifx\markdownOptionHashEnumerators\undefined\else
hashEnumerators = \markdownOptionHashEnumerators,
\fi
@@ -656,7 +666,22 @@
|endgroup
\else
\markdownInfo{Using mode 2: Direct Lua access}%
-\def\markdownLuaExecute#1{\directlua{local print = tex.print #1}}%
+\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%
diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty
index 1c54f4848cb..b1d229209ae 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdown.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdown.sty
@@ -134,12 +134,16 @@
\def\markdownOptionContentBlocksLanguageMap{#1}}%
\define@key{markdownOptions}{definitionLists}[true]{%
\def\markdownOptionDefinitionLists{#1}}%
+\define@key{markdownOptions}{eagerCache}[true]{%
+ \def\markdownOptionEagerCache{#1}}%
\define@key{markdownOptions}{footnotes}[true]{%
\def\markdownOptionFootnotes{#1}}%
\define@key{markdownOptions}{fencedCode}[true]{%
\def\markdownOptionFencedCode{#1}}%
\define@key{markdownOptions}{jekyllData}[true]{%
\def\markdownOptionJekyllData{#1}}%
+\define@key{markdownOptions}{hardLineBreaks}[true]{%
+ \def\markdownOptionHardLineBreaks{#1}}%
\define@key{markdownOptions}{hashEnumerators}[true]{%
\def\markdownOptionHashEnumerators{#1}}%
\define@key{markdownOptions}{headerAttributes}[true]{%
@@ -563,8 +567,17 @@
\ifx\empty#4\empty\else
\caption{#4}%
\fi
- \end{table}}{%
- \markdownInput{#3}}},
+ \end{table}%
+ }{%
+ \ifthenelse{\equal{#1}{tex}}{%
+ \catcode`\%=14\relax
+ \input #3\relax
+ \catcode`\%=12\relax
+ }{%
+ \markdownInput{#3}%
+ }%
+ }%
+ },
image = {%
\begin{figure}%
\begin{center}%
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
index eb68cc175d5..4241d6cc3b9 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
@@ -58,7 +58,7 @@
-- those in the standard .ins files.
--
local metadata = {
- version = "2.11.0-0-g4505824",
+ version = "2.12.0-1-g976f074",
comment = "A module for the conversion from markdown to plain TeX",
author = "John MacFarlane, Hans Hagen, Vít Novotný",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
@@ -88,10 +88,12 @@ defaultOptions.codeSpans = true
defaultOptions.contentBlocks = false
defaultOptions.contentBlocksLanguageMap = "markdown-languages.json"
defaultOptions.definitionLists = false
+defaultOptions.eagerCache = true
defaultOptions.fencedCode = false
defaultOptions.finalizeCache = false
defaultOptions.footnotes = false
defaultOptions.frozenCacheCounter = 0
+defaultOptions.hardLineBreaks = false
defaultOptions.hashEnumerators = false
defaultOptions.headerAttributes = false
defaultOptions.html = false
@@ -2335,7 +2337,7 @@ function M.writer.new(options)
return s
end
function self.pack(name)
- return [[\input ]] .. name .. [[\relax{}]]
+ return [[\input ]] .. name .. [[\relax]]
end
function self.interblocksep()
if not self.is_writing then return "" end
@@ -3762,15 +3764,22 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline
+ larsers.bqstart
+ larsers.headerstart
+ larsers.fencestart
- ) * parsers.spacechar^0 / writer.space
+ ) * parsers.spacechar^0
+ / (options.hardLineBreaks and writer.linebreak
+ or writer.space)
larsers.OptionalIndent
= parsers.spacechar^1 / writer.space
larsers.Space = parsers.spacechar^2 * larsers.Endline / writer.linebreak
+ parsers.spacechar^1 * larsers.Endline^-1 * parsers.eof / ""
- + parsers.spacechar^1 * larsers.Endline^-1
- * parsers.optionalspace / writer.space
+ + parsers.spacechar^1 * larsers.Endline
+ * parsers.optionalspace
+ / (options.hardLineBreaks
+ and writer.linebreak
+ or writer.space)
+ + parsers.spacechar^1 * parsers.optionalspace
+ / writer.space
larsers.NonbreakingEndline
= parsers.newline * -( -- newline, but not before...
@@ -3780,13 +3789,20 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline
+ larsers.bqstart
+ larsers.headerstart
+ larsers.fencestart
- ) * parsers.spacechar^0 / writer.nbsp
+ ) * parsers.spacechar^0
+ / (options.hardLineBreaks and writer.linebreak
+ or writer.nbsp)
larsers.NonbreakingSpace
= parsers.spacechar^2 * larsers.Endline / writer.linebreak
+ parsers.spacechar^1 * larsers.Endline^-1 * parsers.eof / ""
- + parsers.spacechar^1 * larsers.Endline^-1
- * parsers.optionalspace / writer.nbsp
+ + parsers.spacechar^1 * larsers.Endline
+ * parsers.optionalspace
+ / (options.hardLineBreaks
+ and writer.linebreak
+ or writer.nbsp)
+ + parsers.spacechar^1 * parsers.optionalspace
+ / writer.nbsp
if options.underscores then
larsers.Strong = ( parsers.between(parsers.Inline, parsers.doubleasterisks,
@@ -4299,10 +4315,16 @@ larsers.PipeTable = Ct(larsers.table_row * parsers.newline
end
table.sort(opt_string)
local salt = table.concat(opt_string, ",") .. "," .. metadata.version
- local name = util.cache(options.cacheDir, input, salt, function(input)
- return util.rope_to_string(parse_blocks_toplevel(input)) .. writer.eof
- end, ".md" .. writer.suffix)
- local output = writer.pack(name)
+ local output
+ local function convert(input)
+ return util.rope_to_string(parse_blocks_toplevel(input)) .. writer.eof
+ end
+ if options.eagerCache or options.finalizeCache then
+ local name = util.cache(options.cacheDir, input, salt, convert, ".md" .. writer.suffix)
+ output = writer.pack(name)
+ else
+ output = convert(input)
+ end
if options.finalizeCache then
local file, mode
if options.frozenCacheCounter > 0 then