diff options
author | Karl Berry <karl@freefriends.org> | 2024-04-30 20:02:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-04-30 20:02:14 +0000 |
commit | ca30fcf4913c32febbfb97abd72219b3e69501e4 (patch) | |
tree | 9ddee84f9374f5462ee9b54a3713d062db6885e8 /Master/texmf-dist/tex | |
parent | b3669c79c87b055df515bf320be2a78fb0baf956 (diff) |
markdown (30apr24)
git-svn-id: svn://tug.org/texlive/trunk@71137 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
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() |