diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/markdown/markdown.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/markdown/markdown.tex | 317 |
1 files changed, 234 insertions, 83 deletions
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex index 9c71c07afd1..5d5c9faebb6 100644 --- a/Master/texmf-dist/tex/generic/markdown/markdown.tex +++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex @@ -6,7 +6,7 @@ %% %% markdown.dtx (with options: `tex') %% -%% Copyright (C) 2016-2024 Vít Starý Novotný +%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -51,7 +51,9 @@ \prop_new:N \g__markdown_default_lua_options_prop \seq_new:N \g__markdown_option_layers_seq \tl_const:Nn \c__markdown_option_layer_lua_tl { lua } -\seq_gput_right:NV \g__markdown_option_layers_seq \c__markdown_option_layer_lua_tl +\seq_gput_right:NV + \g__markdown_option_layers_seq + \c__markdown_option_layer_lua_tl \cs_new:Nn \__markdown_add_lua_option:nnn { @@ -128,21 +130,50 @@ \cs_generate_variant:Nn \msg_error:nnnn { nnnV } -\seq_new:N \g__markdown_option_types_seq -\tl_const:Nn \c__markdown_option_type_clist_tl { clist } -\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_clist_tl -\tl_const:Nn \c__markdown_option_type_counter_tl { counter } -\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_counter_tl -\tl_const:Nn \c__markdown_option_type_boolean_tl { boolean } -\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_boolean_tl -\tl_const:Nn \c__markdown_option_type_number_tl { number } -\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_number_tl -\tl_const:Nn \c__markdown_option_type_path_tl { path } -\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_path_tl -\tl_const:Nn \c__markdown_option_type_slice_tl { slice } -\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_slice_tl -\tl_const:Nn \c__markdown_option_type_string_tl { string } -\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_string_tl +\seq_new:N + \g__markdown_option_types_seq +\tl_const:Nn + \c__markdown_option_type_clist_tl + { clist } +\seq_gput_right:NV + \g__markdown_option_types_seq + \c__markdown_option_type_clist_tl +\tl_const:Nn + \c__markdown_option_type_counter_tl + { counter } +\seq_gput_right:NV + \g__markdown_option_types_seq + \c__markdown_option_type_counter_tl +\tl_const:Nn + \c__markdown_option_type_boolean_tl + { boolean } +\seq_gput_right:NV + \g__markdown_option_types_seq + \c__markdown_option_type_boolean_tl +\tl_const:Nn + \c__markdown_option_type_number_tl + { number } +\seq_gput_right:NV + \g__markdown_option_types_seq + \c__markdown_option_type_number_tl +\tl_const:Nn + \c__markdown_option_type_path_tl + { path } +\seq_gput_right:NV + \g__markdown_option_types_seq + \c__markdown_option_type_path_tl +\tl_const:Nn + \c__markdown_option_type_slice_tl + { slice } +\seq_gput_right:NV + \g__markdown_option_types_seq + \c__markdown_option_type_slice_tl +\tl_const:Nn + \c__markdown_option_type_string_tl + { string } +\seq_gput_right:NV + \g__markdown_option_types_seq + \c__markdown_option_type_string_tl \cs_new:Nn \__markdown_get_option_type:nN { @@ -323,7 +354,7 @@ \__markdown_add_lua_option:nnn { eagerCache } { boolean } - { false } + { true } \__markdown_add_lua_option:nnn { singletonCache } { boolean } @@ -413,6 +444,10 @@ { boolean } { false } \__markdown_add_lua_option:nnn + { ensureJekyllData } + { boolean } + { false } +\__markdown_add_lua_option:nnn { expectJekyllData } { boolean } { false } @@ -580,8 +615,8 @@ { boolean } { true } \ExplSyntaxOff -\def\markdownLastModified{2024-06-20}% -\def\markdownVersion{3.6.1-0-g5a45a922}% +\def\markdownLastModified{2024-08-30}% +\def\markdownVersion{3.7.0-0-g98dece19}% \let\markdownBegin\relax \let\markdownEnd\relax \let\markinline\relax @@ -602,7 +637,9 @@ \seq_new:N \g__markdown_plain_tex_options_seq \prop_new:N \g__markdown_plain_tex_option_types_prop \prop_new:N \g__markdown_default_plain_tex_options_prop -\seq_gput_right:NV \g__markdown_option_layers_seq \c__markdown_option_layer_plain_tex_tl +\seq_gput_right:NV + \g__markdown_option_layers_seq + \c__markdown_option_layer_plain_tex_tl \cs_new:Nn \__markdown_add_plain_tex_option:nnn { @@ -664,38 +701,10 @@ { inputTempFileName } { path } { \jobname.markdown.in } -\cs_generate_variant:Nn - \__markdown_add_plain_tex_option:nnn - { nnV } -\ExplSyntaxOff -\input lt3luabridge.tex -\ExplSyntaxOn -\bool_if:nTF - { - \cs_if_exist_p:N - \luabridge_tl_set:Nn && - ( - \int_compare_p:nNn - { \g_luabridge_method_int } - = - { \c_luabridge_method_directlua_int } || - \sys_if_shell_unrestricted_p: - ) - } - { - \luabridge_tl_set:Nn - \l_tmpa_tl - { print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") } - } - { - \tl_set:Nn - \l_tmpa_tl - { . } - } -\__markdown_add_plain_tex_option:nnV +\__markdown_add_plain_tex_option:nnn { outputDir } { path } - \l_tmpa_tl + { . } \__markdown_add_plain_tex_option:nnn { plain } { boolean } @@ -740,18 +749,60 @@ \cs_new:Nn \__markdown_define_option_command:n { - \__markdown_option_tl_to_csname:nN + \str_if_eq:nnTF { #1 } - \l_tmpa_tl - \cs_if_exist:cF - { \l_tmpa_tl } + { outputDir } + { \__markdown_define_option_command_output_dir: } { - \__markdown_get_default_option_value:nN - { #1 } - \l_tmpa_tl - \__markdown_set_option_value:nV + \__markdown_option_tl_to_csname:nN { #1 } \l_tmpa_tl + \cs_if_exist:cF + { \l_tmpa_tl } + { + \__markdown_get_default_option_value:nN + { #1 } + \l_tmpa_tl + \__markdown_set_option_value:nV + { #1 } + \l_tmpa_tl + } + } + } +\ExplSyntaxOff +\input lt3luabridge.tex +\ExplSyntaxOn +\cs_new:Nn + \__markdown_define_option_command_output_dir: + { + \cs_if_free:NT + \markdownOptionOutputDir + { + \bool_if:nTF + { + \cs_if_exist_p:N + \luabridge_tl_set:Nn && + ( + \int_compare_p:nNn + { \g_luabridge_method_int } + = + { \c_luabridge_method_directlua_int } || + \sys_if_shell_unrestricted_p: + ) + } + { + \luabridge_tl_set:Nn + \l_tmpa_tl + { print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") } + \tl_gset:NV + \markdownOptionOutputDir + \l_tmpa_tl + } + { + \tl_gset:Nn + \markdownOptionOutputDir + { . } + } } } \cs_new:Nn @@ -1044,10 +1095,14 @@ { redefined-snippet } \l_tmpa_tl } - \prop_gput:NVn + \keys_precompile:nnN + { markdown/options } + { #2 } + \l_tmpb_tl + \prop_gput:NVV \g__markdown_snippets_prop \l_tmpa_tl - { #2 } + \l_tmpb_tl } \cs_gset_eq:NN \markdownSetupSnippet @@ -1098,7 +1153,7 @@ \g__markdown_snippets_prop \l_tmpa_tl \l_tmpb_tl - \__markdown_setup:V + \tl_use:N \l_tmpb_tl } { @@ -1113,9 +1168,6 @@ { markdown } { undefined-snippet } { Can't~invoke~undefined~snippet~#1 } -\cs_generate_variant:Nn - \__markdown_setup:n - { V } \tl_new:N \l__markdown_import_current_theme_tl \keys_define:nn @@ -2370,6 +2422,26 @@ { untickedBox } { 0 } \ExplSyntaxOff +\def\markdownRendererWarning{% + \markdownRendererWarningPrototype}% +\def\markdownRendererError{% + \markdownRendererErrorPrototype}% +\ExplSyntaxOn +\seq_gput_right:Nn + \g__markdown_renderers_seq + { warning } +\prop_gput:Nnn + \g__markdown_renderer_arities_prop + { warning } + { 1 } +\seq_gput_right:Nn + \g__markdown_renderers_seq + { error } +\prop_gput:Nnn + \g__markdown_renderer_arities_prop + { error } + { 1 } +\ExplSyntaxOff \def\markdownRendererJekyllDataBegin{% \markdownRendererJekyllDataBeginPrototype}% \ExplSyntaxOn @@ -2458,11 +2530,57 @@ { jekyllDataNumber } { 2 } \ExplSyntaxOff -\def\markdownRendererJekyllDataString{% - \markdownRendererJekyllDataStringPrototype}% +\def\markdownRendererJekyllDataTypographicString{% + \markdownRendererJekyllDataTypographicStringPrototype}% +\def\markdownRendererJekyllDataProgrammaticString{% + \markdownRendererJekyllDataProgrammaticStringPrototype}% \ExplSyntaxOn \seq_gput_right:Nn \g__markdown_renderers_seq + { jekyllDataTypographicString } +\prop_gput:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataTypographicString } + { 2 } +\seq_gput_right:Nn + \g__markdown_renderers_seq + { jekyllDataProgrammaticString } +\prop_gput:Nnn + \g__markdown_renderer_arities_prop + { jekyllDataProgrammaticString } + { 2 } +\cs_gset:Npn + \markdownRendererJekyllDataTypographicString + { + \cs_if_exist:NTF + \markdownRendererJekyllDataString + { + \markdownWarning + { + The~jekyllDataString~renderer~has~been~deprecated,~ + to~be~removed~in~Markdown~4.0.0 + } + \markdownRendererJekyllDataString + } + { + \cs_if_exist:NTF + \markdownRendererJekyllDataStringPrototype + { + \markdownWarning + { + The~jekyllDataString~renderer~prototype~ + has~been~deprecated,~ + to~be~removed~in~Markdown~4.0.0 + } + \markdownRendererJekyllDataStringPrototype + } + { + \markdownRendererJekyllDataTypographicStringPrototype + } + } + } +\seq_gput_right:Nn + \g__markdown_renderers_seq { jekyllDataString } \prop_gput:Nnn \g__markdown_renderer_arities_prop @@ -2481,9 +2599,17 @@ { 1 } \cs_new:Nn \__markdown_define_renderers: { - \seq_map_function:NN + \seq_map_inline:Nn \g__markdown_renderers_seq - \__markdown_define_renderer:n + { + \str_if_eq:nnF + { ##1 } + { jekyllDataString } + { + \__markdown_define_renderer:n + { ##1 } + } + } } \cs_new:Nn \__markdown_define_renderer:n { @@ -2804,9 +2930,17 @@ { nV } \cs_new:Nn \__markdown_define_renderer_prototypes: { - \seq_map_function:NN + \seq_map_inline:Nn \g__markdown_renderers_seq - \__markdown_define_renderer_prototype:n + { + \str_if_eq:nnF + { ##1 } + { jekyllDataString } + { + \__markdown_define_renderer_prototype:n + { ##1 } + } + } } \cs_new:Nn \__markdown_define_renderer_prototype:n { @@ -3319,6 +3453,9 @@ } } } + \str_gset:NV + \g_luabridge_output_dirname_str + \markdownOptionOutputDir \luabridge_now:e { #1 } } @@ -3405,29 +3542,42 @@ \msg_new:nnn { markdown } { buffering-markinline } - { Buffering~inline~markdown~input~into~the~temporary~input~file~"#1". } + { 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 } + { The~macro~should~be~followed~by~inline~ + markdown~text~in~curly~braces } \cs_new:Npn \markdownInput #1 { - \file_get_full_name:nNTF - { #1 } - \l_tmpa_tl + \__markdown_if_option:nTF + { frozenCache } { - \exp_args:NV - \markdownInputRaw - \l_tmpa_tl + \markdownInputRaw + { #1 } } { - \msg_error:nnnV - { markdown } - { markdown-file-does-not-exist } + \tl_set:Nx + \l_tmpa_tl { #1 } + \file_get_full_name:VNTF + \l_tmpa_tl + \l_tmpb_tl + { + \exp_args:NV + \markdownInputRaw + \l_tmpb_tl + } + { + \msg_error:nnV + { markdown } + { markdown-file-does-not-exist } + \l_tmpa_tl + } } } \msg_new:nnn @@ -3453,7 +3603,8 @@ |fi |markdownInfo{Including markdown document number "|the|markdownOptionFrozenCacheCounter" from frozen cache}% - |csname markdownFrozenCache|the|markdownOptionFrozenCacheCounter|endcsname + |csname markdownFrozenCache% + |the|markdownOptionFrozenCacheCounter|endcsname |global|advance|markdownOptionFrozenCacheCounter by 1|relax }{% |markdownInfo{Including markdown document "&1"}% |