summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-04-30 20:02:14 +0000
committerKarl Berry <karl@freefriends.org>2024-04-30 20:02:14 +0000
commitca30fcf4913c32febbfb97abd72219b3e69501e4 (patch)
tree9ddee84f9374f5462ee9b54a3713d062db6885e8 /Master/texmf-dist/tex
parentb3669c79c87b055df515bf320be2a78fb0baf956 (diff)
markdown (30apr24)
git-svn-id: svn://tug.org/texlive/trunk@71137 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex381
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdown.sty20
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty83
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown.lua10
4 files changed, 363 insertions, 131 deletions
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 22eb36e4fba..6616a6ec98f 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdown.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex
@@ -572,10 +572,11 @@
{ boolean }
{ true }
\ExplSyntaxOff
-\def\markdownLastModified{2024-04-04}%
-\def\markdownVersion{3.4.3-0-ge2c6be1a}%
+\def\markdownLastModified{2024-04-29}%
+\def\markdownVersion{3.5.0-0-gfd01a252}%
\let\markdownBegin\relax
\let\markdownEnd\relax
+\let\markinline\relax
\let\markdownInput\relax
\let\markdownEscape\relax
\ExplSyntaxOn
@@ -2505,6 +2506,8 @@
}
\tl_new:N
\l__markdown_renderer_definition_tl
+\bool_new:N
+ \g__markdown_appending_renderer_bool
\cs_new:Nn \__markdown_define_renderer:nNn
{
\keys_define:nn
@@ -2518,6 +2521,17 @@
{ \cP\#0 }
{ #1 }
\l__markdown_renderer_definition_tl
+ \bool_if:NT
+ \g__markdown_appending_renderer_bool
+ {
+ \__markdown_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ #2
+ { #3 }
+ \tl_put_left:NV
+ \l__markdown_renderer_definition_tl
+ \l_tmpa_tl
+ }
\cs_generate_from_arg_count:NNnV
#2
\cs_set:Npn
@@ -2526,12 +2540,49 @@
},
}
}
+\cs_new_protected:Nn
+ \__markdown_tl_set_from_cs:NNn
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #2 }
+ \int_step_inline:nn
+ { #3 }
+ {
+ \exp_args:NNc
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { __markdown_tl_set_from_cs_parameter_ ##1 }
+ }
+ \exp_args:NNV
+ \tl_set:No
+ \l_tmpb_tl
+ \l_tmpa_tl
+ \regex_replace_all:nnN
+ { \cP. }
+ { \0\0 }
+ \l_tmpb_tl
+ \int_step_inline:nn
+ { #3 }
+ {
+ \regex_replace_all:nnN
+ { \c { __markdown_tl_set_from_cs_parameter_ ##1 } }
+ { \cP\# ##1 }
+ \l_tmpb_tl
+ }
+ \tl_set:NV
+ #1
+ \l_tmpb_tl
+ }
\cs_generate_variant:Nn
\__markdown_define_renderer:nNn
{ ncV }
\cs_generate_variant:Nn
\cs_generate_from_arg_count:NNnn
{ NNnV }
+\cs_generate_variant:Nn
+ \tl_put_left:Nn
+ { Nv }
\keys_define:nn
{ markdown/options }
{
@@ -2541,6 +2592,95 @@
{ #1 }
},
}
+\tl_new:N
+ \l__markdown_renderer_glob_definition_tl
+\seq_new:N
+ \l__markdown_renderer_glob_results_seq
+\regex_const:Nn
+ \c__markdown_appending_key_regex
+ { \s*+$ }
+\keys_define:nn
+ { markdown/options/renderers }
+ {
+ unknown .code:n = {
+ \regex_match:NVTF
+ \c__markdown_appending_key_regex
+ \l_keys_key_str
+ {
+ \bool_gset_true:N
+ \g__markdown_appending_renderer_bool
+ \tl_set:NV
+ \l_tmpa_tl
+ \l_keys_key_str
+ \regex_replace_once:NnN
+ \c__markdown_appending_key_regex
+ { }
+ \l_tmpa_tl
+ \tl_set:Nx
+ \l_tmpb_tl
+ { { \l_tmpa_tl } = }
+ \tl_put_right:Nn
+ \l_tmpb_tl
+ { { #1 } }
+ \keys_set:nV
+ { markdown/options/renderers }
+ \l_tmpb_tl
+ \bool_gset_false:N
+ \g__markdown_appending_renderer_bool
+ }
+ {
+ \__markdown_glob_seq:VnN
+ \l_keys_key_str
+ { g__markdown_renderers_seq }
+ \l__markdown_renderer_glob_results_seq
+ \seq_if_empty:NTF
+ \l__markdown_renderer_glob_results_seq
+ {
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer }
+ \l_keys_key_str
+ }
+ {
+ \tl_set:Nn
+ \l__markdown_renderer_glob_definition_tl
+ { \exp_not:n { #1 } }
+ \seq_map_inline:Nn
+ \l__markdown_renderer_glob_results_seq
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { { ##1 } = }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { { \l__markdown_renderer_glob_definition_tl } }
+ \keys_set:nV
+ { markdown/options/renderers }
+ \l_tmpa_tl
+ }
+ }
+ }
+ },
+ }
+\msg_new:nnn
+ { markdown }
+ { undefined-renderer }
+ {
+ Renderer~#1~is~undefined.
+ }
+\cs_generate_variant:Nn
+ \__markdown_glob_seq:nnN
+ { VnN }
+\cs_generate_variant:Nn
+ \cs_generate_from_arg_count:NNnn
+ { cNVV }
+\cs_generate_variant:Nn
+ \msg_error:nnn
+ { nnV }
+\prg_generate_conditional_variant:Nnn
+ \regex_match:Nn
+ { NV }
+ { TF }
\prop_new:N
\g__markdown_glob_cache_prop
\tl_new:N
@@ -2601,72 +2741,6 @@
\cs_generate_variant:Nn
\prop_gput:Nnn
{ NeV }
-\seq_new:N
- \l__markdown_renderer_glob_results_seq
-\keys_define:nn
- { markdown/options/renderers }
- {
- unknown .code:n = {
- \__markdown_glob_seq:VnN
- \l_keys_key_str
- { g__markdown_renderers_seq }
- \l__markdown_renderer_glob_results_seq
- \seq_if_empty:NTF
- \l__markdown_renderer_glob_results_seq
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer }
- \l_keys_key_str
- }
- {
- \tl_set:Nn
- \l__markdown_renderer_definition_tl
- { #1 }
- \seq_map_inline:Nn
- \l__markdown_renderer_glob_results_seq
- {
- \__markdown_renderer_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \int_set:Nn
- \l_tmpa_int
- \l_tmpb_tl
- \tl_set:NV
- \l_tmpb_tl
- \l__markdown_renderer_definition_tl
- \regex_replace_all:nnN
- { \cP\#0 }
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpa_int
- \l_tmpb_tl
- }
- }
- },
- }
-\msg_new:nnn
- { markdown }
- { undefined-renderer }
- {
- Renderer~#1~is~undefined.
- }
-\cs_generate_variant:Nn
- \__markdown_glob_seq:nnN
- { VnN }
-\cs_generate_variant:Nn
- \cs_generate_from_arg_count:NNnn
- { cNVV }
-\cs_generate_variant:Nn
- \msg_error:nnn
- { nnV }
\str_if_eq:VVT
\c__markdown_top_layer_tl
\c__markdown_option_layer_plain_tex_tl
@@ -2756,6 +2830,8 @@
}
\tl_new:N
\l__markdown_renderer_prototype_definition_tl
+\bool_new:N
+ \g__markdown_appending_renderer_prototype_bool
\cs_new:Nn \__markdown_define_renderer_prototype:nNn
{
\keys_define:nn
@@ -2769,6 +2845,17 @@
{ \cP\#0 }
{ #1 }
\l__markdown_renderer_prototype_definition_tl
+ \bool_if:NT
+ \g__markdown_appending_renderer_prototype_bool
+ {
+ \__markdown_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ #2
+ { #3 }
+ \tl_put_left:NV
+ \l__markdown_renderer_prototype_definition_tl
+ \l_tmpa_tl
+ }
\cs_generate_from_arg_count:NNnV
#2
\cs_set:Npn
@@ -2789,53 +2876,65 @@
\cs_generate_variant:Nn
\__markdown_define_renderer_prototype:nNn
{ ncV }
-\seq_new:N
- \l__markdown_renderer_prototype_glob_results_seq
\keys_define:nn
{ markdown/options/renderer-prototypes }
{
unknown .code:n = {
- \__markdown_glob_seq:VnN
+ \regex_match:NVTF
+ \c__markdown_appending_key_regex
\l_keys_key_str
- { g__markdown_renderers_seq }
- \l__markdown_renderer_prototype_glob_results_seq
- \seq_if_empty:NTF
- \l__markdown_renderer_prototype_glob_results_seq
{
- \msg_error:nnV
- { markdown }
- { undefined-renderer-prototype }
+ \bool_gset_true:N
+ \g__markdown_appending_renderer_prototype_bool
+ \tl_set:NV
+ \l_tmpa_tl
\l_keys_key_str
+ \regex_replace_once:NnN
+ \c__markdown_appending_key_regex
+ { }
+ \l_tmpa_tl
+ \tl_set:Nx
+ \l_tmpb_tl
+ { { \l_tmpa_tl } = }
+ \tl_put_right:Nn
+ \l_tmpb_tl
+ { { #1 } }
+ \keys_set:nV
+ { markdown/options/renderer-prototypes }
+ \l_tmpb_tl
+ \bool_gset_false:N
+ \g__markdown_appending_renderer_prototype_bool
}
{
- \tl_set:Nn
- \l__markdown_renderer_prototype_definition_tl
- { #1 }
- \seq_map_inline:Nn
- \l__markdown_renderer_prototype_glob_results_seq
+ \__markdown_glob_seq:VnN
+ \l_keys_key_str
+ { g__markdown_renderers_seq }
+ \l__markdown_renderer_glob_results_seq
+ \seq_if_empty:NTF
+ \l__markdown_renderer_glob_results_seq
{
- \__markdown_renderer_prototype_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \int_set:Nn
- \l_tmpa_int
- \l_tmpb_tl
- \tl_set:NV
- \l_tmpb_tl
- \l__markdown_renderer_prototype_definition_tl
- \regex_replace_all:nnN
- { \cP\#0 }
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpa_int
- \l_tmpb_tl
+ \msg_error:nnV
+ { markdown }
+ { undefined-renderer-prototype }
+ \l_keys_key_str
+ }
+ {
+ \tl_set:Nn
+ \l__markdown_renderer_glob_definition_tl
+ { \exp_not:n { #1 } }
+ \seq_map_inline:Nn
+ \l__markdown_renderer_glob_results_seq
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { { ##1 } = }
+ \tl_put_right:Nx
+ \l_tmpa_tl
+ { { \l__markdown_renderer_glob_definition_tl } }
+ \keys_set:nV
+ { markdown/options/renderer-prototypes }
+ \l_tmpa_tl
+ }
}
}
},
@@ -3135,7 +3234,8 @@
|markdownIfOption{frozenCache}{}{@
|immediate|openout|markdownOutputFileStream@
|markdownOptionInputTempFileName|relax@
- |markdownInfo{Buffering markdown input into the temporary @
+ |markdownInfo{@
+ Buffering block-level markdown input into the temporary @
input file "|markdownOptionInputTempFileName" and scanning @
for the closing token sequence "#1"}@
}@
@@ -3234,6 +3334,75 @@
{ disabled-shell-access }
{ Shell~escape~is~disabled }
\l_tmpa_tl
+\tl_new:N
+ \g__markdown_after_markinline_tl
+\tl_gset:Nn
+ \g__markdown_after_markinline_tl
+ { \unskip }
+\cs_new:Npn
+ \markinline
+ {
+ \group_begin:
+ \cctab_select:N
+ \c_other_cctab
+ \__markdown_if_option:nF
+ { frozenCache }
+ {
+ \immediate
+ \openout
+ \markdownOutputFileStream
+ \markdownOptionInputTempFileName
+ \relax
+ \msg_info:nne
+ { markdown }
+ { buffering-markinline }
+ { \markdownOptionInputTempFileName }
+ }
+ \peek_regex_replace_once:nnF
+ { { (.*?) } }
+ {
+ \c { __markdown_if_option:nF }
+ \cB { frozenCache \cE }
+ \cB {
+ \c { immediate }
+ \c { write }
+ \c { markdownOutputFileStream }
+ \cB { \1 \cE }
+ \c { immediate }
+ \c { closeout }
+ \c { markdownOutputFileStream }
+ \cE }
+ \c { group_end: }
+ \c { group_begin: }
+ \c { __markdown_setup:n }
+ \cB { contentLevel = inline \cE }
+ \c { markdownInput }
+ \cB {
+ \c { markdownOptionOutputDir } /
+ \c { markdownOptionInputTempFileName }
+ \cE }
+ \c { group_end: }
+ \c { tl_use:N }
+ \c { g__markdown_after_markinline_tl }
+ }
+ {
+ \msg_error:nn
+ { markdown }
+ { markinline-peek-failure }
+ \group_end:
+ \tl_use:N
+ \g__markdown_after_markinline_tl
+ }
+ }
+\msg_new:nnn
+ { markdown }
+ { buffering-markinline }
+ { Buffering~inline~markdown~input~into~the~temporary~input~file~"#1". }
+\msg_new:nnnn
+ { markdown }
+ { markinline-peek-failure }
+ { Use~of~\iow_char:N \\ markinline~doesn't~match~its~definition }
+ { The~macro~should~be~followed~by~inline~markdown~text~in~curly~braces }
\ExplSyntaxOff
\begingroup
\catcode`|=0%
diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty
index 5bafe4bfb11..e0e1f2f3748 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdown.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdown.sty
@@ -82,6 +82,26 @@
\def\markdownVersionSpace{ }%
\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
\markdownVersion\markdownVersionSpace markdown renderer]%
+\ExplSyntaxOn
+\cs_gset_eq:NN
+ \markinlinePlainTeX
+ \markinline
+\cs_gset:Npn
+ \markinline
+ {
+ \peek_regex_replace_once:nn
+ { ( \[ (.*?) \] ) ? }
+ {
+ \c { group_begin: }
+ \c { __markdown_setup:n }
+ \cB { \2 \cE }
+ \c { tl_put_right:Nn }
+ \c { g__markdown_after_markinline_tl }
+ \cB { \c { group_end: } \cE }
+ \c { markinlinePlainTeX }
+ }
+ }
+\ExplSyntaxOff
\let\markdownInputPlainTeX\markdownInput
\renewcommand\markdownInput[2][]{%
\begingroup
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
index 99de31845a7..b0b772b2832 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
@@ -311,29 +311,72 @@
tickedBox = {$\boxtimes$},
halfTickedBox = {$\boxdot$}}}
\ExplSyntaxOn
-\seq_new:N \l__markdown_header_identifiers_seq
-\markdownSetup{
- rendererPrototypes = {
- headerAttributeContextBegin = {
- \seq_clear:N \l__markdown_header_identifiers_seq
- \markdownSetup
- {
- renderers = {
- attributeIdentifier = {
- \seq_put_right:Nn
- \l__markdown_header_identifiers_seq
- { ##1 }
+\seq_new:N
+ \l__markdown_header_identifiers_seq
+\markdownSetup
+ {
+ rendererPrototypes = {
+ headerAttributeContextBegin = {
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l__markdown_header_identifiers_seq
+ { ##1 }
+ },
},
- },
- }
+ }
+ },
+ headerAttributeContextEnd = {
+ \seq_map_inline:Nn
+ \l__markdown_header_identifiers_seq
+ { \label { ##1 } }
+ \seq_clear:N
+ \l__markdown_header_identifiers_seq
+ },
},
- headerAttributeContextEnd = {
- \seq_map_inline:Nn
- \l__markdown_header_identifiers_seq
- { \label { ##1 } }
+ }
+\bool_new:N
+ \l__markdown_header_unnumbered_bool
+\markdownSetup
+ {
+ rendererPrototypes = {
+ headerAttributeContextBegin += {
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ attributeClassName = {
+ \bool_if:nT
+ {
+ \str_if_eq_p:nn
+ { ##1 }
+ { unnumbered } &&
+ ! \l__markdown_header_unnumbered_bool
+ }
+ {
+ \group_begin:
+ \bool_set_true:N
+ \l__markdown_header_unnumbered_bool
+ \c@secnumdepth = 0
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ sectionBegin = {
+ \group_begin:
+ },
+ sectionEnd = {
+ \group_end:
+ },
+ },
+ }
+ }
+ },
+ },
+ }
+ },
},
- },
-}
+ }
\ExplSyntaxOff
\markdownSetup{rendererPrototypes={
superscript = {\textsuperscript{#1}},
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
index 1e520a30bf5..e65712cdcb6 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 = "3.4.3-0-ge2c6be1a",
+ version = "3.5.0-0-gfd01a252",
comment = "A module for the conversion from markdown to plain TeX",
author = "John MacFarlane, Hans Hagen, Vít Starý Novotný",
copyright = {"2009-2016 John MacFarlane, Hans Hagen",
@@ -2755,7 +2755,7 @@ function M.writer.new(options)
function self.blockquote(s)
if not self.is_writing then return "" end
return {"\\markdownRendererBlockQuoteBegin\n",s,
- "\n\\markdownRendererBlockQuoteEnd "}
+ "\\markdownRendererBlockQuoteEnd "}
end
function self.verbatim(s)
if not self.is_writing then return "" end
@@ -3136,7 +3136,7 @@ function M.writer.new(options)
end
if self.is_writing and #normalized_attributes > 0 then
- table.insert(buf, "\\markdownRendererHeaderAttributeContextEnd ")
+ table.insert(buf, "\\markdownRendererHeaderAttributeContextEnd{}")
end
return buf
@@ -6920,7 +6920,7 @@ M.extensions.fenced_code = function(blank_before_code_fence,
table.insert(buf, {"\\markdownRendererInputFencedCode{",
name,"}{",self.string(i),"}{",self.infostring(i),"}"})
if attr ~= nil then
- table.insert(buf, "\\markdownRendererFencedCodeAttributeContextEnd")
+ table.insert(buf, "\\markdownRendererFencedCodeAttributeContextEnd{}")
end
return buf
end
@@ -7110,7 +7110,7 @@ M.extensions.fenced_divs = function(blank_before_div_fence)
function self.div_begin(attributes)
local start_output = {"\\markdownRendererFencedDivAttributeContextBegin\n",
self.attributes(attributes)}
- local end_output = {"\\markdownRendererFencedDivAttributeContextEnd "}
+ local end_output = {"\\markdownRendererFencedDivAttributeContextEnd{}"}
return self.push_attributes("div", attributes, start_output, end_output)
end
function self.div_end()