summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/markdown/markdown.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-02-18 21:05:58 +0000
committerKarl Berry <karl@freefriends.org>2024-02-18 21:05:58 +0000
commit45d62c355885e905db2a729761eb384ec447e931 (patch)
treea80c1c9bd45c98a38855f2ac39f1ac5233862747 /Master/texmf-dist/tex/latex/markdown/markdown.sty
parentc503d4c5c13af6a3749ec30bfee14cffda84240c (diff)
markdown (18feb24)
git-svn-id: svn://tug.org/texlive/trunk@69962 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/markdown/markdown.sty')
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdown.sty1713
1 files changed, 131 insertions, 1582 deletions
diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty
index 661ea377553..4f2bcd4bdba 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdown.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdown.sty
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `latex')
%%
-%% Copyright (C) 2016-2023 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -16,7 +16,7 @@
%% http://www.latex-project.org/lppl.txt
%%
%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Novotný.
+%% The Current Maintainer of this work is Vít Starý Novotný.
%%
%% Send bug reports, requests for additions and questions
%% either to the GitHub issue tracker at
@@ -43,649 +43,93 @@
%% The names of the source files used are shown above.
%%
\RequirePackage{expl3}
-\newcommand\markdownInfo[1]{\PackageInfo{markdown}{#1}}%
-\newcommand\markdownWarning[1]{\PackageWarning{markdown}{#1}}%
-\newcommand\markdownError[2]{\PackageError{markdown}{#1}{#2.}}%
-\input markdown/markdown
-\newenvironment{markdown}\relax\relax
-\newenvironment{markdown*}[1]\relax\relax
\ExplSyntaxOn
-\cs_new:Nn
- \__markdown_setup:n
- {
- \keys_set:nn
- { markdown/latex-options }
- { #1 }
- }
-\let\markdownSetup=\__markdown_setup:n
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn
- \__markdown_latex_setup_snippet:nn
- {
- \markdownIfSnippetExists
- { #1 }
- {
- \markdownWarning
- {Redefined~snippet~\markdownLaTeXThemeName#1}
- \csname markdownLaTeXSetupSnippet%
- \markdownLaTeXThemeName#1\endcsname={#2}
- }
- {
- \newtoks\next
- \next={#2}
- \expandafter\let\csname markdownLaTeXSetupSnippet%
- \markdownLaTeXThemeName#1\endcsname=\next
- }
- }
-\let\markdownSetupSnippet=\__markdown_latex_setup_snippet:nn
-\ExplSyntaxOff
-\newcommand\markdownIfSnippetExists[3]{%
- \@ifundefined
- {markdownLaTeXSetupSnippet\markdownLaTeXThemeName#1}%
- {#3}{#2}}%
-\ExplSyntaxOn
-\seq_new:N \g__markdown_latex_options_seq
-\prop_new:N \g__markdown_latex_option_types_prop
-\prop_new:N \g__markdown_default_latex_options_prop
\tl_const:Nn \c__markdown_option_layer_latex_tl { latex }
-\seq_gput_right:NV \g__markdown_option_layers_seq \c__markdown_option_layer_latex_tl
-\cs_new:Nn
- \__markdown_add_latex_option:nnn
- {
- \__markdown_add_option:Vnnn
- \c__markdown_option_layer_latex_tl
- { #1 }
- { #2 }
- { #3 }
- }
-\__markdown_add_latex_option:nnn
- { plain }
- { boolean }
- { false }
-\ExplSyntaxOff
-\newif\ifmarkdownLaTeXLoaded
- \markdownLaTeXLoadedfalse
-\AtEndOfPackage{\markdownLaTeXLoadedtrue}
-\ExplSyntaxOn
-\tl_new:N \markdownLaTeXThemePackageName
-\cs_new:Nn
- \__markdown_set_latex_theme:n
- {
- \str_if_in:nnF
- { #1 }
- { / }
- {
- \markdownError
- { Won't~load~theme~with~unqualified~name~#1 }
- { Theme~names~must~contain~at~least~one~forward~slash }
- }
- \str_if_in:nnT
- { #1 }
- { _ }
- {
- \markdownError
- { Won't~load~theme~with~an~underscore~in~its~name~#1 }
- { Theme~names~must~not~contain~underscores~in~their~names }
- }
- \tl_set:Nn \markdownLaTeXThemePackageName { #1 }
- \str_replace_all:Nnn
- \markdownLaTeXThemePackageName
- { / }
- { _ }
- \edef\markdownLaTeXThemePackageName{
- markdowntheme\markdownLaTeXThemePackageName}
- \expandafter\markdownLaTeXThemeLoad\expandafter{
- \markdownLaTeXThemePackageName}{#1/}
- }
-\keys_define:nn
- { markdown/latex-options }
- {
- import .code:n = {
- \tl_set:Nn
- \l_tmpa_tl
- { #1 }
- \tl_replace_all:NnV
- \l_tmpa_tl
- { / }
- \c_backslash_str
- \keys_set:nV
- { markdown/latex-options/import }
- \l_tmpa_tl
- },
- }
-\cs_generate_variant:Nn
- \tl_replace_all:Nnn
- { NnV }
-\keys_define:nn
- { markdown/latex-options }
- {
- theme .code:n = { \__markdown_set_latex_theme:n { #1 } },
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\@onlypreamble
- \__markdown_set_latex_theme:n
-\ExplSyntaxOff
-\ExplSyntaxOn
-\keys_define:nn
- { markdown/latex-options }
- {
- snippet .code:n = {
- \markdownIfSnippetExists{#1}
- {
- \expandafter\markdownSetup\expandafter{
- \the\csname markdownLaTeXSetupSnippet
- \markdownLaTeXThemeName#1\endcsname}
- }{
- \markdownError
- {Can't~invoke~setup~snippet~#1}
- {The~setup~snippet~is~undefined}
- }
- }
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\tl_new:N
- \l__markdown_latex_import_current_theme_tl
-\keys_define:nn
- { markdown/latex-options/import }
- {
- unknown .default:n = {},
- unknown .code:n = {
- \tl_set_eq:NN
- \l__markdown_latex_import_current_theme_tl
- \l_keys_key_str
- \tl_replace_all:NVn
- \l__markdown_latex_import_current_theme_tl
- \c_backslash_str
- { / }
- \__markdown_set_latex_theme:V
- \l__markdown_latex_import_current_theme_tl
- \clist_map_inline:nn
- { #1 }
- {
- \regex_extract_once:nnNTF
- { ^(.*?)\s+as\s+(.*?)$ }
- { ##1 }
- \l_tmpa_seq
- {
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \seq_pop:NN
- \l_tmpa_seq
- \l_tmpb_tl
- }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { ##1 }
- \tl_set:Nn
- \l_tmpb_tl
- { ##1 }
- }
- \tl_put_left:Nn
- \l_tmpa_tl
- { / }
- \tl_put_left:NV
- \l_tmpa_tl
- \l__markdown_latex_import_current_theme_tl
- \__markdown_latex_setup_snippet:Vx
- \l_tmpb_tl
- { snippet = { \l_tmpa_tl } }
- }
- },
- }
-\cs_generate_variant:Nn
- \tl_replace_all:Nnn
- { NVn }
-\cs_generate_variant:Nn
- \__markdown_set_latex_theme:n
- { V }
-\cs_generate_variant:Nn
- \__markdown_latex_setup_snippet:nn
- { Vx }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn \__markdown_latex_define_option_commands_and_keyvals:
- {
- \seq_map_inline:Nn
- \g__markdown_latex_options_seq
- {
- \__markdown_plain_tex_define_option_command:n
- { ##1 }
- }
- \seq_map_inline:Nn
- \g__markdown_option_layers_seq
- {
- \seq_map_inline:cn
- { g__markdown_ ##1 _options_seq }
- {
- \__markdown_with_various_cases:nn
- { ####1 }
- {
- \__markdown_latex_define_option_keyval:nnn
- { ##1 }
- { ####1 }
- { ########1 }
- }
- }
- }
- }
-\cs_new:Nn \__markdown_latex_define_option_keyval:nnn
- {
- \prop_get:cnN
- { g__markdown_ #1 _option_types_prop }
- { #2 }
- \l_tmpa_tl
- \keys_define:nn
- { markdown/latex-options }
- {
- #3 .code:n = {
- \__markdown_set_option_value:nn
- { #2 }
- { ##1 }
- },
- }
- \str_if_eq:VVT
- \l_tmpa_tl
- \c__markdown_option_type_boolean_tl
- {
- \keys_define:nn
- { markdown/latex-options }
- {
- #3 .default:n = { true },
- }
- }
- \str_if_eq:VVT
- \l_tmpa_tl
- \c__markdown_option_type_clist_tl
- {
- \tl_set:Nn
- \l_tmpa_tl
- { #3 }
- \tl_reverse:N
- \l_tmpa_tl
- \str_if_eq:enF
- {
- \tl_head:V
- \l_tmpa_tl
- }
- { s }
- {
- \msg_error:nnn
- { markdown }
- { malformed-name-for-clist-option }
- { #3 }
- }
- \tl_set:Nx
- \l_tmpa_tl
- {
- \tl_tail:V
- \l_tmpa_tl
- }
- \tl_reverse:N
- \l_tmpa_tl
- \tl_put_right:Nn
- \l_tmpa_tl
- {
- .code:n = {
- \__markdown_get_option_value:nN
- { #2 }
- \l_tmpa_tl
- \clist_set:NV
- \l_tmpa_clist
- { \l_tmpa_tl, { ##1 } }
- \__markdown_set_option_value:nV
- { #2 }
- \l_tmpa_clist
- }
- }
- \keys_define:nV
- { markdown/latex-options }
- \l_tmpa_tl
- }
- }
\cs_generate_variant:Nn
- \clist_set:Nn
+ \tl_const:Nn
{ NV }
-\cs_generate_variant:Nn
- \keys_define:nn
- { nV }
-\cs_generate_variant:Nn
- \__markdown_set_option_value:nn
- { nV }
-\prg_generate_conditional_variant:Nnn
- \str_if_eq:nn
- { en }
- { F }
-\msg_new:nnn
- { markdown }
- { malformed-name-for-clist-option }
+\tl_if_exist:NF
+ \c__markdown_top_layer_tl
{
- Clist~option~name~#1~does~not~end~with~-s.
+ \tl_const:NV
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_latex_tl
}
-\__markdown_latex_define_option_commands_and_keyvals:
\ExplSyntaxOff
+\input markdown/markdown
+\newenvironment{markdown}\relax\relax
+\newenvironment{markdown*}[1]\relax\relax
\DeclareOption{finalizecache}{\markdownSetup{finalizeCache}}
\DeclareOption{frozencache}{\markdownSetup{frozenCache}}
\ExplSyntaxOn
-\cs_new:Nn \__markdown_latex_define_renderers:
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_latex_tl
{
- \seq_map_function:NN
- \g__markdown_renderers_seq
- \__markdown_latex_define_renderer:n
+ \__markdown_define_option_commands_and_keyvals:
+ \__markdown_define_renderers:
+ \__markdown_define_renderer_prototypes:
}
-\cs_new:Nn \__markdown_latex_define_renderer:n
- {
- \__markdown_renderer_tl_to_csname:nN
- { #1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { #1 }
- \l_tmpb_tl
- \__markdown_latex_define_renderer:ncV
- { #1 }
- { \l_tmpa_tl }
- \l_tmpb_tl
+\ExplSyntaxOff
+\newif\ifmarkdownLaTeXLoaded
+ \markdownLaTeXLoadedfalse
+\AtEndOfPackage{
+ \markdownLaTeXLoadedtrue
+ \markdownIfOption{noDefaults}{}{
+ \markdownSetup{theme=witiko/markdown/defaults}
}
-\cs_new:Nn \__markdown_renderer_tl_to_csname:nN
+}
+\def\markdownVersionSpace{ }%
+\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
+ \markdownVersion\markdownVersionSpace markdown renderer]%
+\let\markdownInputPlainTeX\markdownInput
+\renewcommand\markdownInput[2][]{%
+ \begingroup
+ \markdownSetup{#1}%
+ \markdownInputPlainTeX{#2}%
+ \endgroup}%
+\ExplSyntaxOn
+\renewenvironment
+ { markdown }
{
- \tl_set:Nn
- \l_tmpa_tl
- { \str_uppercase:n { #1 } }
- \tl_set:Nx
- #2
+ \group_begin:
+ \char_set_catcode_active:n { 13 }
+ \char_set_catcode_letter:n { 35 }
+ \peek_regex_replace_once:nnF
+ { \ *\[([^]]*)\][^\r]* }
{
- markdownRenderer
- \tl_head:f { \l_tmpa_tl }
- \tl_tail:n { #1 }
+ \c { group_end: }
+ \c { tl_set_rescan:Nnn } \c { l_tmpa_tl } { } { \1 }
+ \c { __markdown_setup:V } \c { l_tmpa_tl }
+ \c { markdownReadAndConvert@markdown } { }
}
- }
-\cs_new:Nn \__markdown_latex_define_renderer:nNn
- {
- \__markdown_with_various_cases:nn
- { #1 }
{
- \keys_define:nn
- { markdown/latex-options/renderers }
- {
- ##1 .code:n = {
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ####1 }
- },
- }
+ \group_end:
+ \markdownReadAndConvert@markdown { }
}
}
-\cs_generate_variant:Nn
- \__markdown_latex_define_renderer:nNn
- { ncV }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\tl_new:N
- \l__markdown_renderer_definition_tl
-\keys_define:nn
- { markdown/latex-options/renderers }
+ { \markdownEnd }
+\renewenvironment
+ { markdown* }
+ [ 1 ]
{
- unknown .code:n = {
- \regex_match:nVTF
- { \* }
- \l_keys_key_str
- {
- \tl_set:Nn
- \l__markdown_renderer_definition_tl
- { #1 }
- \tl_set:NV
- \l_tmpa_tl
- \l_keys_key_str
- \regex_replace_all:nnN
- { \* }
- { .* }
- \l_tmpa_tl
- \regex_set:NV
- \l_tmpa_regex
- \l_tmpa_tl
- \int_zero:N
- \l_tmpa_int
- \seq_map_inline:Nn
- \g__markdown_renderers_seq
- {
- \__markdown_with_various_cases:nn
- { ##1 }
- {
- \regex_match:NnT
- \l_tmpa_regex
- { ####1 }
- {
- \__markdown_renderer_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpb_tl
- \l__markdown_renderer_definition_tl
- \int_incr:N
- \l_tmpa_int
- \__markdown_with_various_cases_break:
- }
- }
- }
- \int_compare:nNnT
- { \l_tmpa_int } = { 0 }
- {
- \msg_error:nnV
- { markdown }
- { nonmatched-renderer-wildcard }
- \l_keys_key_str
- }
- }
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer }
- \l_keys_key_str
- }
- },
- }
-\msg_new:nnn
- { markdown }
- { undefined-renderer }
- {
- Renderer~#1~is~undefined.
- }
-\msg_new:nnn
- { markdown }
- { nonmatched-renderer-wildcard }
- {
- Wildcard~#1~matches~no~renderers.
- }
-\cs_generate_variant:Nn
- \regex_set:Nn
- { NV }
-\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 }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_new:Nn \__markdown_latex_define_renderer_prototypes:
- {
- \seq_map_function:NN
- \g__markdown_renderers_seq
- \__markdown_latex_define_renderer_prototype:n
- }
-\cs_new:Nn \__markdown_latex_define_renderer_prototype:n
- {
- \__markdown_renderer_prototype_tl_to_csname:nN
- { #1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
+ \msg_warning:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
{ #1 }
- \l_tmpb_tl
- \__markdown_latex_define_renderer_prototype:ncV
- { #1 }
- { \l_tmpa_tl }
- \l_tmpb_tl
- }
-\cs_new:Nn \__markdown_latex_define_renderer_prototype:nNn
- {
- \__markdown_with_various_cases:nn
+ \__markdown_setup:n
{ #1 }
- {
- \keys_define:nn
- { markdown/latex-options/renderer-prototypes }
- {
- ##1 .code:n = {
- \cs_generate_from_arg_count:NNnn
- #2
- \cs_set:Npn
- { #3 }
- { ####1 }
- },
- }
- }
- }
-\cs_generate_variant:Nn
- \__markdown_latex_define_renderer_prototype:nNn
- { ncV }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\tl_new:N
- \l__markdown_renderer_prototype_definition_tl
-\keys_define:nn
- { markdown/latex-options/renderer-prototypes }
- {
- unknown .code:n = {
- \regex_match:nVTF
- { \* }
- \l_keys_key_str
- {
- \tl_set:Nn
- \l__markdown_renderer_prototype_definition_tl
- { #1 }
- \tl_set:NV
- \l_tmpa_tl
- \l_keys_key_str
- \regex_replace_all:nnN
- { \* }
- { .* }
- \l_tmpa_tl
- \regex_set:NV
- \l_tmpa_regex
- \l_tmpa_tl
- \int_zero:N
- \l_tmpa_int
- \seq_map_inline:Nn
- \g__markdown_renderers_seq
- {
- \__markdown_with_various_cases:nn
- { ##1 }
- {
- \regex_match:NnT
- \l_tmpa_regex
- { ####1 }
- {
- \__markdown_renderer_prototype_tl_to_csname:nN
- { ##1 }
- \l_tmpa_tl
- \prop_get:NnN
- \g__markdown_renderer_arities_prop
- { ##1 }
- \l_tmpb_tl
- \cs_generate_from_arg_count:cNVV
- { \l_tmpa_tl }
- \cs_set:Npn
- \l_tmpb_tl
- \l__markdown_renderer_prototype_definition_tl
- \int_incr:N
- \l_tmpa_int
- \__markdown_with_various_cases_break:
- }
- }
- }
- \int_compare:nNnT
- { \l_tmpa_int } = { 0 }
- {
- \msg_error:nnV
- { markdown }
- { nonmatched-renderer-prototype-wildcard }
- \l_keys_key_str
- }
- }
- {
- \msg_error:nnV
- { markdown }
- { undefined-renderer-prototype }
- \l_keys_key_str
- }
- },
+ \markdownReadAndConvert@markdown *
}
+ { \markdownEnd }
\msg_new:nnn
{ markdown }
- { undefined-renderer-prototype }
+ { latex-markdown-star-deprecated }
{
- Renderer~prototype~#1~is~undefined.
+ The~markdown*~LaTeX~environment~has~been~deprecated~and~will~
+ be~removed~in~the~next~major~version~of~the~Markdown~package.
}
-\msg_new:nnn
- { markdown }
- { nonmatched-renderer-prototype-wildcard }
- {
- Wildcard~#1~matches~no~renderer~prototypes.
- }
-\cs_generate_variant:Nn
- \regex_set:Nn
- { NV }
-\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 }
\ExplSyntaxOff
-\def\markdownVersionSpace{ }%
-\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
- \markdownVersion\markdownVersionSpace markdown renderer]%
-\ExplSyntaxOn
-\__markdown_latex_define_renderers:
-\__markdown_latex_define_renderer_prototypes:
-\ExplSyntaxOff
-\let\markdownInputPlainTeX\markdownInput
-\renewcommand\markdownInput[2][]{%
- \begingroup
- \markdownSetup{#1}%
- \markdownInputPlainTeX{#2}%
- \endgroup}%
-\renewenvironment{markdown}{%
- \markdownReadAndConvert@markdown{}}{%
- \markdownEnd}%
-\renewenvironment{markdown*}[1]{%
- \markdownSetup{#1}%
- \markdownReadAndConvert@markdown*}{%
- \markdownEnd}%
\begingroup
\catcode`\|=0\catcode`\<=1\catcode`\>=2%
\catcode`\\=12|catcode`|{=12|catcode`|}=12%
@@ -693,991 +137,96 @@
|markdownReadAndConvert<\end{markdown#1}>%
<|end<markdown#1>>>%
|endgroup
-\ExplSyntaxOn
-\newcommand\markdownLaTeXThemeName{}
-\seq_new:N \g__markdown_latex_themes_seq
-\seq_gput_right:NV
- \g__markdown_latex_themes_seq
- \markdownLaTeXThemeName
-\newcommand\markdownLaTeXThemeLoad[2]{
- \def\@tempa{%
- \def\markdownLaTeXThemeName{#2}
- \seq_gput_right:NV
- \g__markdown_latex_themes_seq
- \markdownLaTeXThemeName
- \RequirePackage{#1}
- \seq_pop_right:NN
- \g__markdown_latex_themes_seq
- \l_tmpa_tl
- \seq_get_right:NN
- \g__markdown_latex_themes_seq
- \l_tmpa_tl
- \exp_args:NNV
- \def
- \markdownLaTeXThemeName
- \l_tmpa_tl}
- \ifmarkdownLaTeXLoaded
- \@tempa
- \else
- \exp_args:No
- \AtEndOfPackage
- { \@tempa }
- \fi}
-\ExplSyntaxOff
\DeclareOption*{%
\expandafter\markdownSetup\expandafter{\CurrentOption}}%
\ProcessOptions\relax
\ExplSyntaxOn
-\keys_define:nn
- { markdown/latex-options }
- {
- renderers .code:n = {
- \keys_set:nn
- { markdown/latex-options/renderers }
- { #1 }
- },
- }
-\__markdown_with_various_cases:nn
- { rendererPrototypes }
- {
- \keys_define:nn
- { markdown/latex-options }
- {
- #1 .code:n = {
- \keys_set:nn
- { markdown/latex-options/renderer-prototypes }
- { ##1 }
- },
- }
- }
-\keys_define:nn
- { markdown/latex-options }
- {
- code .code:n = { #1 },
- }
-\__markdown_with_various_cases:nn
- { jekyllDataRenderers }
+\cs_gset:Nn
+ \__markdown_load_theme:nn
{
- \keys_define:nn
- { markdown/latex-options }
- {
- #1 .code:n = {
- \tl_set:Nn
- \l_tmpa_tl
- { ##1 }
- \tl_replace_all:NnV
- \l_tmpa_tl
- { / }
- \c_backslash_str
- \keys_set:nV
- { markdown/latex-options/jekyll-data-renderers }
- \l_tmpa_tl
- },
- }
- }
-\keys_define:nn
- { markdown/latex-options/jekyll-data-renderers }
- {
- unknown .code:n = {
- \tl_set_eq:NN
- \l_tmpa_tl
- \l_keys_key_str
- \tl_replace_all:NVn
- \l_tmpa_tl
- \c_backslash_str
- { / }
- \tl_put_right:Nn
- \l_tmpa_tl
- {
- .code:n = { #1 }
- }
- \keys_define:nV
- { markdown/jekyllData }
- \l_tmpa_tl
- }
- }
-\cs_generate_variant:Nn
- \keys_define:nn
- { nV }
-\ExplSyntaxOff
-\markdownIfOption{plain}{\iffalse}{\iftrue}
-\@ifclassloaded{beamer}{}{%
- \markdownIfOption{tightLists}{\RequirePackage{paralist}}{}%
- \markdownIfOption{fancyLists}{\RequirePackage{paralist}}{}%
-}
-\ExplSyntaxOn
-\@ifpackageloaded{paralist}{
- \tl_new:N
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- \tl_new:N
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label_number:nn
- {
- \str_case:nn
- { #1 }
- {
- { Decimal } { #2 }
- { LowerRoman } { \int_to_roman:n { #2 } }
- { UpperRoman } { \int_to_Roman:n { #2 } }
- { LowerAlpha } { \int_to_alph:n { #2 } }
- { UpperAlpha } { \int_to_alph:n { #2 } }
- }
- }
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label_delimiter:n
- {
- \str_case:nn
- { #1 }
- {
- { Default } { . }
- { OneParen } { ) }
- { Period } { . }
- }
- }
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label:nnn
- {
- \__markdown_latex_fancy_list_item_label_number:nn
- { #1 }
- { #3 }
- \__markdown_latex_fancy_list_item_label_delimiter:n
- { #2 }
- }
- \cs_new:Nn
- \__markdown_latex_paralist_style:nn
- {
- \str_case:nn
- { #1 }
- {
- { Decimal } { 1 }
- { LowerRoman } { i }
- { UpperRoman } { I }
- { LowerAlpha } { a }
- { UpperAlpha } { A }
- }
- \__markdown_latex_fancy_list_item_label_delimiter:n
- { #2 }
- }
- \markdownSetup{rendererPrototypes={
- ulBeginTight = {%
- \group_begin:
- \pltopsep=\topsep
- \plpartopsep=\partopsep
- \begin{compactitem}
- },
- ulEndTight = {
- \end{compactitem}
- \group_end:
- },
- fancyOlBegin = {
- \group_begin:
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- { #1 }
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- { #2 }
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{enumerate}[ }
- \tl_put_right:Nx
- \l_tmpa_tl
- { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
- \l_tmpa_tl
- { ] }
- \l_tmpa_tl
- },
- fancyOlEnd = {
- \end{enumerate}
- \group_end:
- },
- olBeginTight = {%
- \group_begin:
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- \begin{compactenum}
- },
- olEndTight = {
- \end{compactenum}
- \group_end:
- },
- fancyOlBeginTight = {
- \group_begin:
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- { #1 }
- \tl_set:Nn
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- { #2 }
- \tl_set:Nn
- \l_tmpa_tl
- {
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- \begin{compactenum}[
- }
- \tl_put_right:Nx
- \l_tmpa_tl
- { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
- \l_tmpa_tl
- { ] }
- \l_tmpa_tl
- },
- fancyOlEndTight = {
- \end{compactenum}
- \group_end:
- },
- fancyOlItemWithNumber = {
- \item
- [
- \__markdown_latex_fancy_list_item_label:VVn
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- { #1 }
- ]
- },
- dlBeginTight = {
- \group_begin:
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- \begin{compactdesc}
- },
- dlEndTight = {
- \end{compactdesc}
- \group_end:
- }}}
- \cs_generate_variant:Nn
- \__markdown_latex_fancy_list_item_label:nnn
- { VVn }
-}{
- \markdownSetup{rendererPrototypes={
- ulBeginTight = {\markdownRendererUlBegin},
- ulEndTight = {\markdownRendererUlEnd},
- fancyOlBegin = {\markdownRendererOlBegin},
- fancyOlEnd = {\markdownRendererOlEnd},
- olBeginTight = {\markdownRendererOlBegin},
- olEndTight = {\markdownRendererOlEnd},
- fancyOlBeginTight = {\markdownRendererOlBegin},
- fancyOlEndTight = {\markdownRendererOlEnd},
- dlBeginTight = {\markdownRendererDlBegin},
- dlEndTight = {\markdownRendererDlEnd}}}
-}
-\ExplSyntaxOff
-\RequirePackage{amsmath}
-\@ifpackageloaded{unicode-math}{
- \markdownSetup{rendererPrototypes={
- untickedBox = {$\mdlgwhtsquare$},
- }}
-}{
- \RequirePackage{amssymb}
- \markdownSetup{rendererPrototypes={
- untickedBox = {$\square$},
- }}
-}
-\RequirePackage{csvsimple}
-\RequirePackage{fancyvrb}
-\RequirePackage{graphicx}
-\markdownSetup{rendererPrototypes={
- hardLineBreak = {\\},
- leftBrace = {\textbraceleft},
- rightBrace = {\textbraceright},
- dollarSign = {\textdollar},
- underscore = {\textunderscore},
- circumflex = {\textasciicircum},
- backslash = {\textbackslash},
- tilde = {\textasciitilde},
- pipe = {\textbar},
- codeSpan = {%
- \ifmmode
- \text{#1}%
- \else
- \texttt{#1}%
- \fi
- }}}
-\ExplSyntaxOn
-\markdownSetup{
- rendererPrototypes = {
- contentBlock = {
- \str_case:nnF
- { #1 }
- {
- { csv }
- {
- \begin{table}
- \begin{center}
- \csvautotabular{#3}
- \end{center}
- \tl_if_empty:nF
- { #4 }
- { \caption{#4} }
- \end{table}
- }
- { tex } { \markdownEscape{#3} }
- }
- { \markdownInput{#3} }
- },
- },
-}
-\ExplSyntaxOff
-\markdownSetup{rendererPrototypes={
- image = {%
- \begin{figure}%
- \begin{center}%
- \includegraphics{#3}%
- \end{center}%
- \ifx\empty#4\empty\else
- \caption{#4}%
- \fi
- \end{figure}},
- ulBegin = {\begin{itemize}},
- ulEnd = {\end{itemize}},
- olBegin = {\begin{enumerate}},
- olItem = {\item{}},
- olItemWithNumber = {\item[#1.]},
- olEnd = {\end{enumerate}},
- dlBegin = {\begin{description}},
- dlItem = {\item[#1]},
- dlEnd = {\end{description}},
- emphasis = {\emph{#1}},
- tickedBox = {$\boxtimes$},
- halfTickedBox = {$\boxdot$},
- headerAttributeContextBegin = {%
- \markdownSetup{
- rendererPrototypes = {
- attributeIdentifier = {%
- \begingroup
- \def\next####1{%
- \def####1########1{%
- \endgroup
- ####1{########1}%
- \label{##1}%
- }%
- }%
- \next\markdownRendererHeadingOne
- \next\markdownRendererHeadingTwo
- \next\markdownRendererHeadingThree
- \next\markdownRendererHeadingFour
- \next\markdownRendererHeadingFive
- \next\markdownRendererHeadingSix
- },
- },
- }%
- },
- headerAttributeContextEnd = {},
- superscript = {\textsuperscript{#1}},
- subscript = {\textsubscript{#1}},
- displayMath = {\begin{displaymath}#1\end{displaymath}},
- inlineMath = {\begin{math}#1\end{math}},
- blockQuoteBegin = {\begin{quotation}},
- blockQuoteEnd = {\end{quotation}},
- inputVerbatim = {\VerbatimInput{#1}},
- thematicBreak = {\noindent\rule[0.5ex]{\linewidth}{1pt}},
- note = {\footnote{#1}}}}
-\RequirePackage{ltxcmds}
-\ExplSyntaxOn
-\cs_gset:Npn
- \markdownRendererInputFencedCodePrototype#1#2
- {
- \tl_if_empty:nTF
- { #2 }
- { \markdownRendererInputVerbatim{#1} }
- {
- \regex_extract_once:nnN
- { \w* }
- { #2 }
- \l_tmpa_seq
- \seq_pop_left:NN
- \l_tmpa_seq
- \l_tmpa_tl
- \ltx@ifpackageloaded
- { minted }
+ \ifmarkdownLaTeXLoaded
+ \ifx\@onlypreamble\@notprerr
+ \file_if_exist:nTF
+ { markdown theme #2.sty }
{
- \catcode`\#=6\relax
- \exp_args:NV
- \inputminted
- \l_tmpa_tl
+ \msg_error:nnn
+ { markdown }
+ { latex-theme-after-preamble }
{ #1 }
- \catcode`\#=12\relax
}
{
- \ltx@ifpackageloaded
- { listings }
- { \lstinputlisting[language=\l_tmpa_tl]{#1} }
- { \markdownRendererInputFencedCode{#1}{} }
+ \__markdown_plain_tex_load_theme:nn
+ { #1 }
+ { #2 }
}
- }
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\def\markdownLATEXStrongEmphasis#1{%
- \str_if_in:NnTF
- \f@series
- { b }
- { \textnormal{#1} }
- { \textbf{#1} }
-}
-\ExplSyntaxOff
-\markdownSetup{rendererPrototypes={strongEmphasis={%
- \protect\markdownLATEXStrongEmphasis{#1}}}}
-\@ifundefined{chapter}{%
- \markdownSetup{rendererPrototypes = {
- headingOne = {\section{#1}},
- headingTwo = {\subsection{#1}},
- headingThree = {\subsubsection{#1}},
- headingFour = {\paragraph{#1}\leavevmode},
- headingFive = {\subparagraph{#1}\leavevmode}}}
-}{%
- \markdownSetup{rendererPrototypes = {
- headingOne = {\chapter{#1}},
- headingTwo = {\section{#1}},
- headingThree = {\subsection{#1}},
- headingFour = {\subsubsection{#1}},
- headingFive = {\paragraph{#1}\leavevmode},
- headingSix = {\subparagraph{#1}\leavevmode}}}
-}%
-\markdownSetup{
- rendererPrototypes = {
- ulItem = {%
- \futurelet\markdownLaTeXCheckbox\markdownLaTeXUlItem
- },
- },
-}
-\def\markdownLaTeXUlItem{%
- \ifx\markdownLaTeXCheckbox\markdownRendererTickedBox
- \item[\markdownLaTeXCheckbox]%
- \expandafter\@gobble
- \else
- \ifx\markdownLaTeXCheckbox\markdownRendererHalfTickedBox
- \item[\markdownLaTeXCheckbox]%
- \expandafter\expandafter\expandafter\@gobble
- \else
- \ifx\markdownLaTeXCheckbox\markdownRendererUntickedBox
- \item[\markdownLaTeXCheckbox]%
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\@gobble
\else
- \item{}%
- \fi
- \fi
- \fi
-}
-\@ifundefined{HCode}{}{
- \markdownSetup{
- rendererPrototypes = {
- inlineHtmlTag = {%
- \ifvmode
- \IgnorePar
- \EndP
- \fi
- \HCode{#1}%
- },
- inputBlockHtmlElement = {%
- \ifvmode
- \IgnorePar
- \fi
- \EndP
- \special{t4ht*<#1}%
- \par
- \ShowPar
- },
- },
- }
-}
-\newcount\markdownLaTeXCitationsCounter
-
-\RequirePackage{gobble}
-\def\markdownLaTeXBasicCitations#1#2#3#4#5#6{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifx\relax#4\relax
- \ifx\relax#5\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \cite{#1#2#6}% Without prenotes and postnotes, just accumulate cites
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \@gobblethree
- \fi
- \else% Before a postnote (#5), dump the accumulator
- \ifx\relax#1\relax\else
- \cite{#1}%
- \fi
- \cite[#5]{#6}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXBasicCitations
- \fi
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \@gobblethree
- \fi
- \else% Before a prenote (#4), dump the accumulator
- \ifx\relax#1\relax\else
- \cite{#1}%
- \fi
- \ifnum\markdownLaTeXCitationsCounter>1\relax
- \space % Insert a space before the prenote in later citations
- \fi
- #4~\expandafter\cite\ifx\relax#5\relax{#6}\else[#5]{#6}\fi
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXBasicCitations
- \fi
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter
- \@gobblethree
- \fi\markdownLaTeXBasicCitations{#1#2#6},}
-\let\markdownLaTeXBasicTextCitations\markdownLaTeXBasicCitations
-
-\def\markdownLaTeXNatbibCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifx\relax#3\relax
- \ifx\relax#4\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \citep{#1,#5}% Without prenotes and postnotes, just accumulate cites
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% Before a postnote (#4), dump the accumulator
- \ifx\relax#1\relax\else
- \citep{#1}%
- \fi
- \citep[][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXNatbibCitations
- \fi
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% Before a prenote (#3), dump the accumulator
- \ifx\relax#1\relax\relax\else
- \citep{#1}%
- \fi
- \citep[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \else
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXNatbibCitations
- \fi
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter
- \@gobbletwo
- \fi\markdownLaTeXNatbibCitations{#1,#5}}
-\def\markdownLaTeXNatbibTextCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifx\relax#3\relax
- \ifx\relax#4\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \citet{#1,#5}% Without prenotes and postnotes, just accumulate cites
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% After a prenote or a postnote, dump the accumulator
- \ifx\relax#1\relax\else
- \citet{#1}%
- \fi
- , \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
- ,
- \else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
- ,
- \fi
+ \file_if_exist:nTF
+ { markdown theme #2.sty }
+ {
+ \msg_info:nnn
+ { markdown }
+ { loading-latex-theme }
+ { #1 }
+ \RequirePackage
+ { markdown theme #2 }
+ }
+ {
+ \__markdown_plain_tex_load_theme:nn
+ { #1 }
+ { #2 }
+ }
\fi
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter
- \markdownLaTeXNatbibTextCitations
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter
- \@gobbletwo
- \fi
- \else% After a prenote or a postnote, dump the accumulator
- \ifx\relax#1\relax\relax\else
- \citet{#1}%
- \fi
- , \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
- ,
\else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
- ,
- \fi
- \fi
- \expandafter\expandafter\expandafter
- \markdownLaTeXNatbibTextCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter
- \@gobbletwo
- \fi\markdownLaTeXNatbibTextCitations{#1,#5}}
-
-\def\markdownLaTeXBibLaTeXCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \autocites#1[#3][#4]{#5}%
- \expandafter\@gobbletwo
- \fi\markdownLaTeXBibLaTeXCitations{#1[#3][#4]{#5}}}
-\def\markdownLaTeXBibLaTeXTextCitations#1#2#3#4#5{%
- \advance\markdownLaTeXCitationsCounter by 1\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \textcites#1[#3][#4]{#5}%
- \expandafter\@gobbletwo
- \fi\markdownLaTeXBibLaTeXTextCitations{#1[#3][#4]{#5}}}
-
-\markdownSetup{rendererPrototypes = {
- cite = {%
- \markdownLaTeXCitationsCounter=1%
- \def\markdownLaTeXCitationsTotal{#1}%
- \@ifundefined{autocites}{%
- \@ifundefined{citep}{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBasicCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXNatbibCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBibLaTeXCitations
- \expandafter{\expandafter}%
- }},
- textCite = {%
- \markdownLaTeXCitationsCounter=1%
- \def\markdownLaTeXCitationsTotal{#1}%
- \@ifundefined{autocites}{%
- \@ifundefined{citep}{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBasicTextCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXNatbibTextCitations
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter}%
- }%
- }{%
- \expandafter\expandafter\expandafter
- \markdownLaTeXBibLaTeXTextCitations
- \expandafter{\expandafter}%
- }}}}
-\RequirePackage{url}
-\RequirePackage{expl3}
-\ExplSyntaxOn
-\def\markdownRendererLinkPrototype#1#2#3#4{
- \tl_set:Nn \l_tmpa_tl { #1 }
- \tl_set:Nn \l_tmpb_tl { #2 }
- \bool_set:Nn
- \l_tmpa_bool
- {
- \tl_if_eq_p:NN
- \l_tmpa_tl
- \l_tmpb_tl
- }
- \tl_set:Nn \l_tmpa_tl { #4 }
- \bool_set:Nn
- \l_tmpb_bool
- {
- \tl_if_empty_p:N
- \l_tmpa_tl
- }
- \bool_if:nTF
- {
- \l_tmpa_bool && \l_tmpb_bool
- }
- {
- \markdownLaTeXRendererAutolink { #2 } { #3 }
- }{
- \markdownLaTeXRendererDirectOrIndirectLink { #1 } { #2 } { #3 } { #4 }
- }
-}
-\def\markdownLaTeXRendererAutolink#1#2{%
- \tl_set:Nn
- \l_tmpa_tl
- { #2 }
- \tl_trim_spaces:N
- \l_tmpa_tl
- \tl_set:Nx
- \l_tmpb_tl
- {
- \tl_range:Nnn
- \l_tmpa_tl
- { 1 }
- { 1 }
- }
- \str_if_eq:NNTF
- \l_tmpb_tl
- \c_hash_str
- {
- \tl_set:Nx
- \l_tmpb_tl
+ \msg_info:nnn
+ { markdown }
+ { theme-loading-postponed }
+ { #1 }
+ \AtEndOfPackage
{
- \tl_range:Nnn
- \l_tmpa_tl
- { 2 }
- { -1 }
+ \__markdown_load_theme:nn
+ { #1 }
+ { #2 }
}
- \exp_args:NV
- \ref
- \l_tmpb_tl
- }{
- \url { #2 }
- }
-}
-\ExplSyntaxOff
-\def\markdownLaTeXRendererDirectOrIndirectLink#1#2#3#4{%
- #1\footnote{\ifx\empty#4\empty\else#4: \fi\url{#3}}}
-\newcount\markdownLaTeXRowCounter
-\newcount\markdownLaTeXRowTotal
-\newcount\markdownLaTeXColumnCounter
-\newcount\markdownLaTeXColumnTotal
-\newtoks\markdownLaTeXTable
-\newtoks\markdownLaTeXTableAlignment
-\newtoks\markdownLaTeXTableEnd
-\AtBeginDocument{%
- \@ifpackageloaded{booktabs}{%
- \def\markdownLaTeXTopRule{\toprule}%
- \def\markdownLaTeXMidRule{\midrule}%
- \def\markdownLaTeXBottomRule{\bottomrule}%
- }{%
- \def\markdownLaTeXTopRule{\hline}%
- \def\markdownLaTeXMidRule{\hline}%
- \def\markdownLaTeXBottomRule{\hline}%
- }%
-}
-\markdownSetup{rendererPrototypes={
- table = {%
- \markdownLaTeXTable={}%
- \markdownLaTeXTableAlignment={}%
- \markdownLaTeXTableEnd={%
- \markdownLaTeXBottomRule
- \end{tabular}}%
- \ifx\empty#1\empty\else
- \addto@hook\markdownLaTeXTable{%
- \begin{table}
- \centering}%
- \addto@hook\markdownLaTeXTableEnd{%
- \caption{#1}
- \end{table}}%
\fi
- \addto@hook\markdownLaTeXTable{\begin{tabular}}%
- \markdownLaTeXRowCounter=0%
- \markdownLaTeXRowTotal=#2%
- \markdownLaTeXColumnTotal=#3%
- \markdownLaTeXRenderTableRow
- }
-}}
-\def\markdownLaTeXRenderTableRow#1{%
- \markdownLaTeXColumnCounter=0%
- \ifnum\markdownLaTeXRowCounter=0\relax
- \markdownLaTeXReadAlignments#1%
- \markdownLaTeXTable=\expandafter\expandafter\expandafter{%
- \expandafter\the\expandafter\markdownLaTeXTable\expandafter{%
- \the\markdownLaTeXTableAlignment}}%
- \addto@hook\markdownLaTeXTable{\markdownLaTeXTopRule}%
- \else
- \markdownLaTeXRenderTableCell#1%
- \fi
- \ifnum\markdownLaTeXRowCounter=1\relax
- \addto@hook\markdownLaTeXTable\markdownLaTeXMidRule
- \fi
- \advance\markdownLaTeXRowCounter by 1\relax
- \ifnum\markdownLaTeXRowCounter>\markdownLaTeXRowTotal\relax
- \the\markdownLaTeXTable
- \the\markdownLaTeXTableEnd
- \expandafter\@gobble
- \fi\markdownLaTeXRenderTableRow}
-\def\markdownLaTeXReadAlignments#1{%
- \advance\markdownLaTeXColumnCounter by 1\relax
- \if#1d%
- \addto@hook\markdownLaTeXTableAlignment{l}%
- \else
- \addto@hook\markdownLaTeXTableAlignment{#1}%
- \fi
- \ifnum\markdownLaTeXColumnCounter<\markdownLaTeXColumnTotal\relax\else
- \expandafter\@gobble
- \fi\markdownLaTeXReadAlignments}
-\def\markdownLaTeXRenderTableCell#1{%
- \advance\markdownLaTeXColumnCounter by 1\relax
- \ifnum\markdownLaTeXColumnCounter<\markdownLaTeXColumnTotal\relax
- \addto@hook\markdownLaTeXTable{#1&}%
- \else
- \addto@hook\markdownLaTeXTable{#1\\}%
- \expandafter\@gobble
- \fi\markdownLaTeXRenderTableCell}
-
-\markdownIfOption{lineBlocks}{%
- \RequirePackage{verse}
- \markdownSetup{rendererPrototypes={
- lineBlockBegin = {%
- \begingroup
- \def\markdownRendererHardLineBreak{\\}%
- \begin{verse}%
- },
- lineBlockEnd = {%
- \end{verse}%
- \endgroup
- },
- }}
-}{}
-
-\ExplSyntaxOn
-\keys_define:nn
- { markdown/jekyllData }
- {
- author .code:n = { \author{#1} },
- date .code:n = { \date{#1} },
- title .code:n = { \title{#1} },
- }
-\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
-\markdownSetup{
- rendererPrototypes = {
- jekyllDataEnd = {
- \IfFormatAtLeastTF
- { 2020-10-01 }
- { \AddToHook{begindocument/end}{\maketitle} }
- {
- \ifx\@onlypreamble\@notprerr
- % We are in the document
- \maketitle
- \else
- % We are in the preamble
- \RequirePackage{etoolbox}
- \AfterEndPreamble{\maketitle}
- \fi
- }
- },
- },
-}
-\ExplSyntaxOff
-\markdownIfOption{strikeThrough}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
- },
- }
- }
-}{}
-\markdownIfOption{strikeThrough}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
- },
- }
- }
-}{}
-\ExplSyntaxOn
-\__markdown_if_option:nT
- { linkAttributes }
- {
- \RequirePackage{graphicx}
- \markdownSetup{
- rendererPrototypes = {
- imageAttributeContextBegin = {
- \group_begin:
- \markdownSetup{
- rendererPrototypes = {
- attributeKeyValue = {
- \setkeys
- { Gin }
- { { ##1 } = { ##2 } }
- },
- },
- }
- },
- imageAttributeContextEnd = {
- \group_end:
- },
- },
- }
- }
-\ExplSyntaxOff
-\ExplSyntaxOn
-\cs_gset:Npn
- \markdownRendererInputRawInlinePrototype#1#2
- {
- \str_case:nnF
- { #2 }
- {
- { latex }
- {
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
- { #1 }
- { tex }
- }
- }
- {
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
- { #1 }
- { #2 }
- }
}
-\cs_gset:Npn
- \markdownRendererInputRawBlockPrototype#1#2
+\msg_new:nnn
+ { markdown }
+ { theme-loading-postponed }
{
- \str_case:nnF
- { #2 }
- {
- { latex }
- {
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
- { #1 }
- { tex }
- }
- }
- {
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
- { #1 }
- { #2 }
- }
+ Postponing~loading~Markdown~theme~#1~until~
+ Markdown~package~has~finished~loading
}
+\msg_new:nnn
+ { markdown }
+ { loading-latex-theme }
+ { Loading~LaTeX~Markdown~theme~#1 }
+\cs_generate_variant:Nn
+ \msg_new:nnnn
+ { nnVV }
+\tl_set:Nn
+ \l_tmpa_tl
+ { Cannot~load~LaTeX~Markdown~theme~#1~after~ }
+\tl_put_right:NV
+ \l_tmpa_tl
+ \c_backslash_str
+\tl_put_right:Nn
+ \l_tmpa_tl
+ { begin{document} }
+\tl_set:Nn
+ \l_tmpb_tl
+ { Load~Markdown~theme~#1~before~ }
+\tl_put_right:NV
+ \l_tmpb_tl
+ \c_backslash_str
+\tl_put_right:Nn
+ \l_tmpb_tl
+ { begin{document} }
+\msg_new:nnVV
+ { markdown }
+ { latex-theme-after-preamble }
+ \l_tmpa_tl
+ \l_tmpb_tl
\ExplSyntaxOff
-\fi % Closes `\markdownIfOption{Plain}{\iffalse}{iftrue}`
\newcommand\markdownMakeOther{%
\count0=128\relax
\loop